Mercurial > hg > octave-nkf
annotate src/gl-render.cc @ 11385:71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
author | Konstantinos Poulios <logari81@googlemail.com> |
---|---|
date | Fri, 17 Dec 2010 21:23:52 +0100 |
parents | be710ed252ff |
children | 2be9e22796d2 |
rev | line source |
---|---|
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1 /* |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2 |
8920 | 3 Copyright (C) 2008, 2009 Michael Goffioul |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
4 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
5 This file is part of Octave. |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
6 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
10 option) any later version. |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
11 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
15 for more details. |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
16 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
20 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
21 */ |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
22 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
24 #include <config.h> |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
25 #endif |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
26 |
7954 | 27 #if defined (HAVE_OPENGL) |
28 | |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
29 #include <iostream> |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
30 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
31 #include <lo-mappers.h> |
8377
25bc2d31e1bf
improve OCTAVE_LOCAL_BUFFER
Jaroslav Hajek <highegg@gmail.com>
parents:
8263
diff
changeset
|
32 #include "oct-locbuf.h" |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
33 #include "gl-render.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
34 #include "txt-eng.h" |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
35 #include "txt-eng-ft.h" |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
36 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
37 #define LIGHT_MODE GL_FRONT_AND_BACK |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
38 |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
39 // Win32 API requires the CALLBACK attributes for |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
40 // GLU callback functions. Define it to empty on |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
41 // other platforms. |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
42 #ifndef CALLBACK |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
43 #define CALLBACK |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
44 #endif |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
45 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
46 enum { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
47 AXE_ANY_DIR = 0, |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
48 AXE_DEPTH_DIR = 1, |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
49 AXE_HORZ_DIR = 2, |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
50 AXE_VERT_DIR = 3 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
51 }; |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
52 |
7870 | 53 static octave_idx_type |
54 xmin (octave_idx_type x, octave_idx_type y) | |
55 { | |
56 return x < y ? x : y; | |
57 } | |
58 | |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
59 class |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
60 opengl_texture |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
61 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
62 protected: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
63 class texture_rep |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
64 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
65 public: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
66 texture_rep (void) : valid (false), count (1) { } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
67 |
9681 | 68 texture_rep (GLuint id_arg, int w_arg, int h_arg, int tw_arg, int th_arg) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
69 : id (id_arg), w (w_arg), h (h_arg), tw (tw_arg), th (th_arg), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
70 tx (double(w)/tw), ty (double(h)/th), valid (true), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
71 count (1) { } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
72 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
73 ~texture_rep (void) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
74 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
75 if (valid) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
76 glDeleteTextures (1, &id); |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
77 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
78 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
79 void bind (int mode) const |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
80 { if (valid) glBindTexture (mode, id); } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
81 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
82 void tex_coord (double q, double r) const |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
83 { if (valid) glTexCoord2d (q*tx, r*ty); } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
84 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
85 GLuint id; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
86 int w, h; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
87 int tw, th; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
88 double tx, ty; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
89 bool valid; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
90 int count; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
91 }; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
92 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
93 texture_rep *rep; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
94 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
95 private: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
96 opengl_texture (texture_rep *_rep) : rep (_rep) { } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
97 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
98 public: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
99 opengl_texture (void) : rep (new texture_rep ()) { } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
100 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
101 opengl_texture (const opengl_texture& tx) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
102 : rep (tx.rep) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
103 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
104 rep->count++; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
105 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
106 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
107 ~opengl_texture (void) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
108 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
109 if (--rep->count == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
110 delete rep; |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
111 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
112 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
113 opengl_texture& operator = (const opengl_texture& tx) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
114 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
115 if (--rep->count == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
116 delete rep; |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
117 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
118 rep = tx.rep; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
119 rep->count++; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
120 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
121 return *this; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
122 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
123 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
124 static opengl_texture create (const octave_value& data); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
125 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
126 void bind (int mode = GL_TEXTURE_2D) const |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
127 { rep->bind (mode); } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
128 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
129 void tex_coord (double q, double r) const |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
130 { rep->tex_coord (q, r); } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
131 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
132 bool is_valid (void) const |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
133 { return rep->valid; } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
134 }; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
135 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
136 static int |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
137 next_power_of_2 (int n) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
138 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
139 int m = 1; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
140 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
141 while (m < n && m < INT_MAX) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
142 m <<= 1; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
143 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
144 return m; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
145 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
146 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
147 opengl_texture |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
148 opengl_texture::create (const octave_value& data) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
149 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
150 opengl_texture retval; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
151 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
152 dim_vector dv (data.dims ()); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
153 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
154 // Expect RGB data |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
155 if (dv.length () == 3 && dv(2) == 3) |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
156 { |
9681 | 157 // FIXME -- dim_vectors hold octave_idx_type values. Should we |
158 // check for dimensions larger than intmax? | |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
159 int h = dv(0), w = dv(1), tw, th; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
160 GLuint id; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
161 bool ok = true; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
162 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
163 tw = next_power_of_2 (w); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
164 th = next_power_of_2 (w); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
165 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
166 glGenTextures (1, &id); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
167 glBindTexture (GL_TEXTURE_2D, id); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
168 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
169 if (data.is_double_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
170 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
171 const NDArray xdata = data.array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
172 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
173 OCTAVE_LOCAL_BUFFER (float, a, (3*tw*th)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
174 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
175 for (int i = 0; i < h; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
176 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
177 for (int j = 0, idx = i*tw*3; j < w; j++, idx += 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
178 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
179 a[idx] = xdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
180 a[idx+1] = xdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
181 a[idx+2] = xdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
182 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
183 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
184 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
185 glTexImage2D (GL_TEXTURE_2D, 0, 3, tw, th, 0, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
186 GL_RGB, GL_FLOAT, a); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
187 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
188 else if (data.is_uint8_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
189 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
190 const uint8NDArray xdata = data.uint8_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
191 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
192 OCTAVE_LOCAL_BUFFER (octave_uint8, a, (3*tw*th)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
193 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
194 for (int i = 0; i < h; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
195 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
196 for (int j = 0, idx = i*tw*3; j < w; j++, idx += 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
197 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
198 a[idx] = xdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
199 a[idx+1] = xdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
200 a[idx+2] = xdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
201 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
202 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
203 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
204 glTexImage2D (GL_TEXTURE_2D, 0, 3, tw, th, 0, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
205 GL_RGB, GL_UNSIGNED_BYTE, a); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
206 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
207 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
208 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
209 ok = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
210 warning ("opengl_texture::create: invalid texture data type (expected double or uint8)"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
211 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
212 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
213 if (ok) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
214 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
215 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
216 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
217 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
218 if (glGetError () != GL_NO_ERROR) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
219 warning ("opengl_texture::create: OpenGL error while generating texture data"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
220 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
221 retval = opengl_texture (new texture_rep (id, w, h, tw, th)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
222 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
223 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
224 else |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
225 warning ("opengl_texture::create: invalid texture data size"); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
226 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
227 return retval; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
228 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
229 |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
230 class |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
231 opengl_tesselator |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
232 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
233 public: |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
234 #if defined (HAVE_FRAMEWORK_OPENGL) && defined (HAVE_GLUTESSCALLBACK_THREEDOTS) |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
235 typedef GLvoid (CALLBACK *fcn) (...); |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
236 #else |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
237 typedef void (CALLBACK *fcn) (void); |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
238 #endif |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
239 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
240 public: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
241 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
242 opengl_tesselator (void) : glu_tess (0) { init (); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
243 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
244 virtual ~opengl_tesselator (void) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
245 { if (glu_tess) gluDeleteTess (glu_tess); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
246 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
247 void begin_polygon (bool filled = true) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
248 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
249 gluTessProperty (glu_tess, GLU_TESS_BOUNDARY_ONLY, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
250 (filled ? GL_FALSE : GL_TRUE)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
251 fill = filled; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
252 gluTessBeginPolygon (glu_tess, this); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
253 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
254 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
255 void end_polygon (void) const |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
256 { gluTessEndPolygon (glu_tess); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
257 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
258 void begin_contour (void) const |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
259 { gluTessBeginContour (glu_tess); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
260 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
261 void end_contour (void) const |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
262 { gluTessEndContour (glu_tess); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
263 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
264 void add_vertex (double *loc, void *data) const |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
265 { gluTessVertex (glu_tess, loc, data); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
266 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
267 protected: |
7870 | 268 virtual void begin (GLenum /*type*/) { } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
269 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
270 virtual void end (void) { } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
271 |
7870 | 272 virtual void vertex (void */*data*/) { } |
273 | |
274 virtual void combine (GLdouble /*c*/[3], void */*data*/[4], | |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
275 GLfloat /*w*/[4], void **/*out_data*/) { } |
7870 | 276 |
277 virtual void edge_flag (GLboolean /*flag*/) { } | |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
278 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
279 virtual void error (GLenum err) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
280 { ::error ("OpenGL tesselation error (%d)", err); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
281 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
282 virtual void init (void) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
283 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
284 glu_tess = gluNewTess (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
285 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
286 gluTessCallback (glu_tess, GLU_TESS_BEGIN_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
287 reinterpret_cast<fcn> (tess_begin)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
288 gluTessCallback (glu_tess, GLU_TESS_END_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
289 reinterpret_cast<fcn> (tess_end)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
290 gluTessCallback (glu_tess, GLU_TESS_VERTEX_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
291 reinterpret_cast<fcn> (tess_vertex)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
292 gluTessCallback (glu_tess, GLU_TESS_COMBINE_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
293 reinterpret_cast<fcn> (tess_combine)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
294 gluTessCallback (glu_tess, GLU_TESS_EDGE_FLAG_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
295 reinterpret_cast<fcn> (tess_edge_flag)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
296 gluTessCallback (glu_tess, GLU_TESS_ERROR_DATA, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
297 reinterpret_cast<fcn> (tess_error)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
298 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
299 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
300 bool is_filled (void) const { return fill; } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
301 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
302 private: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
303 static void CALLBACK tess_begin (GLenum type, void *t) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
304 { reinterpret_cast<opengl_tesselator *> (t)->begin (type); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
305 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
306 static void CALLBACK tess_end (void *t) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
307 { reinterpret_cast<opengl_tesselator *> (t)->end (); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
308 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
309 static void CALLBACK tess_vertex (void *v, void *t) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
310 { reinterpret_cast<opengl_tesselator *> (t)->vertex (v); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
311 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
312 static void CALLBACK tess_combine (GLdouble c[3], void *v[4], GLfloat w[4], |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
313 void **out, void *t) |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
314 { reinterpret_cast<opengl_tesselator *> (t)->combine (c, v, w, out); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
315 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
316 static void CALLBACK tess_edge_flag (GLboolean flag, void *t) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
317 { reinterpret_cast<opengl_tesselator *> (t)->edge_flag (flag); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
318 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
319 static void CALLBACK tess_error (GLenum err, void *t) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
320 { reinterpret_cast<opengl_tesselator *> (t)->error (err); } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
321 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
322 private: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
323 GLUtesselator *glu_tess; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
324 bool fill; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
325 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
326 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
327 class |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
328 vertex_data |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
329 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
330 public: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
331 class vertex_data_rep |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
332 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
333 public: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
334 Matrix coords; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
335 Matrix color; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
336 Matrix normal; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
337 double alpha; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
338 float ambient; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
339 float diffuse; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
340 float specular; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
341 float specular_exp; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
342 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
343 // reference counter |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
344 int count; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
345 |
7904
1fddd9b8e862
Fix nil_rep reference counting in gl-render.cc::vertex_data internal class
John W. Eaton <jwe@octave.org>
parents:
7874
diff
changeset
|
346 vertex_data_rep (void) : count (1) { } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
347 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
348 vertex_data_rep (const Matrix& c, const Matrix& col, const Matrix& n, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
349 double a, float as, float ds, float ss, float se) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
350 : coords (c), color (col), normal (n), alpha (a), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
351 ambient (as), diffuse (ds), specular (ss), specular_exp (se), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
352 count (1) { } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
353 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
354 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
355 private: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
356 vertex_data_rep *rep; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
357 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
358 vertex_data_rep *nil_rep (void) const |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
359 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
360 static vertex_data_rep *nr = new vertex_data_rep (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
361 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
362 return nr; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
363 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
364 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
365 public: |
7904
1fddd9b8e862
Fix nil_rep reference counting in gl-render.cc::vertex_data internal class
John W. Eaton <jwe@octave.org>
parents:
7874
diff
changeset
|
366 vertex_data (void) : rep (nil_rep ()) |
1fddd9b8e862
Fix nil_rep reference counting in gl-render.cc::vertex_data internal class
John W. Eaton <jwe@octave.org>
parents:
7874
diff
changeset
|
367 { rep->count++; } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
368 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
369 vertex_data (const vertex_data& v) : rep (v.rep) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
370 { rep->count++; } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
371 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
372 vertex_data (const Matrix& c, const Matrix& col, const Matrix& n, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
373 double a, float as, float ds, float ss, float se) |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
374 : rep (new vertex_data_rep (c, col, n, a, as, ds, ss, se)) |
7904
1fddd9b8e862
Fix nil_rep reference counting in gl-render.cc::vertex_data internal class
John W. Eaton <jwe@octave.org>
parents:
7874
diff
changeset
|
375 { } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
376 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
377 vertex_data (vertex_data_rep *new_rep) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
378 : rep (new_rep) { } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
379 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
380 ~vertex_data (void) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
381 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
382 if (--rep->count == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
383 delete rep; |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
384 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
385 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
386 vertex_data& operator = (const vertex_data& v) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
387 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
388 if (--rep->count == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
389 delete rep; |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
390 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
391 rep = v.rep; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
392 rep->count++; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
393 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
394 return *this; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
395 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
396 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
397 vertex_data_rep *get_rep (void) const { return rep; } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
398 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
399 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
400 class |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
401 opengl_renderer::patch_tesselator : public opengl_tesselator |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
402 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
403 public: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
404 patch_tesselator (opengl_renderer *r, int cmode, int lmode, int idx = 0) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
405 : opengl_tesselator (), renderer (r), |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
406 color_mode (cmode), light_mode (lmode), index (idx), |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
407 first (true) { } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
408 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
409 protected: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
410 void begin (GLenum type) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
411 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
412 //printf("patch_tesselator::begin (%d)\n", type); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
413 first = true; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
414 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
415 if (color_mode == 2 || light_mode == 2) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
416 glShadeModel (GL_SMOOTH); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
417 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
418 glShadeModel (GL_FLAT); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
419 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
420 if (is_filled ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
421 renderer->set_polygon_offset (true, 1+index); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
422 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
423 glBegin (type); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
424 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
425 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
426 void end (void) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
427 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
428 //printf("patch_tesselator::end\n"); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
429 glEnd (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
430 renderer->set_polygon_offset (false); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
431 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
432 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
433 void vertex (void *data) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
434 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
435 vertex_data::vertex_data_rep *v |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
436 = reinterpret_cast<vertex_data::vertex_data_rep *> (data); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
437 //printf("patch_tesselator::vertex (%g, %g, %g)\n", v->coords(0), v->coords(1), v->coords(2)); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
438 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
439 // FIXME: why did I need to keep the first vertex of the face |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
440 // in JHandles? I think it's related to the fact that the |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
441 // tessellation process might re-order the vertices, such that |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
442 // the first one you get here might not be the first one of the face; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
443 // but I can't figure out the actual reason. |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
444 if (color_mode > 0 && (first || color_mode == 2)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
445 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
446 Matrix col = v->color; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
447 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
448 if (col.numel () == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
449 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
450 glColor3dv (col.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
451 if (light_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
452 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
453 float buf[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
454 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
455 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
456 buf[k] = (v->ambient * col(k)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
457 glMaterialfv (LIGHT_MODE, GL_AMBIENT, buf); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
458 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
459 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
460 buf[k] = (v->diffuse * col(k)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
461 glMaterialfv (LIGHT_MODE, GL_AMBIENT, buf); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
462 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
463 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
464 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
465 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
466 if (light_mode > 0 && (first || light_mode == 2)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
467 glNormal3dv (v->normal.data ()); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
468 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
469 glVertex3dv (v->coords.data ()); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
470 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
471 first = false; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
472 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
473 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
474 void combine (GLdouble xyz[3], void *data[4], GLfloat w[4], |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
475 void **out_data) |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
476 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
477 //printf("patch_tesselator::combine\n"); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
478 |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
479 vertex_data::vertex_data_rep *v[4]; |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
480 int vmax = 4; |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
481 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
482 for (int i = 0; i < 4; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
483 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
484 v[i] = reinterpret_cast<vertex_data::vertex_data_rep *> (data[i]); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
485 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
486 if (vmax == 4 && ! v[i]) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
487 vmax = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
488 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
489 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
490 Matrix vv (1, 3, 0.0); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
491 Matrix cc; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
492 Matrix nn (1, 3, 0.0); |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
493 double aa = 0.0; |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
494 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
495 vv(0) = xyz[0]; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
496 vv(1) = xyz[1]; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
497 vv(2) = xyz[2]; |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
498 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
499 if (v[0]->color.numel ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
500 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
501 cc.resize (1, 3, 0.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
502 for (int ic = 0; ic < 3; ic++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
503 for (int iv = 0; iv < vmax; iv++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
504 cc(ic) += (w[iv] * v[iv]->color(ic)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
505 } |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
506 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
507 if (v[0]->normal.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
508 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
509 for (int in = 0; in < 3; in++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
510 for (int iv = 0; iv < vmax; iv++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
511 nn(in) += (w[iv] * v[iv]->normal(in)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
512 } |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
513 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
514 for (int iv = 0; iv < vmax; iv++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
515 aa += (w[iv] * v[iv]->alpha); |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
516 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
517 vertex_data new_v (vv, cc, nn, aa, v[0]->ambient, v[0]->diffuse, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
518 v[0]->specular, v[0]->specular_exp); |
7837
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
519 tmp_vdata.push_back (new_v); |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
520 |
57095ca98533
Make OpenGL tessellation combine callback robust against NULL vertex data.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7834
diff
changeset
|
521 *out_data = new_v.get_rep (); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
522 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
523 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
524 private: |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
525 opengl_renderer *renderer; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
526 int color_mode; // 0: uni, 1: flat, 2: interp |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
527 int light_mode; // 0: none, 1: flat, 2: gouraud |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
528 int index; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
529 bool first; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
530 std::list<vertex_data> tmp_vdata; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
531 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
532 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
533 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
534 opengl_renderer::draw (const graphics_object& go) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
535 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
536 if (! go.valid_object ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
537 return; |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
538 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
539 const base_properties& props = go.get_properties (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
540 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
541 if (go.isa ("figure")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
542 draw_figure (dynamic_cast<const figure::properties&> (props)); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
543 else if (go.isa ("axes")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
544 draw_axes (dynamic_cast<const axes::properties&> (props)); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
545 else if (go.isa ("line")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
546 draw_line (dynamic_cast<const line::properties&> (props)); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
547 else if (go.isa ("surface")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
548 draw_surface (dynamic_cast<const surface::properties&> (props)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
549 else if (go.isa ("patch")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
550 draw_patch (dynamic_cast<const patch::properties&> (props)); |
7866
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
551 else if (go.isa ("hggroup")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
552 draw_hggroup (dynamic_cast<const hggroup::properties&> (props)); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
553 else if (go.isa ("text")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
554 draw_text (dynamic_cast<const text::properties&> (props)); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
555 else if (go.isa ("image")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
556 draw_image (dynamic_cast<const image::properties&> (props)); |
11186
f72e17e70378
gl-render.cc: Do not give rendering error for uimenus.
Ben Abbott <bpabbott@mac.com>
parents:
11175
diff
changeset
|
557 else if (go.isa ("uimenu")) |
f72e17e70378
gl-render.cc: Do not give rendering error for uimenus.
Ben Abbott <bpabbott@mac.com>
parents:
11175
diff
changeset
|
558 ; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
559 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
560 warning ("opengl_renderer: cannot render object of type `%s'", |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
561 props.graphics_object_name ().c_str ()); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
562 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
563 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
564 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
565 opengl_renderer::draw_figure (const figure::properties& props) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
566 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
567 backend = props.get_backend (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
568 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
569 // Initialize OpenGL context |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
570 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
571 glEnable (GL_DEPTH_TEST); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
572 glDepthFunc (GL_LEQUAL); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
573 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
574 glAlphaFunc (GL_GREATER, 0.0f); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
575 glEnable (GL_NORMALIZE); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
576 |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
577 if (props.is___enhanced__ ()) |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
578 { |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
579 glEnable (GL_BLEND); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
580 glEnable (GL_LINE_SMOOTH); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
581 } |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
582 else |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
583 { |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
584 glDisable (GL_BLEND); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
585 glDisable (GL_LINE_SMOOTH); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
586 } |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
587 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
588 // Clear background |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
589 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
590 Matrix c = props.get_color_rgb (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
591 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
592 if (c.length() >= 3) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
593 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
594 glClearColor (c(0), c(1), c(2), 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
595 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
596 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
597 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
598 // Draw children |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
599 |
8263
22c078fd926b
make fltk backend figures work again
John W. Eaton <jwe@octave.org>
parents:
7954
diff
changeset
|
600 draw (props.get_all_children ()); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
601 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
602 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
603 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
604 opengl_renderer::draw_axes (const axes::properties& props) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
605 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
606 // setup OpenGL transformation |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
607 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
608 Matrix x_zlim = props.get_transform_zlim (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
609 Matrix x_mat1 = props.get_opengl_matrix_1 (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
610 Matrix x_mat2 = props.get_opengl_matrix_2 (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
611 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
612 xZ1 = x_zlim(0)-(x_zlim(1)-x_zlim(0))/2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
613 xZ2 = x_zlim(1)+(x_zlim(1)-x_zlim(0))/2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
614 |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
615 #if defined (HAVE_FRAMEWORK_OPENGL) |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
616 GLint vw[4]; |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
617 #else |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
618 int vw[4]; |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
619 #endif |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
620 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
621 glGetIntegerv (GL_VIEWPORT, vw); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
622 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
623 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
624 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
625 glScaled(1, 1, -1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
626 glMultMatrixd (x_mat1.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
627 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
628 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
629 glOrtho (0, vw[2], vw[3], 0, xZ1, xZ2); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
630 glMultMatrixd (x_mat2.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
631 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
632 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
633 glClear (GL_DEPTH_BUFFER_BIT); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
634 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
635 // store axes transformation data |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
636 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
637 xform = props.get_transform (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
638 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
639 // draw axes object |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
640 |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
641 GLboolean antialias; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
642 glGetBooleanv (GL_LINE_SMOOTH, &antialias); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
643 glDisable (GL_LINE_SMOOTH); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
644 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
645 Matrix xlim = xform.xscale (props.get_xlim ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
646 Matrix ylim = xform.yscale (props.get_ylim ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
647 Matrix zlim = xform.zscale (props.get_zlim ().matrix_value ()); |
7870 | 648 double x_min = xlim(0), x_max = xlim(1); |
649 double y_min = ylim(0), y_max = ylim(1); | |
650 double z_min = zlim(0), z_max = zlim(1); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
651 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
652 double xd = (props.xdir_is ("normal") ? 1 : -1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
653 double yd = (props.ydir_is ("normal") ? 1 : -1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
654 double zd = (props.zdir_is ("normal") ? 1 : -1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
655 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
656 ColumnVector p1, p2, xv (3), yv (3), zv (3); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
657 int xstate, ystate, zstate; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
658 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
659 xstate = ystate = zstate = AXE_ANY_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
660 |
7870 | 661 p1 = xform.transform (x_min, (y_min+y_max)/2, (z_min+z_max)/2, false); |
662 p2 = xform.transform (x_max, (y_min+y_max)/2, (z_min+z_max)/2, false); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
663 xv(0) = xround (p2(0)-p1(0)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
664 xv(1) = xround (p2(1)-p1(1)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
665 xv(2) = (p2(2)-p1(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
666 if (xv(0) == 0 && xv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
667 xstate = AXE_DEPTH_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
668 else if (xv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
669 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
670 if (xv(0) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
671 xstate = AXE_VERT_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
672 else if (xv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
673 xstate = AXE_HORZ_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
674 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
675 double xPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
676 if (xv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
677 if (xv(1) == 0) |
7870 | 678 xPlane = (xv(0) > 0 ? x_max : x_min); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
679 else |
7870 | 680 xPlane = (xv(1) < 0 ? x_max : x_min); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
681 else |
7870 | 682 xPlane = (xv(2) < 0 ? x_min : x_max); |
683 double xPlaneN = (xPlane == x_min ? x_max : x_min); | |
684 double fx = (x_max-x_min)/sqrt(xv(0)*xv(0)+xv(1)*xv(1)); | |
685 | |
686 p1 = xform.transform ((x_min+x_max)/2, y_min, (z_min+z_max)/2, false); | |
687 p2 = xform.transform ((x_min+x_max)/2, y_max, (z_min+z_max)/2, false); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
688 yv(0) = xround (p2(0)-p1(0)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
689 yv(1) = xround (p2(1)-p1(1)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
690 yv(2) = (p2(2)-p1(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
691 if (yv(0) == 0 && yv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
692 ystate = AXE_DEPTH_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
693 else if (yv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
694 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
695 if (yv(0) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
696 ystate = AXE_VERT_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
697 else if (yv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
698 ystate = AXE_HORZ_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
699 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
700 double yPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
701 if (yv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
702 if (yv(1) == 0) |
7870 | 703 yPlane = (yv(0) > 0 ? y_max : y_min); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
704 else |
7870 | 705 yPlane = (yv(1) < 0 ? y_max : y_min); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
706 else |
7870 | 707 yPlane = (yv(2) < 0 ? y_min : y_max); |
708 double yPlaneN = (yPlane == y_min ? y_max : y_min); | |
709 double fy = (y_max-y_min)/sqrt(yv(0)*yv(0)+yv(1)*yv(1)); | |
710 | |
711 p1 = xform.transform((x_min+x_max)/2, (y_min+y_max)/2, z_min, false); | |
712 p2 = xform.transform((x_min+x_max)/2, (y_min+y_max)/2, z_max, false); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
713 zv(0) = xround(p2(0)-p1(0)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
714 zv(1) = xround (p2(1)-p1(1)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
715 zv(2) = (p2(2)-p1(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
716 if (zv(0) == 0 && zv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
717 zstate = AXE_DEPTH_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
718 else if (zv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
719 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
720 if (zv(0) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
721 zstate = AXE_VERT_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
722 else if (zv(1) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
723 zstate = AXE_HORZ_DIR; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
724 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
725 double zPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
726 if (zv(2) == 0) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
727 if (zv(1) == 0) |
7870 | 728 zPlane = (zv(0) > 0 ? z_min : z_max); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
729 else |
7870 | 730 zPlane = (zv(1) < 0 ? z_min : z_max); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
731 else |
7870 | 732 zPlane = (zv(2) < 0 ? z_min : z_max); |
733 double zPlaneN = (zPlane == z_min ? z_max : z_min); | |
734 double fz = (z_max-z_min)/sqrt(zv(0)*zv(0)+zv(1)*zv(1)); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
735 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
736 bool mode2d = (((xstate > AXE_DEPTH_DIR ? 1 : 0) + |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
737 (ystate > AXE_DEPTH_DIR ? 1 : 0) + |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
738 (zstate > AXE_DEPTH_DIR ? 1 : 0)) == 2); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
739 if (props.tickdirmode_is ("auto")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
740 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
741 // FIXME: tickdir should be updated (code below comes |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
742 // from JHandles) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
743 //autoMode++; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
744 //TickDir.set(mode2d ? "in" : "out", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
745 //autoMode--; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
746 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
747 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
748 // FIXME: use ticklength property |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
749 double xticklen = 7, yticklen = 7, zticklen = 7; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
750 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
751 //double tickdir = (props.tickdir_is ("in") ? -1 : 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
752 double tickdir = (props.tickdirmode_is ("auto") ? |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
753 (mode2d ? -1 : 1) : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
754 (props.tickdir_is ("in") ? -1 : 1)); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
755 double xtickoffset = (mode2d && tickdir < 0 ? 0 : xticklen) + 5; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
756 double ytickoffset = (mode2d && tickdir < 0 ? 0 : yticklen) + 5; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
757 double ztickoffset = (mode2d && tickdir < 0 ? 0 : zticklen) + 5; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
758 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
759 bool xySym = (xd*yd*(xPlane-xPlaneN)*(yPlane-yPlaneN) > 0); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
760 bool x2Dtop = false; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
761 bool y2Dright = false; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
762 double zpTick = zPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
763 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
764 /* 2D mode */ |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
765 if (xstate == AXE_HORZ_DIR && ystate == AXE_VERT_DIR) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
766 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
767 if (props.xaxislocation_is ("top")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
768 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
769 double tmp = yPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
770 yPlane = yPlaneN; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
771 yPlaneN = tmp; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
772 x2Dtop = true; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
773 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
774 if (props.yaxislocation_is ("right")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
775 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
776 double tmp = xPlane; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
777 xPlane = xPlaneN; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
778 xPlaneN = tmp; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
779 y2Dright = true; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
780 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
781 if (props.layer_is ("top")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
782 zpTick = zPlaneN; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
783 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
784 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
785 Matrix axe_color = props.get_color_rgb (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
786 bool visible = props.is_visible (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
787 bool box = props.is_box (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
788 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
789 // Axes planes |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
790 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
791 if (axe_color.numel () > 0 && visible) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
792 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
793 set_color (axe_color); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
794 set_polygon_offset (true, 2.5); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
795 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
796 glBegin (GL_QUADS); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
797 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
798 // X plane |
7870 | 799 glVertex3d (xPlane, y_min, z_min); |
800 glVertex3d (xPlane, y_max, z_min); | |
801 glVertex3d (xPlane, y_max, z_max); | |
802 glVertex3d (xPlane, y_min, z_max); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
803 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
804 // Y plane |
7870 | 805 glVertex3d (x_min, yPlane, z_min); |
806 glVertex3d (x_max, yPlane, z_min); | |
807 glVertex3d (x_max, yPlane, z_max); | |
808 glVertex3d (x_min, yPlane, z_max); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
809 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
810 // Z plane |
7870 | 811 glVertex3d (x_min, y_min, zPlane); |
812 glVertex3d (x_max, y_min, zPlane); | |
813 glVertex3d (x_max, y_max, zPlane); | |
814 glVertex3d (x_min, y_max, zPlane); | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
815 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
816 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
817 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
818 set_polygon_offset (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
819 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
820 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
821 // Axes box |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
822 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
823 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
824 set_linewidth (props.get_linewidth ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
825 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
826 if (visible) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
827 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
828 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
829 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
830 // X box |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
831 set_color (props.get_xcolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
832 glVertex3d (xPlaneN, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
833 glVertex3d (xPlane, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
834 if (box) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
835 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
836 glVertex3d (xPlaneN, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
837 glVertex3d (xPlane, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
838 glVertex3d (xPlaneN, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
839 glVertex3d (xPlane, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
840 glVertex3d (xPlaneN, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
841 glVertex3d (xPlane, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
842 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
843 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
844 // Y box |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
845 set_color (props.get_ycolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
846 glVertex3d (xPlaneN, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
847 glVertex3d (xPlaneN, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
848 if (box) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
849 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
850 glVertex3d (xPlane, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
851 glVertex3d (xPlane, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
852 glVertex3d (xPlane, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
853 glVertex3d (xPlane, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
854 glVertex3d (xPlaneN, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
855 glVertex3d (xPlaneN, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
856 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
857 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
858 // Z box |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
859 set_color (props.get_zcolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
860 if (xySym) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
861 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
862 glVertex3d (xPlaneN, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
863 glVertex3d (xPlaneN, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
864 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
865 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
866 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
867 glVertex3d (xPlane, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
868 glVertex3d (xPlane, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
869 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
870 if (box) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
871 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
872 glVertex3d (xPlane, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
873 glVertex3d (xPlane, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
874 if (xySym) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
875 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
876 glVertex3d (xPlane, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
877 glVertex3d (xPlane, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
878 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
879 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
880 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
881 glVertex3d (xPlaneN, yPlane, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
882 glVertex3d (xPlaneN, yPlane, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
883 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
884 glVertex3d (xPlaneN, yPlaneN, zPlaneN); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
885 glVertex3d (xPlaneN, yPlaneN, zPlane); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
886 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
887 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
888 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
889 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
890 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
891 std::string gridstyle = props.get_gridlinestyle (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
892 std::string minorgridstyle = props.get_minorgridlinestyle (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
893 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
894 set_font (props); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
895 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
896 // X grid |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
897 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
898 if (visible && xstate != AXE_DEPTH_DIR) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
899 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
900 bool do_xgrid = (props.is_xgrid () && (gridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
901 bool do_xminorgrid = (props.is_xminorgrid () && (minorgridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
902 bool do_xminortick = props.is_xminortick (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
903 Matrix xticks = xform.xscale (props.get_xtick ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
904 // FIXME: use pre-computed minor ticks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
905 Matrix xmticks; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
906 string_vector xticklabels = props.get_xticklabel ().all_strings (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
907 int wmax = 0, hmax = 0; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
908 bool tick_along_z = xisinf (fy); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
909 Matrix tickpos (xticks.numel (), 3); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
910 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
911 set_color (props.get_xcolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
912 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
913 // grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
914 if (do_xgrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
915 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
916 set_linestyle (gridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
917 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
918 for (int i = 0; i < xticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
919 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
920 double xval = xticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
921 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
922 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
923 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
924 glVertex3d (xval, yPlaneN, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
925 glVertex3d (xval, yPlane, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
926 if (zstate != AXE_DEPTH_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
927 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
928 glVertex3d (xval, yPlane, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
929 glVertex3d (xval, yPlane, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
930 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
931 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
932 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
933 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
934 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
935 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
936 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
937 // tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
938 if (tick_along_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
939 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
940 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
941 for (int i = 0; i < xticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
942 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
943 double xval = xticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
944 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
945 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
946 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
947 glVertex3d (xval, yPlaneN, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
948 glVertex3d (xval, yPlaneN, zPlane+signum(zPlane-zPlaneN)*fz*xticklen*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
949 if (box && xstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
950 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
951 glVertex3d (xval, yPlaneN, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
952 glVertex3d (xval, yPlaneN, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
953 zPlaneN+signum(zPlaneN-zPlane)*fz*xticklen*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
954 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
955 tickpos(i,0) = xval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
956 tickpos(i,1) = yPlaneN; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
957 tickpos(i,2) = zPlane+signum(zPlane-zPlaneN)*fz*xtickoffset; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
958 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
959 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
960 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
961 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
962 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
963 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
964 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
965 for (int i = 0; i < xticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
966 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
967 double xval = xticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
968 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
969 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
970 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
971 glVertex3d (xval, yPlaneN, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
972 glVertex3d (xval, yPlaneN+signum(yPlaneN-yPlane)*fy*xticklen*tickdir, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
973 if (box && xstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
974 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
975 glVertex3d (xval, yPlane, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
976 glVertex3d (xval, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
977 yPlane+signum(yPlane-yPlaneN)*fy*xticklen*tickdir, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
978 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
979 tickpos(i,0) = xval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
980 tickpos(i,1) = yPlaneN+signum(yPlaneN-yPlane)*fy*xtickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
981 tickpos(i,2) = zPlane; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
982 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
983 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
984 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
985 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
986 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
987 // tick texts |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
988 if (xticklabels.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
989 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
990 int n = std::min (xticklabels.numel (), xticks.numel ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
991 int halign = (xstate == AXE_HORZ_DIR ? 1 : (xySym ? 0 : 2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
992 int valign = (xstate == AXE_VERT_DIR |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
993 ? 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
994 : (zd*zv(2) <= 0 && !x2Dtop ? 2 : 0)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
995 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
996 for (int i = 0; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
997 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
998 double xval = xticks(i); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
999 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1000 if (xlim(0) <= xval && xlim(1) >= xval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1001 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1002 // FIXME: as tick text is transparent, shouldn't be |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1003 // drawn after axes object, for correct rendering? |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1004 Matrix b = render_text (xticklabels(i), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1005 tickpos(i,0), tickpos(i,1), tickpos(i,2), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1006 halign, valign); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1007 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1008 wmax = std::max (wmax, static_cast<int> (b(2))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1009 hmax = std::max (hmax, static_cast<int> (b(3))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1010 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1011 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1012 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1013 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1014 // minor grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1015 if (do_xminorgrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1016 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1017 set_linestyle (minorgridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1018 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1019 for (int i = 0; i < xmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1020 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1021 double xval = xmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1022 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1023 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1024 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1025 glVertex3d (xval, yPlaneN, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1026 glVertex3d (xval, yPlane, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1027 if (zstate != AXE_DEPTH_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1028 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1029 glVertex3d (xval, yPlane, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1030 glVertex3d (xval, yPlane, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1031 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1032 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1033 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1034 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1035 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1036 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1037 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1038 // minor tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1039 if (do_xminortick) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1040 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1041 if (tick_along_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1042 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1043 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1044 for (int i = 0; i < xmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1045 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1046 double xval = xmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1047 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1048 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1049 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1050 glVertex3d (xval, yPlaneN, zPlane); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1051 glVertex3d (xval, yPlaneN, |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1052 zPlane+signum(zPlane-zPlaneN)*fz*xticklen/2*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1053 if (box && xstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1054 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1055 glVertex3d (xval, yPlaneN, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1056 glVertex3d (xval, yPlaneN, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1057 zPlaneN+signum(zPlaneN-zPlane)*fz*xticklen/2*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1058 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1059 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1060 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1061 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1062 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1063 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1064 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1065 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1066 for (int i = 0; i < xmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1067 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1068 double xval = xmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1069 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1070 if (xlim(0) <= xval && xlim(1) >= xval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1071 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1072 glVertex3d (xval, yPlaneN, zpTick); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1073 glVertex3d (xval, |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1074 yPlaneN+signum(yPlaneN-yPlane)*fy*xticklen/2*tickdir, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1075 if (box && xstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1076 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1077 glVertex3d (xval, yPlane, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1078 glVertex3d (xval, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1079 yPlane+signum(yPlane-yPlaneN)*fy*xticklen/2*tickdir, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1080 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1081 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1082 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1083 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1084 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1085 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1086 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1087 text::properties& xlabel_props = |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1088 reinterpret_cast<text::properties&> (gh_manager::get_object (props.get_xlabel ()).get_properties ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1089 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1090 xlabel_props.set_visible ("on"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1091 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1092 if (! xlabel_props.get_string ().empty ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1093 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1094 if (xlabel_props.horizontalalignmentmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1095 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1096 xlabel_props.set_horizontalalignment (xstate > AXE_DEPTH_DIR ? "center" : (xySym ? "left" : "right")); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1097 xlabel_props.set_horizontalalignmentmode("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1098 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1099 if (xlabel_props.verticalalignmentmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1100 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1101 xlabel_props.set_verticalalignment (xstate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1102 xlabel_props.set_verticalalignmentmode("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1103 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1104 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1105 if (xlabel_props.positionmode_is("auto") || xlabel_props.rotationmode_is("auto")) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1106 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1107 double angle = 0; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1108 ColumnVector p = graphics_xform::xform_vector ((x_min+x_max)/2, yPlaneN, zPlane); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1109 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1110 if (tick_along_z) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1111 p(2) += (signum(zPlane-zPlaneN)*fz*xtickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1112 else |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1113 p(1) += (signum(yPlaneN-yPlane)*fy*xtickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1114 p = xform.transform (p(0), p(1), p(2), false); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1115 switch (xstate) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1116 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1117 case AXE_ANY_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1118 p(0) += (xySym ? wmax : -wmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1119 p(1) += (zd*zv(2) <= 0 ? hmax : -hmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1120 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1121 case AXE_VERT_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1122 p(0) -= wmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1123 angle = 90; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1124 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1125 case AXE_HORZ_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1126 p(1) += hmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1127 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1128 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1129 if (xlabel_props.positionmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1130 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1131 p = xform.untransform (p(0), p(1), p(2), true); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1132 xlabel_props.set_position (p.extract_n (0, 3).transpose ()); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1133 xlabel_props.set_positionmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1134 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1135 if (xlabel_props.rotationmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1136 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1137 xlabel_props.set_rotation (angle); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1138 xlabel_props.set_rotationmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1139 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1140 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1141 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1142 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1143 else |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1144 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1145 gh_manager::get_object (props.get_xlabel ()).set ("visible", "off"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1146 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1147 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1148 // Y grid |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1149 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1150 if (ystate != AXE_DEPTH_DIR && visible) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1151 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1152 bool do_ygrid = (props.is_ygrid () && (gridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1153 bool do_yminorgrid = (props.is_yminorgrid () && (minorgridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1154 bool do_yminortick = props.is_yminortick (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1155 Matrix yticks = xform.yscale (props.get_ytick ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1156 // FIXME: use pre-computed minor ticks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1157 Matrix ymticks; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1158 string_vector yticklabels = props.get_yticklabel ().all_strings (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1159 int wmax = 0, hmax = 0; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1160 bool tick_along_z = xisinf (fx); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1161 Matrix tickpos (yticks.numel (), 3); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1162 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1163 set_color (props.get_ycolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1164 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1165 // grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1166 if (do_ygrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1167 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1168 set_linestyle (gridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1169 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1170 for (int i = 0; i < yticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1171 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1172 double yval = yticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1173 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1174 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1175 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1176 glVertex3d (xPlaneN, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1177 glVertex3d (xPlane, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1178 if (zstate != AXE_DEPTH_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1179 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1180 glVertex3d (xPlane, yval, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1181 glVertex3d (xPlane, yval, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1182 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1183 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1184 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1185 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1186 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1187 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1188 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1189 // tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1190 if (tick_along_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1191 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1192 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1193 for (int i = 0; i < yticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1194 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1195 double yval = yticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1196 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1197 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1198 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1199 glVertex3d (xPlaneN, yval, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1200 glVertex3d (xPlaneN, yval, zPlane+signum(zPlane-zPlaneN)*fz*yticklen*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1201 if (box && ystate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1202 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1203 glVertex3d (xPlaneN, yval, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1204 glVertex3d (xPlaneN, yval, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1205 zPlaneN+signum(zPlaneN-zPlane)*fz*yticklen*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1206 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1207 tickpos(i,0) = xPlaneN; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1208 tickpos(i,1) = yval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1209 tickpos(i,2) = zPlane+signum(zPlane-zPlaneN)*fz*ytickoffset; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1210 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1211 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1212 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1213 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1214 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1215 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1216 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1217 for (int i = 0; i < yticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1218 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1219 double yval = yticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1220 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1221 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1222 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1223 glVertex3d (xPlaneN, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1224 glVertex3d (xPlaneN+signum(xPlaneN-xPlane)*fx*yticklen*tickdir, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1225 if (box && ystate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1226 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1227 glVertex3d (xPlane, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1228 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*yticklen*tickdir, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1229 yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1230 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1231 tickpos(i,0) = xPlaneN+signum(xPlaneN-xPlane)*fx*ytickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1232 tickpos(i,1) = yval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1233 tickpos(i,2) = zPlane; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1234 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1235 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1236 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1237 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1238 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1239 // tick texts |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1240 if (yticklabels.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1241 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1242 int n = std::min (yticklabels.numel (), yticks.numel ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1243 int halign = (ystate == AXE_HORZ_DIR ? 1 : (!xySym || y2Dright ? 0 : 2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1244 int valign = (ystate == AXE_VERT_DIR ? 1 : (zd*zv(2) <= 0 ? 2 : 0)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1245 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1246 for (int i = 0; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1247 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1248 double yval = yticks(i); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1249 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1250 if (ylim(0) <= yval && ylim(1) >= yval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1251 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1252 // FIXME: as tick text is transparent, shouldn't be |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1253 // drawn after axes object, for correct rendering? |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1254 Matrix b = render_text (yticklabels(i), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1255 tickpos(i,0), tickpos(i,1), tickpos(i,2), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1256 halign, valign); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1257 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1258 wmax = std::max (wmax, static_cast<int> (b(2))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1259 hmax = std::max (hmax, static_cast<int> (b(3))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1260 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1261 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1262 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1263 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1264 // minor grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1265 if (do_yminorgrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1266 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1267 set_linestyle (minorgridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1268 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1269 for (int i = 0; i < ymticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1270 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1271 double yval = ymticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1272 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1273 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1274 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1275 glVertex3d (xPlaneN, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1276 glVertex3d (xPlane, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1277 if (zstate != AXE_DEPTH_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1278 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1279 glVertex3d (xPlane, yval, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1280 glVertex3d (xPlane, yval, zPlane); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1281 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1282 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1283 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1284 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1285 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1286 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1287 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1288 // minor tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1289 if (do_yminortick) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1290 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1291 if (tick_along_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1292 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1293 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1294 for (int i = 0; i < ymticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1295 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1296 double yval = ymticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1297 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1298 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1299 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1300 glVertex3d (xPlaneN, yval, zPlane); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1301 glVertex3d (xPlaneN, yval, |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1302 zPlane+signum(zPlane-zPlaneN)*fz*yticklen/2*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1303 if (box && ystate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1304 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1305 glVertex3d (xPlaneN, yval, zPlaneN); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1306 glVertex3d (xPlaneN, yval, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1307 zPlaneN+signum(zPlaneN-zPlane)*fz*yticklen/2*tickdir); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1308 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1309 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1310 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1311 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1312 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1313 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1314 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1315 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1316 for (int i = 0; i < ymticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1317 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1318 double yval = ymticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1319 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1320 if (ylim(0) <= yval && ylim(1) >= yval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1321 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1322 glVertex3d (xPlaneN, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1323 glVertex3d (xPlaneN+signum(xPlaneN-xPlane)*fx*yticklen/2*tickdir, |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1324 yval, zpTick); |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1325 if (box && ystate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1326 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1327 glVertex3d (xPlane, yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1328 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*yticklen/2*tickdir, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1329 yval, zpTick); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1330 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1331 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1332 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1333 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1334 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1335 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1336 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1337 text::properties& ylabel_props = |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1338 reinterpret_cast<text::properties&> (gh_manager::get_object (props.get_ylabel ()).get_properties ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1339 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1340 ylabel_props.set_visible ("on"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1341 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1342 if (! ylabel_props.get_string ().empty ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1343 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1344 if (ylabel_props.horizontalalignmentmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1345 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1346 ylabel_props.set_horizontalalignment (ystate > AXE_DEPTH_DIR ? "center" : (!xySym ? "left" : "right")); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1347 ylabel_props.set_horizontalalignmentmode("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1348 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1349 if (ylabel_props.verticalalignmentmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1350 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1351 ylabel_props.set_verticalalignment (ystate == AXE_VERT_DIR ? "bottom" : (zd*zv(2) <= 0 ? "top" : "bottom")); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1352 ylabel_props.set_verticalalignmentmode("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1353 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1354 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1355 if (ylabel_props.positionmode_is("auto") || ylabel_props.rotationmode_is("auto")) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1356 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1357 double angle = 0; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1358 ColumnVector p = graphics_xform::xform_vector (xPlaneN, (y_min+y_max)/2, zPlane); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1359 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1360 if (tick_along_z) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1361 p(2) += (signum(zPlane-zPlaneN)*fz*ytickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1362 else |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1363 p(0) += (signum(xPlaneN-xPlane)*fx*ytickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1364 p = xform.transform (p(0), p(1), p(2), false); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1365 switch (ystate) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1366 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1367 case AXE_ANY_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1368 p(0) += (!xySym ? wmax : -wmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1369 p(1) += (zd*zv(2) <= 0 ? hmax : -hmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1370 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1371 case AXE_VERT_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1372 p(0) -= wmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1373 angle = 90; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1374 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1375 case AXE_HORZ_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1376 p(1) += hmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1377 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1378 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1379 if (ylabel_props.positionmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1380 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1381 p = xform.untransform (p(0), p(1), p(2), true); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1382 ylabel_props.set_position (p.extract_n (0, 3).transpose ()); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1383 ylabel_props.set_positionmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1384 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1385 if (ylabel_props.rotationmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1386 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1387 ylabel_props.set_rotation (angle); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1388 ylabel_props.set_rotationmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1389 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1390 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1391 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1392 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1393 else |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1394 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1395 gh_manager::get_object (props.get_ylabel ()).set ("visible", "off"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1396 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1397 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1398 // Z Grid |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1399 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1400 if (zstate != AXE_DEPTH_DIR && visible) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1401 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1402 bool do_zgrid = (props.is_zgrid () && (gridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1403 bool do_zminorgrid = (props.is_zminorgrid () && (minorgridstyle != "none")); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1404 bool do_zminortick = props.is_zminortick (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1405 Matrix zticks = xform.zscale (props.get_ztick ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1406 // FIXME: use pre-computed minor ticks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1407 Matrix zmticks; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1408 string_vector zticklabels = props.get_zticklabel ().all_strings (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1409 int wmax = 0, hmax = 0; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1410 Matrix tickpos (zticks.numel (), 3); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1411 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1412 set_color (props.get_zcolor_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1413 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1414 // grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1415 if (do_zgrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1416 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1417 set_linestyle (gridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1418 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1419 for (int i = 0; i < zticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1420 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1421 double zval = zticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1422 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1423 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1424 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1425 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1426 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1427 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1428 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1429 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1430 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1431 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1432 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1433 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1434 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1435 // tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1436 if (xySym) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1437 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1438 if (xisinf (fy)) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1439 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1440 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1441 for (int i = 0; i < zticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1442 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1443 double zval = zticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1444 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1445 if (zlim(0) <= zval && zlim(1) >= zval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1446 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1447 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1448 glVertex3d (xPlaneN+signum(xPlaneN-xPlane)*fx*zticklen*tickdir, |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1449 yPlane, zval); |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1450 if (box && zstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1451 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1452 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1453 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*zticklen*tickdir, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1454 yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1455 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1456 tickpos(i,0) = xPlaneN+signum(xPlaneN-xPlane)*fx*ztickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1457 tickpos(i,1) = yPlane; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1458 tickpos(i,2) = zval; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1459 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1460 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1461 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1462 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1463 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1464 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1465 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1466 for (int i = 0; i < zticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1467 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1468 double zval = zticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1469 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1470 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1471 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1472 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1473 glVertex3d (xPlaneN, yPlane+signum(yPlane-yPlaneN)*fy*zticklen*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1474 tickpos(i,0) = xPlaneN; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1475 tickpos(i,1) = yPlane+signum(yPlane-yPlaneN)*fy*ztickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1476 tickpos(i,2) = zval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1477 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1478 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1479 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1480 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1481 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1482 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1483 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1484 if (xisinf (fx)) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1485 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1486 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1487 for (int i = 0; i < zticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1488 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1489 double zval = zticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1490 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1491 if (zlim(0) <= zval && zlim(1) >= zval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1492 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1493 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1494 glVertex3d (xPlane, yPlaneN+signum(yPlaneN-yPlane)*fy*zticklen*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1495 if (box && zstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1496 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1497 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1498 glVertex3d (xPlane, yPlane+signum(yPlane-yPlaneN)*fy*zticklen*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1499 } |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1500 tickpos(i,0) = xPlane; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1501 tickpos(i,1) = yPlaneN+signum(yPlaneN-yPlane)*fy*ztickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1502 tickpos(i,2) = zval; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1503 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1504 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1505 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1506 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1507 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1508 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1509 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1510 for (int i = 0; i < zticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1511 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1512 double zval = zticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1513 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1514 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1515 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1516 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1517 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*zticklen*tickdir, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1518 tickpos(i,0) = xPlane+signum(xPlane-xPlaneN)*fx*ztickoffset; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1519 tickpos(i,1) = yPlaneN; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1520 tickpos(i,2) = zval; |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1521 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1522 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1523 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1524 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1525 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1526 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1527 // FIXME: tick texts |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1528 if (zticklabels.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1529 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1530 int n = std::min (zticklabels.numel (), zticks.numel ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1531 int halign = 2; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1532 int valign = (zstate == AXE_VERT_DIR ? 1 : (zd*zv(2) < 0 ? 3 : 2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1533 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1534 for (int i = 0; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1535 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1536 double zval = zticks(i); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1537 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1538 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1539 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1540 // FIXME: as tick text is transparent, shouldn't be |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1541 // drawn after axes object, for correct rendering? |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1542 Matrix b = render_text (zticklabels(i), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1543 tickpos(i,0), tickpos(i,1), tickpos(i,2), |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1544 halign, valign); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1545 |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1546 wmax = std::max (wmax, static_cast<int> (b(2))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1547 hmax = std::max (hmax, static_cast<int> (b(3))); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1548 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1549 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1550 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1551 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1552 // minor grid lines |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1553 if (do_zminorgrid) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1554 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1555 set_linestyle (minorgridstyle, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1556 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1557 for (int i = 0; i < zmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1558 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1559 double zval = zmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1560 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1561 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1562 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1563 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1564 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1565 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1566 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1567 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1568 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1569 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1570 set_linestyle ("-", true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1571 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1572 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1573 // minor tick marks |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1574 if (do_zminortick) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1575 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1576 if (xySym) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1577 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1578 if (xisinf (fy)) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1579 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1580 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1581 for (int i = 0; i < zmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1582 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1583 double zval = zmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1584 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1585 if (zlim(0) <= zval && zlim(1) >= zval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1586 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1587 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1588 glVertex3d (xPlaneN+signum(xPlaneN-xPlane)*fx*zticklen/2*tickdir, |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1589 yPlane, zval); |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1590 if (box && zstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1591 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1592 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1593 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*zticklen/2*tickdir, |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1594 yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1595 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1596 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1597 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1598 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1599 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1600 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1601 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1602 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1603 for (int i = 0; i < zmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1604 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1605 double zval = zmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1606 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1607 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1608 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1609 glVertex3d (xPlaneN, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1610 glVertex3d (xPlaneN, yPlane+signum(yPlane-yPlaneN)*fy*zticklen/2*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1611 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1612 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1613 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1614 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1615 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1616 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1617 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1618 if (xisinf (fx)) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1619 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1620 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1621 for (int i = 0; i < zmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1622 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1623 double zval = zmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1624 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1625 if (zlim(0) <= zval && zlim(1) >= zval) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1626 { |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1627 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1628 glVertex3d (xPlane, yPlaneN+signum(yPlaneN-yPlane)*fy*zticklen/2*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1629 if (box && zstate != AXE_ANY_DIR) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1630 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1631 glVertex3d (xPlane, yPlane, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1632 glVertex3d (xPlane, yPlane+signum(yPlane-yPlaneN)*fy*zticklen/2*tickdir, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1633 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1634 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1635 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1636 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1637 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1638 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1639 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1640 glBegin (GL_LINES); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1641 for (int i = 0; i < zmticks.numel (); i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1642 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1643 double zval = zmticks(i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1644 |
11166
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1645 if (zlim(0) <= zval && zlim(1) >= zval) |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1646 { |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1647 glVertex3d (xPlane, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1648 glVertex3d (xPlane+signum(xPlane-xPlaneN)*fx*zticklen/2*tickdir, yPlaneN, zval); |
9cdf43d1fa16
gl-render.cc: Crop ticks, ticklabels, and gridlines for OpenGL backend.
Ben Abbott <bpabbott@mac.com>
parents:
11163
diff
changeset
|
1649 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1650 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1651 glEnd (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1652 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1653 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1654 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1655 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1656 text::properties& zlabel_props = |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1657 reinterpret_cast<text::properties&> (gh_manager::get_object (props.get_zlabel ()).get_properties ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1658 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1659 zlabel_props.set_visible ("on"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1660 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1661 if (! zlabel_props.get_string ().empty ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1662 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1663 bool camAuto = props.cameraupvectormode_is ("auto"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1664 |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1665 if (zlabel_props.horizontalalignmentmode_is("auto")) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1666 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1667 zlabel_props.set_horizontalalignment ((zstate > AXE_DEPTH_DIR || camAuto) ? "center" : "right"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1668 zlabel_props.set_horizontalalignmentmode("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1669 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1670 if (zlabel_props.verticalalignmentmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1671 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1672 zlabel_props.set_verticalalignment(zstate == AXE_VERT_DIR ? "bottom" : ((zd*zv(2) < 0 || camAuto) ? "bottom" : "top")); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1673 zlabel_props.set_verticalalignmentmode("auto"); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1674 } |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1675 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1676 if (zlabel_props.positionmode_is("auto") || zlabel_props.rotationmode_is("auto")) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1677 { |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1678 double angle = 0; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1679 ColumnVector p; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1680 |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1681 if (xySym) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1682 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1683 p = graphics_xform::xform_vector (xPlaneN, yPlane, (z_min+z_max)/2); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1684 if (xisinf (fy)) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1685 p(0) += (signum(xPlaneN-xPlane)*fx*ztickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1686 else |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1687 p(1) += (signum(yPlane-yPlaneN)*fy*ztickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1688 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1689 else |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1690 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1691 p = graphics_xform::xform_vector (xPlane, yPlaneN, (z_min+z_max)/2); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1692 if (xisinf (fx)) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1693 p(1) += (signum(yPlaneN-yPlane)*fy*ztickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1694 else |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1695 p(0) += (signum(xPlane-xPlaneN)*fx*ztickoffset); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1696 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1697 p = xform.transform (p(0), p(1), p(2), false); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1698 switch (zstate) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1699 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1700 case AXE_ANY_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1701 if (camAuto) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1702 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1703 p(0) -= wmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1704 angle = 90; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1705 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1706 /* FIXME: what's the correct offset? |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1707 p[0] += (!xySym ? wmax : -wmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1708 p[1] += (zd*zv[2] <= 0 ? hmax : -hmax); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1709 */ |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1710 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1711 case AXE_VERT_DIR: |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1712 p(0) -= wmax; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1713 angle = 90; |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1714 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1715 case AXE_HORZ_DIR: |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1716 p(1) += hmax; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1717 break; |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1718 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1719 if (zlabel_props.positionmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1720 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1721 p = xform.untransform (p(0), p(1), p(2), true); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1722 zlabel_props.set_position (p.extract_n (0, 3).transpose ()); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1723 zlabel_props.set_positionmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1724 } |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1725 if (zlabel_props.rotationmode_is("auto")) |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1726 { |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1727 zlabel_props.set_rotation (angle); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1728 zlabel_props.set_rotationmode ("auto"); |
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1729 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1730 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1731 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1732 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1733 else |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1734 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1735 gh_manager::get_object (props.get_zlabel ()).set ("visible", "off"); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1736 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1737 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1738 set_linestyle ("-"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1739 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1740 // Title |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1741 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1742 text::properties& title_props = |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1743 reinterpret_cast<text::properties&> (gh_manager::get_object (props.get_title ()).get_properties ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1744 |
11385
71e7467fbd34
Disable auto-positioning of manually positioned title and axes labels.
Konstantinos Poulios <logari81@googlemail.com>
parents:
11266
diff
changeset
|
1745 if (! title_props.get_string ().empty () && title_props.positionmode_is("auto")) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1746 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1747 Matrix bb = props.get_boundingbox (true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1748 ColumnVector p = xform.untransform (bb(0)+bb(2)/2, (bb(1)-10), |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1749 (x_zlim(0)+x_zlim(1))/2, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1750 title_props.set_position (p.extract_n(0, 3).transpose ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1751 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1752 |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7870
diff
changeset
|
1753 set_clipbox (x_min, x_max, y_min, y_max, z_min, z_max); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1754 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1755 // Children |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1756 |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
1757 if (antialias == GL_TRUE) |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
1758 glEnable (GL_LINE_SMOOTH); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
1759 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1760 Matrix children = props.get_all_children (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1761 std::list<graphics_object> obj_list; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1762 std::list<graphics_object>::iterator it; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1763 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1764 // 1st pass: draw light objects |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1765 |
11026
811d8f113423
reverse order in which child objects are processed in OpenGL renderer
John W. Eaton <jwe@octave.org>
parents:
10924
diff
changeset
|
1766 // Start with the last element of the array of child objects to |
811d8f113423
reverse order in which child objects are processed in OpenGL renderer
John W. Eaton <jwe@octave.org>
parents:
10924
diff
changeset
|
1767 // display them in the oder they were added to the array. |
811d8f113423
reverse order in which child objects are processed in OpenGL renderer
John W. Eaton <jwe@octave.org>
parents:
10924
diff
changeset
|
1768 |
811d8f113423
reverse order in which child objects are processed in OpenGL renderer
John W. Eaton <jwe@octave.org>
parents:
10924
diff
changeset
|
1769 for (octave_idx_type i = children.numel () - 1; i >= 0; i--) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1770 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1771 graphics_object go = gh_manager::get_object (children (i)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1772 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1773 if (go.get_properties ().is_visible ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1774 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1775 if (go.isa ("light")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1776 draw (go); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1777 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1778 obj_list.push_back (go); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1779 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1780 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1781 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1782 // 2nd pass: draw other objects (with units set to "data") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1783 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1784 it = obj_list.begin (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1785 while (it != obj_list.end ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1786 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1787 graphics_object go = (*it); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1788 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1789 // FIXME: check whether object has "units" property and it is set to "data" |
9616
2093499ec9f4
avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents:
9406
diff
changeset
|
1790 if (! go.isa ("text") || go.get ("units").string_value () == "data") |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1791 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1792 set_clipping (go.get_properties ().is_clipping ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1793 draw (go); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1794 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1795 it = obj_list.erase (it); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1796 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1797 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1798 it++; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1799 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1800 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1801 // 3rd pass: draw remaining objects |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1802 |
10402
9f2bf537a651
Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents:
10350
diff
changeset
|
1803 glDisable (GL_DEPTH_TEST); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1804 for (it = obj_list.begin (); it != obj_list.end (); it++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1805 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1806 graphics_object go = (*it); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1807 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1808 set_clipping (go.get_properties ().is_clipping ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1809 draw (go); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1810 } |
10402
9f2bf537a651
Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents:
10350
diff
changeset
|
1811 glEnable (GL_DEPTH_TEST); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1812 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1813 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1814 // FIXME: finalize rendering (transparency processing) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1815 // FIXME: draw zoom box, if needed |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1816 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1817 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1818 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1819 opengl_renderer::draw_line (const line::properties& props) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1820 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1821 Matrix x = xform.xscale (props.get_xdata ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1822 Matrix y = xform.yscale (props.get_ydata ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1823 Matrix z = xform.zscale (props.get_zdata ().matrix_value ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1824 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1825 bool has_z = (z.numel () > 0); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1826 int n = static_cast<int> (::xmin (::xmin (x.numel (), y.numel ()), (has_z ? z.numel () : INT_MAX))); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1827 octave_uint8 clip_mask = (props.is_clipping () ? 0x7F : 0x40), clip_ok (0x40); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1828 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1829 std::vector<octave_uint8> clip (n); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1830 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1831 if (has_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1832 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1833 clip[i] = (clip_code (x(i), y(i), z(i)) & clip_mask); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1834 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1835 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1836 double z_mid = (zmin+zmax)/2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1837 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1838 for (int i = 0; i < n; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1839 clip[i] = (clip_code (x(i), y(i), z_mid) & clip_mask); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1840 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1841 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1842 if (! props.linestyle_is ("none")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1843 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1844 set_color (props.get_color_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1845 set_linestyle (props.get_linestyle (), false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1846 set_linewidth (props.get_linewidth ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1847 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1848 if (has_z) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1849 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1850 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1851 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1852 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1853 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1854 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1855 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1856 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1857 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1858 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1859 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1860 glVertex3d (x(i-1), y(i-1), z(i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1861 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1862 glVertex3d (x(i), y(i), z(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1863 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1864 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1865 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1866 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1867 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1868 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1869 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1870 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1871 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1872 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1873 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1874 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1875 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1876 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1877 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1878 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1879 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1880 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1881 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1882 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1883 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1884 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1885 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1886 glVertex2d (x(i-1), y(i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1887 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1888 glVertex2d (x(i), y(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1889 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1890 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1891 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1892 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1893 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1894 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1895 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1896 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1897 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1898 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1899 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1900 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1901 set_linewidth (0.5); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1902 set_linestyle ("-"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1903 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1904 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1905 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1906 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1907 if (! props.marker_is ("none") && |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1908 ! (props.markeredgecolor_is ("none") |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1909 && props.markerfacecolor_is ("none"))) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1910 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1911 Matrix lc, fc; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1912 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1913 if (props.markeredgecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1914 lc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1915 else if (! props.markeredgecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1916 lc = props.get_markeredgecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1917 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1918 if (props.markerfacecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1919 fc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1920 else if (! props.markerfacecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1921 fc = props.get_markerfacecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1922 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1923 init_marker (props.get_marker (), props.get_markersize (), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1924 props.get_linewidth ()); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1925 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1926 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1927 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1928 if (clip[i] == clip_ok) |
11266
be710ed252ff
gl-render.cc (opengl_renderer::draw_line): layer markers in 2D plots
Daisuke TAKAGO <takago@neptune.kanazawa-it.ac.jp>
parents:
11209
diff
changeset
|
1929 draw_marker (x(i), y(i), |
be710ed252ff
gl-render.cc (opengl_renderer::draw_line): layer markers in 2D plots
Daisuke TAKAGO <takago@neptune.kanazawa-it.ac.jp>
parents:
11209
diff
changeset
|
1930 has_z ? z(i) : static_cast<double> (i) / n, |
be710ed252ff
gl-render.cc (opengl_renderer::draw_line): layer markers in 2D plots
Daisuke TAKAGO <takago@neptune.kanazawa-it.ac.jp>
parents:
11209
diff
changeset
|
1931 lc, fc); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1932 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1933 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1934 end_marker (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1935 } |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
1936 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1937 set_clipping (props.is_clipping ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1938 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1939 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1940 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1941 opengl_renderer::draw_surface (const surface::properties& props) |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1942 { |
9681 | 1943 const Matrix x = xform.xscale (props.get_xdata ().matrix_value ()); |
1944 const Matrix y = xform.yscale (props.get_ydata ().matrix_value ()); | |
1945 const Matrix z = xform.zscale (props.get_zdata ().matrix_value ()); | |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1946 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1947 int zr = z.rows (), zc = z.columns (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1948 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1949 NDArray c; |
9681 | 1950 const NDArray n = props.get_vertexnormals ().array_value (); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1951 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1952 // FIXME: handle transparency |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1953 Matrix a; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1954 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1955 if (props.facelighting_is ("phong") || props.edgelighting_is ("phong")) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1956 warning ("opengl_renderer::draw: phong light model not supported"); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1957 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1958 int fc_mode = (props.facecolor_is_rgb () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1959 (props.facecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1960 (props.facecolor_is ("interp") ? 2 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1961 (props.facecolor_is ("texturemap") ? 3 : -1)))); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1962 int fl_mode = (props.facelighting_is ("none") ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1963 (props.facelighting_is ("flat") ? 1 : 2)); |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1964 int fa_mode = (props.facealpha_is_double () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1965 (props.facealpha_is ("flat") ? 1 : 2)); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1966 int ec_mode = (props.edgecolor_is_rgb () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1967 (props.edgecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1968 (props.edgecolor_is ("interp") ? 2 : -1))); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1969 int el_mode = (props.edgelighting_is ("none") ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1970 (props.edgelighting_is ("flat") ? 1 : 2)); |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1971 int ea_mode = (props.edgealpha_is_double () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1972 (props.edgealpha_is ("flat") ? 1 : 2)); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1973 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1974 Matrix fcolor = (fc_mode == 3 ? Matrix (1, 3, 1.0) : props.get_facecolor_rgb ()); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1975 Matrix ecolor = props.get_edgecolor_rgb (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1976 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1977 float as = props.get_ambientstrength (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1978 float ds = props.get_diffusestrength (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1979 float ss = props.get_specularstrength (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1980 float se = props.get_specularexponent (); |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1981 float cb[4] = { 0.0, 0.0, 0.0, 1.0 }; |
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1982 double d = 1.0; |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1983 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1984 opengl_texture tex; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1985 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1986 int i1, i2, j1, j2; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1987 bool x_mat = (x.rows () == z.rows ()); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1988 bool y_mat = (y.columns () == z.columns ()); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1989 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1990 i1 = i2 = j1 = j2 = 0; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1991 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1992 boolMatrix clip (z.dims (), false); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1993 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1994 for (int i = 0; i < zr; i++) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1995 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1996 if (x_mat) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1997 i1 = i; |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1998 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1999 for (int j = 0; j < zc; j++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2000 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2001 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2002 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2003 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2004 clip(i,j) = is_nan_or_inf (x(i1,j), y(i,j1), z(i,j)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2005 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2006 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2007 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2008 if ((fc_mode > 0 && fc_mode < 3) || ec_mode > 0) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2009 c = props.get_color_data ().array_value (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2010 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2011 if (fa_mode > 0 || ea_mode > 0) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2012 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2013 // FIXME: implement alphadata conversion |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2014 //a = props.get_alpha_data (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2015 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2016 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2017 if (fl_mode > 0 || el_mode > 0) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2018 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2019 float buf[4] = { ss, ss, ss, 1 }; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2020 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2021 glMaterialfv (LIGHT_MODE, GL_SPECULAR, buf); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2022 glMaterialf (LIGHT_MODE, GL_SHININESS, se); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2023 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2024 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
2025 // FIXME: good candidate for caching, transfering pixel |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
2026 // data to OpenGL is time consuming. |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2027 if (fc_mode == 3) |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
2028 tex = opengl_texture::create (props.get_color_data ()); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2029 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2030 if (! props.facecolor_is ("none")) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2031 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2032 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2033 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2034 if (fc_mode == 0 || fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2035 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2036 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2037 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2038 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2039 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2040 cb[i] = as * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2041 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2042 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2043 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2044 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2045 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2046 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2047 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2048 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2049 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2050 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2051 glShadeModel ((fc_mode == 2 || fl_mode == 2) ? GL_SMOOTH : GL_FLAT); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2052 set_polygon_offset (true, 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2053 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2054 glEnable (GL_TEXTURE_2D); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2055 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2056 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2057 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2058 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2059 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2060 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2061 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2062 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2063 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2064 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2065 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2066 if (clip(j-1, i-1) || clip (j, i-1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2067 || clip (j-1, i) || clip (j, i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2068 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2069 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2070 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2071 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2072 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2073 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2074 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2075 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2076 glBegin (GL_QUADS); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2077 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2078 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2079 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2080 tex.tex_coord (double (i-1) / (zc-1), double (j-1) / (zr-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2081 else if (fc_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2082 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2083 // FIXME: is there a smarter way to do this? |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2084 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2085 cb[k] = c(j-1, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2086 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2087 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2088 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2089 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2090 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2091 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2092 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2093 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2094 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2095 cb[k] = ds * c(j-1, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2096 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2097 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2098 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2099 if (fl_mode > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2100 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2101 d = sqrt (n(j-1,i-1,0) * n(j-1,i-1,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2102 + n(j-1,i-1,1) * n(j-1,i-1,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2103 + n(j-1,i-1,2) * n(j-1,i-1,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2104 glNormal3d (n(j-1,i-1,0)/d, n(j-1,i-1,1)/d, n(j-1,i-1,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2105 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2106 glVertex3d (x(j1,i-1), y(j-1,i1), z(j-1,i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2107 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2108 // Vertex 2 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2109 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2110 tex.tex_coord (double (i) / (zc-1), double (j-1) / (zr-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2111 else if (fc_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2112 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2113 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2114 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2115 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2116 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2117 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2118 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2119 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2120 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2121 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2122 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2123 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2124 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2125 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2126 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2127 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2128 |
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2129 if (fl_mode == 2) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2130 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2131 d = sqrt (n(j-1,i,0) * n(j-1,i,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2132 + n(j-1,i,1) * n(j-1,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2133 + n(j-1,i,2) * n(j-1,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2134 glNormal3d (n(j-1,i,0)/d, n(j-1,i,1)/d, n(j-1,i,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2135 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2136 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2137 glVertex3d (x(j1,i), y(j-1,i2), z(j-1,i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2138 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2139 // Vertex 3 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2140 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2141 tex.tex_coord (double (i) / (zc-1), double (j) / (zr-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2142 else if (fc_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2143 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2144 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2145 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2146 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2147 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2148 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2149 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2150 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2151 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2152 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2153 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2154 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2155 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2156 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2157 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2158 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2159 if (fl_mode == 2) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2160 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2161 d = sqrt (n(j,i,0) * n(j,i,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2162 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2163 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2164 glNormal3d (n(j,i,0)/d, n(j,i,1)/d, n(j,i,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2165 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2166 glVertex3d (x(j2,i), y(j,i2), z(j,i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2167 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2168 // Vertex 4 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2169 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2170 tex.tex_coord (double (i-1) / (zc-1), double (j) / (zr-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2171 else if (fc_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2172 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2173 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2174 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2175 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2176 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2177 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2178 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2179 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2180 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2181 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2182 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2183 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2184 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2185 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2186 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2187 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2188 if (fl_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2189 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2190 d = sqrt (n(j,i-1,0) * n(j,i-1,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2191 + n(j,i-1,1) * n(j,i-1,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2192 + n(j,i-1,2) * n(j,i-1,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2193 glNormal3d (n(j,i-1,0)/d, n(j,i-1,1)/d, n(j,i-1,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2194 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2195 glVertex3d (x(j2,i-1), y(j,i1), z(j,i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2196 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2197 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2198 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2199 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2200 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2201 set_polygon_offset (false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2202 if (fc_mode == 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2203 glDisable (GL_TEXTURE_2D); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2204 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2205 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2206 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2207 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2208 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2209 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2210 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2211 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2212 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2213 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2214 if (! props.edgecolor_is ("none")) |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2215 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2216 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2217 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2218 if (ec_mode == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2219 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2220 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2221 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2222 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2223 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2224 cb[i] = as * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2225 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2226 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2227 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2228 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2229 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2230 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2231 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2232 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2233 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2234 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2235 glShadeModel ((ec_mode == 2 || el_mode == 2) ? GL_SMOOTH : GL_FLAT); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2236 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2237 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2238 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2239 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2240 // Mesh along Y-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2241 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2242 if (props.meshstyle_is ("both") || props.meshstyle_is ("column")) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2243 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2244 for (int i = 0; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2245 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2246 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2247 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2248 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2249 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2250 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2251 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2252 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2253 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2254 if (clip(j-1,i) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2255 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2256 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2257 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2258 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2259 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2260 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2261 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2262 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2263 glBegin (GL_LINES); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2264 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2265 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2266 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2267 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2268 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2269 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2270 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2271 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2272 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2273 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2274 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2275 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2276 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2277 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2278 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2279 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2280 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2281 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2282 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2283 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2284 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2285 d = sqrt (n(j-1,i,0) * n(j-1,i,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2286 + n(j-1,i,1) * n(j-1,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2287 + n(j-1,i,2) * n(j-1,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2288 glNormal3d (n(j-1,i,0)/d, n(j-1,i,1)/d, n(j-1,i,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2289 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2290 glVertex3d (x(j1,i), y(j-1,i2), z(j-1,i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2291 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2292 // Vertex 2 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2293 if (ec_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2294 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2295 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2296 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2297 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2298 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2299 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2300 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2301 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2302 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2303 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2304 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2305 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2306 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2307 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2308 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2309 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2310 if (el_mode == 2) |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2311 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2312 d = sqrt (n(j,i,0) * n(j,i,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2313 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2314 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2315 glNormal3d (n(j,i,0)/d, n(j,i,1)/d, n(j,i,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2316 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2317 glVertex3d (x(j2,i), y(j,i2), z(j,i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2318 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2319 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2320 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2321 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2322 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2323 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2324 // Mesh along X-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2325 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2326 if (props.meshstyle_is ("both") || props.meshstyle_is ("row")) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2327 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2328 for (int j = 0; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2329 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2330 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2331 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2332 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2333 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2334 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2335 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2336 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2337 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2338 if (clip(j,i-1) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2339 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2340 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2341 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2342 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2343 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2344 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2345 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2346 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2347 glBegin (GL_LINES); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2348 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2349 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2350 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2351 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2352 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2353 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2354 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2355 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2356 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2357 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2358 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2359 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2360 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2361 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2362 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2363 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2364 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2365 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2366 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2367 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2368 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2369 d = sqrt (n(j,i-1,0) * n(j,i-1,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2370 + n(j,i-1,1) * n(j,i-1,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2371 + n(j,i-1,2) * n(j,i-1,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2372 glNormal3d (n(j,i-1,0)/d, n(j,i-1,1)/d, n(j,i-1,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2373 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2374 glVertex3d (x(j2,i-1), y(j,i1), z(j,i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2375 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2376 // Vertex 2 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2377 if (ec_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2378 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2379 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2380 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2381 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2382 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2383 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2384 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2385 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2386 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2387 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2388 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2389 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2390 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2391 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2392 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2393 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2394 if (el_mode == 2) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2395 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2396 d = sqrt (n(j,i,0) * n(j,i,0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2397 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2398 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2399 glNormal3d (n(j,i,0)/d, n(j,i,1)/d, n(j,i,2)/d); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2400 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2401 glVertex3d (x(j2,i), y(j,i2), z(j,i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2402 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2403 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2404 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2405 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2406 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2407 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2408 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2409 set_linewidth (0.5); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2410 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2411 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2412 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2413 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2414 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2415 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2416 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2417 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2418 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2419 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2420 if (! props.marker_is ("none") && |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2421 ! (props.markeredgecolor_is ("none") |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2422 && props.markerfacecolor_is ("none"))) |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2423 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2424 // FIXME: check how transparency should be handled in markers |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2425 // FIXME: check what to do with marker facecolor set to auto |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2426 // and facecolor set to none. |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2427 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2428 bool do_edge = ! props.markeredgecolor_is ("none"); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2429 bool do_face = ! props.markerfacecolor_is ("none"); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2430 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2431 Matrix mecolor = props.get_markeredgecolor_rgb (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2432 Matrix mfcolor = props.get_markerfacecolor_rgb (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2433 Matrix cc (1, 3, 0.0); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2434 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2435 if (mecolor.numel () == 0 && props.markeredgecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2436 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2437 mecolor = props.get_edgecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2438 do_edge = ! props.edgecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2439 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2440 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2441 if (mfcolor.numel () == 0 && props.markerfacecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2442 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2443 mfcolor = props.get_facecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2444 do_face = ! props.facecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2445 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2446 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2447 if ((mecolor.numel () == 0 || mfcolor.numel () == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2448 && c.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2449 c = props.get_color_data ().array_value (); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2450 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2451 init_marker (props.get_marker (), props.get_markersize (), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2452 props.get_linewidth ()); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2453 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2454 for (int i = 0; i < zc; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2455 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2456 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2457 i1 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2458 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2459 for (int j = 0; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2460 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2461 if (clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2462 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2463 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2464 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2465 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2466 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2467 if ((do_edge && mecolor.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2468 || (do_face && mfcolor.numel () == 0)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2469 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2470 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2471 cc(k) = c(j,i,k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2472 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2473 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2474 Matrix lc = (do_edge ? (mecolor.numel () == 0 ? cc : mecolor) : Matrix ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2475 Matrix fc = (do_face ? (mfcolor.numel () == 0 ? cc : mfcolor) : Matrix ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2476 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2477 draw_marker (x(j1,i), y(j,i1), z(j,i), lc, fc); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2478 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2479 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2480 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2481 end_marker (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2482 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2483 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2484 |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2485 // FIXME: global optimization (rendering, data structures...), there |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2486 // is probably a smarter/faster/less-memory-consuming way to do this. |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2487 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2488 opengl_renderer::draw_patch (const patch::properties &props) |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2489 { |
9681 | 2490 const Matrix f = props.get_faces ().matrix_value (); |
2491 const Matrix v = xform.scale (props.get_vertices ().matrix_value ()); | |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2492 Matrix c; |
9681 | 2493 const Matrix n = props.get_vertexnormals ().matrix_value (); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2494 Matrix a; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2495 |
7870 | 2496 int nv = v.rows (); |
2497 // int vmax = v.columns (); | |
2498 int nf = f.rows (); | |
2499 int fcmax = f.columns (); | |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2500 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2501 bool has_z = (v.columns () > 2); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2502 bool has_facecolor = false; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2503 bool has_facealpha = false; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2504 |
11168
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2505 int fc_mode = ((props.facecolor_is("none") |
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2506 || props.facecolor_is_rgb ()) ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2507 (props.facecolor_is("flat") ? 1 : 2)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2508 int fl_mode = (props.facelighting_is ("none") ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2509 (props.facelighting_is ("flat") ? 1 : 2)); |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2510 int fa_mode = (props.facealpha_is_double () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2511 (props.facealpha_is ("flat") ? 1 : 2)); |
11168
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2512 int ec_mode = ((props.edgecolor_is("none") |
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2513 || props.edgecolor_is_rgb ()) ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2514 (props.edgecolor_is("flat") ? 1 : 2)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2515 int el_mode = (props.edgelighting_is ("none") ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2516 (props.edgelighting_is ("flat") ? 1 : 2)); |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2517 int ea_mode = (props.edgealpha_is_double () ? 0 : |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2518 (props.edgealpha_is ("flat") ? 1 : 2)); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2519 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2520 Matrix fcolor = props.get_facecolor_rgb (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2521 Matrix ecolor = props.get_edgecolor_rgb (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2522 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2523 float as = props.get_ambientstrength (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2524 float ds = props.get_diffusestrength (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2525 float ss = props.get_specularstrength (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2526 float se = props.get_specularexponent (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2527 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2528 boolMatrix clip (1, nv, false); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2529 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2530 if (has_z) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2531 for (int i = 0; i < nv; i++) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2532 clip(i) = is_nan_or_inf (v(i,0), v(i,1), v(i,2)); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2533 else |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2534 for (int i = 0; i < nv; i++) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2535 clip(i) = is_nan_or_inf (v(i,0), v(i,1), 0); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2536 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2537 boolMatrix clip_f (1, nf, false); |
10350
12884915a8e4
merge MArray classes & improve Array interface
Jaroslav Hajek <highegg@gmail.com>
parents:
10315
diff
changeset
|
2538 Array<int> count_f (nf, 1, 0); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2539 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2540 for (int i = 0; i < nf; i++) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2541 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2542 bool fclip = false; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2543 int count = 0; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2544 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2545 for (int j = 0; j < fcmax && ! xisnan (f(i,j)); j++, count++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2546 fclip = (fclip || clip(int (f(i,j) - 1))); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2547 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2548 clip_f(i) = fclip; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2549 count_f(i) = count; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2550 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2551 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2552 if (fc_mode > 0 || ec_mode > 0) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2553 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2554 c = props.get_color_data ().matrix_value (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2555 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2556 if (c.rows () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2557 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2558 // Single color specifications, we can simplify a little bit |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2559 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2560 if (fc_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2561 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2562 fcolor = c; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2563 fc_mode = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2564 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2565 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2566 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2567 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2568 ecolor = c; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2569 ec_mode = 0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2570 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2571 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2572 c = Matrix (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2573 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2574 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2575 has_facecolor = ((c.numel () > 0) && (c.rows () == f.rows ())); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2576 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2577 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2578 if (fa_mode > 0 || ea_mode > 0) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2579 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2580 // FIXME: retrieve alpha data from patch object |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2581 //a = props.get_alpha_data (); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2582 has_facealpha = ((a.numel () > 0) && (a.rows () == f.rows ())); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2583 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2584 |
7924 | 2585 octave_idx_type fr = f.rows (); |
7914
e998e81224b5
Various compilation fixes for MSVC.
John W. Eaton <jwe@octave.org>
parents:
7907
diff
changeset
|
2586 std::vector<vertex_data> vdata (f.numel ()); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2587 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2588 for (int i = 0; i < nf; i++) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2589 for (int j = 0; j < count_f(i); j++) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2590 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2591 int idx = int (f(i,j) - 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2592 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2593 Matrix vv (1, 3, 0.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2594 Matrix cc; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2595 Matrix nn(1, 3, 0.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2596 double aa = 1.0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2597 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2598 vv(0) = v(idx,0); vv(1) = v(idx,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2599 if (has_z) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2600 vv(2) = v(idx,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2601 // FIXME: uncomment when patch object has normal computation |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2602 //nn(0) = n(idx,0); nn(1) = n(idx,1); nn(2) = n(idx,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2603 if (c.numel () > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2604 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2605 cc.resize (1, 3); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2606 if (has_facecolor) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2607 cc(0) = c(i,0), cc(1) = c(i,1), cc(2) = c(i,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2608 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2609 cc(0) = c(idx,0), cc(1) = c(idx,1), cc(2) = c(idx,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2610 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2611 if (a.numel () > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2612 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2613 if (has_facealpha) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2614 aa = a(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2615 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2616 aa = a(idx); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2617 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2618 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2619 vdata[i+j*fr] = |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2620 vertex_data (vv, cc, nn, aa, as, ds, ss, se); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2621 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2622 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2623 if (fl_mode > 0 || el_mode > 0) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2624 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2625 float buf[4] = { ss, ss, ss, 1 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2626 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2627 glMaterialfv (LIGHT_MODE, GL_SPECULAR, buf); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2628 glMaterialf (LIGHT_MODE, GL_SHININESS, se); |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2629 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2630 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2631 if (! props.facecolor_is ("none")) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2632 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2633 // FIXME: adapt to double-radio property |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2634 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2635 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2636 if (fc_mode == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2637 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2638 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2639 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2640 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2641 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2642 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2643 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2644 cb[i] = (as * fcolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2645 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2646 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2647 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2648 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2649 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2650 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2651 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2652 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2653 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2654 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2655 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2656 // FIXME: use __index__ property from patch object |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2657 patch_tesselator tess (this, fc_mode, fl_mode, 0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2658 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2659 for (int i = 0; i < nf; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2660 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2661 if (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2662 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2663 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2664 tess.begin_polygon (true); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2665 tess.begin_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2666 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2667 for (int j = 0; j < count_f(i); j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2668 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2669 vertex_data::vertex_data_rep *vv = vdata[i+j*fr].get_rep (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2670 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2671 tess.add_vertex (vv->coords.fortran_vec (), vv); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2672 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2673 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2674 tess.end_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2675 tess.end_polygon (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2676 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2677 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2678 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2679 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2680 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2681 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2682 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2683 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2684 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2685 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2686 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2687 if (! props.edgecolor_is ("none")) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2688 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2689 // FIXME: adapt to double-radio property |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
2690 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2691 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2692 if (ec_mode == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2693 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2694 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2695 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2696 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2697 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2698 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2699 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2700 cb[i] = (as * ecolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2701 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2702 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2703 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2704 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2705 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2706 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2707 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2708 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2709 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2710 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2711 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2712 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2713 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2714 |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2715 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2716 // FIXME: use __index__ property from patch object; should we |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2717 // offset patch contour as well? |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2718 patch_tesselator tess (this, ec_mode, el_mode); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2719 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2720 for (int i = 0; i < nf; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2721 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2722 if (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2723 { |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2724 // This is an unclosed contour. Draw it as a line |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2725 bool flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2726 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2727 for (int j = 0; j < count_f(i); j++) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2728 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2729 if (! clip(int (f(i,j) - 1))) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2730 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2731 vertex_data::vertex_data_rep *vv = vdata[i+j*fr].get_rep (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2732 const Matrix m = vv->coords; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2733 if (! flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2734 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2735 flag = true; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2736 glBegin (GL_LINE_STRIP); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2737 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2738 glVertex3d (m(0), m(1), m(2)); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2739 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2740 else if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2741 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2742 flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2743 glEnd (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2744 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2745 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2746 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2747 if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2748 glEnd (); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2749 } |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2750 else |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2751 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2752 tess.begin_polygon (false); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2753 tess.begin_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2754 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2755 for (int j = 0; j < count_f(i); j++) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2756 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2757 vertex_data::vertex_data_rep *vv = vdata[i+j*fr].get_rep (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2758 tess.add_vertex (vv->coords.fortran_vec (), vv); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2759 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2760 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2761 tess.end_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2762 tess.end_polygon (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2763 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2764 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2765 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2766 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2767 set_linewidth (0.5); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2768 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2769 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2770 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2771 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2772 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2773 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2774 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2775 } |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2776 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2777 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2778 if (! props.marker_is ("none") && |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2779 ! (props.markeredgecolor_is ("none") && props.markerfacecolor_is ("none"))) |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2780 { |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2781 bool do_edge = ! props.markeredgecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2782 bool do_face = ! props.markerfacecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2783 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2784 Matrix mecolor = props.get_markeredgecolor_rgb (); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2785 Matrix mfcolor = props.get_markerfacecolor_rgb (); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2786 Matrix cc (1, 3, 0.0); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2787 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2788 if (mecolor.numel () == 0 && props.markeredgecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2789 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2790 mecolor = props.get_edgecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2791 do_edge = ! props.edgecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2792 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2793 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2794 if (mfcolor.numel () == 0 && props.markerfacecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2795 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2796 mfcolor = props.get_facecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2797 do_face = ! props.facecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2798 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2799 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2800 init_marker (props.get_marker (), props.get_markersize (), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2801 props.get_linewidth ()); |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2802 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2803 for (int i = 0; i < nf; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2804 for (int j = 0; j < count_f(i); j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2805 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2806 int idx = int (f(i,j) - 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2807 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2808 if (clip(idx)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2809 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2810 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2811 Matrix lc = (do_edge ? (mecolor.numel () == 0 ? |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2812 vdata[i+j*fr].get_rep ()->color : mecolor) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2813 : Matrix ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2814 Matrix fc = (do_face ? (mfcolor.numel () == 0 ? |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2815 vdata[i+j*fr].get_rep ()->color : mfcolor) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2816 : Matrix ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2817 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2818 draw_marker (v(idx,0), v(idx,1), (has_z ? v(idx,2) : 0), lc, fc); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2819 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2820 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2821 end_marker (); |
7833
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2822 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2823 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2824 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2825 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2826 opengl_renderer::draw_hggroup (const hggroup::properties &props) |
7866
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2827 { |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2828 draw (props.get_children ()); |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2829 } |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2830 |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2831 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2832 opengl_renderer::draw_text (const text::properties& props) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2833 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2834 if (props.get_string ().empty ()) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2835 return; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2836 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2837 set_font (props); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2838 set_color (props.get_color_rgb ()); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2839 |
10402
9f2bf537a651
Implement text extent property
Michael Goffioul <michael.goffioul@gmail.com>
parents:
10350
diff
changeset
|
2840 const Matrix pos = xform.scale (props.get_data_position ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2841 int halign = 0, valign = 0; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2842 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2843 if (props.horizontalalignment_is ("center")) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2844 halign = 1; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2845 else if (props.horizontalalignment_is ("right")) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2846 halign = 2; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2847 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2848 if (props.verticalalignment_is ("top")) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2849 valign = 2; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2850 else if (props.verticalalignment_is ("baseline")) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2851 valign = 3; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2852 else if (props.verticalalignment_is ("middle")) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2853 valign = 1; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2854 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2855 // FIXME: handle margin and surrounding box |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2856 |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2857 render_text (props.get_string (), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2858 pos(0), pos(1), pos(2), |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2859 halign, valign, props.get_rotation ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2860 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2861 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2862 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2863 opengl_renderer::draw_image (const image::properties& props) |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2864 { |
9884
fed4aad2cdca
handle indexed images in opengl renderer
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9834
diff
changeset
|
2865 octave_value cdata = props.get_color_data (); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2866 dim_vector dv (cdata.dims ()); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2867 int h = dv(0), w = dv(1); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2868 bool ok = true; |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2869 |
11093
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2870 Matrix x = props.get_xdata ().matrix_value (); |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2871 Matrix y = props.get_ydata ().matrix_value (); |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2872 |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2873 if (w > 1 && x(1) == x(0)) |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2874 x(1) = x(1) + (w-1); |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2875 |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2876 if (h > 1 && y(1) == y(0)) |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2877 y(1) = y(1) + (h-1); |
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2878 |
9681 | 2879 const ColumnVector p0 = xform.transform (x(0), y(0), 0); |
2880 const ColumnVector p1 = xform.transform (x(1), y(1), 0); | |
2881 | |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2882 // image pixel size in screen pixel units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2883 float pix_dx, pix_dy; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2884 // image pixel size in normalized units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2885 float nor_dx, nor_dy; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2886 |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2887 if (w > 1) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2888 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2889 pix_dx = (p1(0) - p0(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2890 nor_dx = (x(1) - x(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2891 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2892 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2893 { |
10076 | 2894 const ColumnVector p1w = xform.transform (x(1) + 1, y(1), 0); |
2895 pix_dx = p1w(0) - p0(0); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2896 nor_dx = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2897 } |
10076 | 2898 |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2899 if (h > 1) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2900 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2901 pix_dy = (p1(1) - p0(1))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2902 nor_dy = (y(1) - y(0))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2903 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2904 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2905 { |
10076 | 2906 const ColumnVector p1h = xform.transform (x(1), y(1) + 1, 0); |
2907 pix_dy = p1h(1) - p0(1); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2908 nor_dy = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2909 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2910 |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2911 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2912 // OpenGL won't draw the image if it's origin is outside the |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2913 // viewport/clipping plane so we must do the clipping |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2914 // ourselfes - only draw part of the image |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2915 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2916 int j0 = 0, j1 = w; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2917 int i0 = 0, i1 = h; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2918 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2919 float im_xmin = x(0) - nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2920 float im_xmax = x(1) + nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2921 float im_ymin = y(0) - nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2922 float im_ymax = y(1) + nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2923 if (props.is_clipping ()) // clip to axes |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2924 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2925 if (im_xmin < xmin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2926 j0 += (xmin - im_xmin)/nor_dx + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2927 if (im_xmax > xmax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2928 j1 -= (im_xmax - xmax)/nor_dx ; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2929 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2930 if (im_ymin < ymin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2931 i0 += (ymin - im_ymin)/nor_dy + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2932 if (im_ymax > ymax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2933 i1 -= (im_ymax - ymax)/nor_dy; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2934 } |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2935 else // clip to viewport |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2936 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2937 GLfloat vp[4]; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2938 glGetFloatv(GL_VIEWPORT, vp); |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2939 // FIXME -- actually add the code to do it! |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2940 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2941 } |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2942 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2943 if (i0 >= i1 || j0 >= j1) |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2944 return; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2945 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2946 glPixelZoom (pix_dx, -pix_dy); |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2947 glRasterPos3d (im_xmin + nor_dx*j0, im_ymin + nor_dy*i0, 0); |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2948 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2949 // by default this is 4 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2950 glPixelStorei (GL_UNPACK_ALIGNMENT,1); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2951 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2952 // Expect RGB data |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2953 if (dv.length () == 3 && dv(2) == 3) |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2954 { |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2955 if (cdata.is_double_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2956 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2957 const NDArray xcdata = cdata.array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2958 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2959 OCTAVE_LOCAL_BUFFER (GLfloat, a, 3*(j1-j0)*(i1-i0)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2960 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2961 for (int i = i0; i < i1; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2962 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2963 for (int j = j0, idx = (i-i0)*(j1-j0)*3; j < j1; j++, idx += 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2964 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2965 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2966 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2967 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2968 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2969 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2970 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2971 draw_pixels (j1-j0, i1-i0, GL_RGB, GL_FLOAT, a); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2972 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2973 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2974 else if (cdata.is_uint16_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2975 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2976 const uint16NDArray xcdata = cdata.uint16_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2977 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2978 OCTAVE_LOCAL_BUFFER (GLushort, a, 3*(j1-j0)*(i1-i0)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2979 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2980 for (int i = i0; i < i1; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2981 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2982 for (int j = j0, idx = (i-i0)*(j1-j0)*3; j < j1; j++, idx += 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2983 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2984 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2985 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2986 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2987 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2988 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2989 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2990 draw_pixels (j1-j0, i1-i0, GL_RGB, GL_UNSIGNED_SHORT, a); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2991 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2992 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2993 else if (cdata.is_uint8_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2994 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2995 const uint8NDArray xcdata = cdata.uint8_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2996 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2997 OCTAVE_LOCAL_BUFFER (GLubyte, a, 3*(j1-j0)*(i1-i0)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2998 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2999 for (int i = i0; i < i1; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3000 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3001 for (int j = j0, idx = (i-i0)*(j1-j0)*3; j < j1; j++, idx += 3) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3002 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3003 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3004 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3005 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3006 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3007 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3008 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3009 draw_pixels (j1-j0, i1-i0, GL_RGB, GL_UNSIGNED_BYTE, a); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3010 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3011 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3012 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3013 ok = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3014 warning ("opengl_texture::draw: invalid image data type (expected double, uint16, or uint8)"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3015 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3016 } |
9884
fed4aad2cdca
handle indexed images in opengl renderer
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9834
diff
changeset
|
3017 else |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3018 { |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3019 ok = false; |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3020 warning ("opengl_texture::draw: invalid image size (expected n*m*3 or n*m)"); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3021 } |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3022 glPixelZoom (1, 1); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3023 } |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3024 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
3025 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3026 opengl_renderer::set_viewport (int w, int h) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3027 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3028 glViewport (0, 0, w, h); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3029 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3030 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3031 void |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3032 opengl_renderer::draw_pixels (GLsizei width, GLsizei height, GLenum format, |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3033 GLenum type, const GLvoid *data) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3034 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3035 glDrawPixels (width, height, format, type, data); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3036 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3037 |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
3038 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3039 opengl_renderer::set_color (const Matrix& c) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3040 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3041 glColor3dv (c.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3042 #if HAVE_FREETYPE |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3043 text_renderer.set_color (c); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3044 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3045 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3046 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3047 void |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3048 opengl_renderer::set_font (const base_properties& props) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3049 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3050 #if HAVE_FREETYPE |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3051 text_renderer.set_font (props); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3052 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3053 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3054 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3055 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3056 opengl_renderer::set_polygon_offset (bool on, double offset) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3057 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3058 if (on) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3059 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3060 glPolygonOffset (offset, offset); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3061 glEnable (GL_POLYGON_OFFSET_FILL); |
7906 | 3062 glEnable (GL_POLYGON_OFFSET_LINE); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3063 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3064 else |
7906 | 3065 { |
3066 glDisable (GL_POLYGON_OFFSET_FILL); | |
3067 glDisable (GL_POLYGON_OFFSET_LINE); | |
3068 } | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3069 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3070 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3071 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3072 opengl_renderer::set_linewidth (float w) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3073 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3074 glLineWidth (w); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3075 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3076 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3077 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3078 opengl_renderer::set_linestyle (const std::string& s, bool use_stipple) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3079 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3080 bool solid = false; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3081 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3082 if (s == "-") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3083 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3084 glLineStipple (1, static_cast<unsigned short> (0xFFFF)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3085 solid = true; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3086 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3087 else if (s == ":") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3088 glLineStipple (1, static_cast<unsigned short> (0x8888)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3089 else if (s == "--") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3090 glLineStipple (1, static_cast<unsigned short> (0x0FFF)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3091 else if (s == "-.") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3092 glLineStipple (1, static_cast<unsigned short> (0x020F)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3093 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3094 glLineStipple (1, static_cast<unsigned short> (0x0000)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3095 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3096 if (solid && ! use_stipple) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3097 glDisable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3098 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3099 glEnable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3100 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3101 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3102 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3103 opengl_renderer::set_clipbox (double x1, double x2, double y1, double y2, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3104 double z1, double z2) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3105 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3106 double dx = (x2-x1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3107 double dy = (y2-y1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3108 double dz = (z2-z1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3109 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3110 x1 -= 0.001*dx; x2 += 0.001*dx; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3111 y1 -= 0.001*dy; y2 += 0.001*dy; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3112 z1 -= 0.001*dz; z2 += 0.001*dz; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3113 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3114 ColumnVector p (4, 0.0); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3115 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3116 p(0) = -1; p(3) = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3117 glClipPlane (GL_CLIP_PLANE0, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3118 p(0) = 1; p(3) = -x1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3119 glClipPlane (GL_CLIP_PLANE1, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3120 p(0) = 0; p(1) = -1; p(3) = y2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3121 glClipPlane (GL_CLIP_PLANE2, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3122 p(1) = 1; p(3) = -y1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3123 glClipPlane (GL_CLIP_PLANE3, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3124 p(1) = 0; p(2) = -1; p(3) = z2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3125 glClipPlane (GL_CLIP_PLANE4, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3126 p(2) = 1; p(3) = -z1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3127 glClipPlane (GL_CLIP_PLANE5, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3128 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3129 xmin = x1; xmax = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3130 ymin = y1; ymax = y2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3131 zmin = z1; zmax = z2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3132 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3133 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3134 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3135 opengl_renderer::set_clipping (bool enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3136 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3137 bool has_clipping = (glIsEnabled (GL_CLIP_PLANE0) == GL_TRUE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3138 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3139 if (enable != has_clipping) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3140 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3141 if (enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3142 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3143 glEnable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3144 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3145 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3146 glDisable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3147 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3148 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3149 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3150 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3151 opengl_renderer::init_marker (const std::string& m, double size, float width) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3152 { |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
3153 #if defined (HAVE_FRAMEWORK_OPENGL) |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
3154 GLint vw[4]; |
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
3155 #else |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3156 int vw[4]; |
8724
a50228129dba
Introduce new macro OCTAVE_GLUTESSCALLBACK_THREEDOTS. Use definitions HAVE_FRAMEWORK_OPENGL and HAVE_GLUTESSCALLBACK_THREEDOTS for Mac's framework OpenGL implementation.
Ben Abbott <bpabbott@mac.com>
parents:
8674
diff
changeset
|
3157 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3158 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3159 glGetIntegerv (GL_VIEWPORT, vw); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3160 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3161 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3162 glPushMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3163 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3164 glOrtho (0, vw[2], vw[3], 0, xZ1, xZ2); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3165 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3166 glPushMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3167 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3168 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3169 set_linewidth (width); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3170 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3171 marker_id = make_marker_list (m, size, false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3172 filled_marker_id = make_marker_list (m, size, true); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3173 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3174 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3175 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3176 opengl_renderer::end_marker (void) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3177 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3178 glDeleteLists (marker_id, 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3179 glDeleteLists (filled_marker_id, 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3180 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3181 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3182 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3183 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3184 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3185 set_linewidth (0.5f); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3186 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3187 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3188 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3189 opengl_renderer::draw_marker (double x, double y, double z, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3190 const Matrix& lc, const Matrix& fc) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3191 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3192 ColumnVector tmp = xform.transform (x, y, z, false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3193 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3194 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3195 glTranslated (tmp(0), tmp(1), -tmp(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3196 |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3197 if (filled_marker_id > 0 && fc.numel () > 0) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3198 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3199 glColor3dv (fc.data ()); |
7906 | 3200 set_polygon_offset (true, -1.0); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3201 glCallList (filled_marker_id); |
7906 | 3202 if (lc.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3203 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3204 glColor3dv (lc.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3205 glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3206 glEdgeFlag (GL_TRUE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3207 set_polygon_offset (true, -2.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3208 glCallList (filled_marker_id); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3209 glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3210 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3211 set_polygon_offset (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3212 } |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3213 else if (marker_id > 0 && lc.numel () > 0) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3214 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3215 glColor3dv (lc.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3216 glCallList (marker_id); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3217 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3218 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3219 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3220 unsigned int |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3221 opengl_renderer::make_marker_list (const std::string& marker, double size, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3222 bool filled) const |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3223 { |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3224 char c = marker[0]; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3225 |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3226 if (filled && (c == '+' || c == 'x' || c == '*' || c == '.')) |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3227 return 0; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3228 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3229 unsigned int ID = glGenLists (1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3230 double sz = size * backend.get_screen_resolution () / 72.0; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3231 |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3232 // constants for the * marker |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3233 const double sqrt2d4 = 0.35355339059327; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3234 double tt = sz*sqrt2d4; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3235 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3236 glNewList (ID, GL_COMPILE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3237 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3238 switch (marker[0]) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3239 { |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3240 case '+': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3241 glBegin (GL_LINES); |
9681 | 3242 glVertex2f (-sz/2, 0); |
3243 glVertex2f (sz/2, 0); | |
3244 glVertex2f (0, -sz/2); | |
3245 glVertex2f (0, sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3246 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3247 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3248 case 'x': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3249 glBegin(GL_LINES); |
9681 | 3250 glVertex2f (-sz/2, -sz/2); |
3251 glVertex2f (sz/2, sz/2); | |
3252 glVertex2f (-sz/2, sz/2); | |
3253 glVertex2f (sz/2, -sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3254 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3255 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3256 case '*': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3257 glBegin (GL_LINES); |
9681 | 3258 glVertex2f (-sz/2, 0); |
3259 glVertex2f (sz/2, 0); | |
3260 glVertex2f (0, -sz/2); | |
3261 glVertex2f (0, sz/2); | |
3262 glVertex2f (-tt, -tt); | |
3263 glVertex2f (+tt, +tt); | |
3264 glVertex2f (-tt, +tt); | |
3265 glVertex2f (+tt, -tt); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3266 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3267 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3268 case '.': |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3269 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3270 double ang_step = M_PI / 5; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3271 |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3272 glBegin (GL_POLYGON); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3273 for (double ang = 0; ang < (2*M_PI); ang += ang_step) |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3274 glVertex2d (sz*cos(ang)/6, sz*sin(ang)/6); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3275 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3276 } |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3277 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3278 case 's': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3279 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3280 glVertex2d (-sz/2, -sz/2); |
9681 | 3281 glVertex2d (-sz/2, sz/2); |
3282 glVertex2d (sz/2, sz/2); | |
3283 glVertex2d (sz/2, -sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3284 glEnd(); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3285 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3286 case 'o': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3287 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3288 double ang_step = M_PI / 5; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3289 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3290 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3291 for (double ang = 0; ang < (2*M_PI); ang += ang_step) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3292 glVertex2d (sz*cos(ang)/2, sz*sin(ang)/2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3293 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3294 } |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3295 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3296 case 'd': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3297 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3298 glVertex2d (0, -sz/2); |
3299 glVertex2d (sz/2, 0); | |
3300 glVertex2d (0, sz/2); | |
3301 glVertex2d (-sz/2, 0); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3302 glEnd(); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3303 break; |
10835
4bbd6f75f173
gl-render.cc: Transpose markers '^' and 'v'.
Ben Abbott <bpabbott@mac.com>
parents:
10402
diff
changeset
|
3304 case 'v': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3305 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3306 glVertex2f (0, sz/2); |
3307 glVertex2f (sz/2, -sz/2); | |
3308 glVertex2f (-sz/2, -sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3309 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3310 break; |
10835
4bbd6f75f173
gl-render.cc: Transpose markers '^' and 'v'.
Ben Abbott <bpabbott@mac.com>
parents:
10402
diff
changeset
|
3311 case '^': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3312 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3313 glVertex2f (0, -sz/2); |
3314 glVertex2f (-sz/2, sz/2); | |
3315 glVertex2f (sz/2, sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3316 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3317 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3318 case '>': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3319 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3320 glVertex2f (sz/2, 0); |
3321 glVertex2f (-sz/2, sz/2); | |
3322 glVertex2f (-sz/2, -sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3323 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3324 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3325 case '<': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3326 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3327 glVertex2f (-sz/2, 0); |
3328 glVertex2f (sz/2, -sz/2); | |
3329 glVertex2f (sz/2, sz/2); | |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3330 glEnd (); |
7906 | 3331 break; |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3332 case 'p': |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3333 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3334 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3335 double r; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3336 double dr = 1.0 - sin(M_PI/10)/sin(3*M_PI/10)*1.02; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3337 |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3338 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3339 for (int i = 0; i < 2*5; i++) |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3340 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3341 ang = (-0.5 + double(i+1)/5) * M_PI; |
11209
94d9d412a2a0
improve Matlab compatibility of rem and mod
John W. Eaton <jwe@octave.org>
parents:
11186
diff
changeset
|
3342 r = 1.0 - (dr * fmod(double(i+1), 2.0)); |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3343 glVertex2d (sz*r*cos(ang)/2, sz*r*sin(ang)/2); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3344 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3345 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3346 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3347 break; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3348 case 'h': |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3349 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3350 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3351 double r; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3352 double dr = 1.0 - 0.5/sin(M_PI/3)*1.02; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3353 |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3354 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3355 for (int i = 0; i < 2*6; i++) |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3356 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3357 ang = (0.5 + double(i+1)/6.0) * M_PI; |
11209
94d9d412a2a0
improve Matlab compatibility of rem and mod
John W. Eaton <jwe@octave.org>
parents:
11186
diff
changeset
|
3358 r = 1.0 - (dr * fmod(double(i+1), 2.0)); |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3359 glVertex2d (sz*r*cos(ang)/2, sz*r*sin(ang)/2); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3360 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3361 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3362 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3363 break; |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3364 default: |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3365 warning ("opengl_renderer: unsupported marker `%s'", |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3366 marker.c_str ()); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3367 break; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3368 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3369 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3370 glEndList (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3371 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3372 return ID; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3373 } |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7870
diff
changeset
|
3374 |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3375 void |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3376 opengl_renderer::text_to_pixels (const std::string& txt, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3377 double rotation, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3378 uint8NDArray& pixels, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3379 Matrix& bbox, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3380 int& rot_mode) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3381 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3382 // FIXME: clip "rotation" between 0 and 360 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3383 |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3384 rot_mode = ft_render::ROTATION_0; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3385 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3386 if (rotation == 90.0) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3387 rot_mode = ft_render::ROTATION_90; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3388 else if (rotation == 180.0) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3389 rot_mode = ft_render::ROTATION_180; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3390 else if (rotation == 270.0) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3391 rot_mode = ft_render::ROTATION_270; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3392 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3393 text_element *elt = text_parser_none ().parse (txt); |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3394 pixels = text_renderer.render (elt, bbox, rot_mode); |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3395 delete elt; |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3396 } |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3397 |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3398 Matrix |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3399 opengl_renderer::render_text (const std::string& txt, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3400 double x, double y, double z, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3401 int halign, int valign, double rotation) |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3402 { |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3403 #if HAVE_FREETYPE |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3404 if (txt.empty ()) |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3405 return Matrix (1, 4, 0.0); |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3406 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3407 Matrix bbox; |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3408 uint8NDArray pixels; |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3409 int rot_mode; |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3410 text_to_pixels (txt, rotation, pixels, bbox, rot_mode); |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3411 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3412 int x0 = 0, y0 = 0; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3413 int w = bbox(2), h = bbox(3); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3414 |
9406
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3415 if (pixels.numel () == 0) |
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3416 { |
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3417 // nothing to render |
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3418 return bbox; |
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3419 } |
c0c23dbbade7
Improve error handling in text rendering.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9405
diff
changeset
|
3420 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3421 switch (halign) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3422 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3423 default: break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3424 case 1: x0 = -bbox(2)/2; break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3425 case 2: x0 = -bbox(2); break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3426 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3427 switch (valign) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3428 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3429 default: break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3430 case 1: y0 = -bbox(3)/2; break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3431 case 2: y0 = -bbox(3); break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3432 case 3: y0 = bbox(1); break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3433 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3434 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3435 switch (rot_mode) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3436 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3437 case ft_render::ROTATION_90: |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3438 std::swap (x0, y0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3439 std::swap (w, h); |
9405
7cc35bc348cc
Install text engine headers and fix rendering of 90x rotated text.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9403
diff
changeset
|
3440 x0 = -x0-bbox(3); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3441 break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3442 case ft_render::ROTATION_180: |
9405
7cc35bc348cc
Install text engine headers and fix rendering of 90x rotated text.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9403
diff
changeset
|
3443 x0 = -x0-bbox(2); |
7cc35bc348cc
Install text engine headers and fix rendering of 90x rotated text.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9403
diff
changeset
|
3444 y0 = -y0-bbox(3); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3445 break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3446 case ft_render::ROTATION_270: |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3447 std::swap (x0, y0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3448 std::swap (w, h); |
9405
7cc35bc348cc
Install text engine headers and fix rendering of 90x rotated text.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
9403
diff
changeset
|
3449 y0 = -y0-bbox(2); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3450 break; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3451 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3452 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3453 bool blend = glIsEnabled (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3454 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3455 glEnable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3456 glEnable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3457 glRasterPos3d (x, y, z); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3458 glBitmap(0, 0, 0, 0, x0, y0, 0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3459 glDrawPixels (w, h, |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3460 GL_RGBA, GL_UNSIGNED_BYTE, pixels.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3461 glDisable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3462 if (! blend) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3463 glDisable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3464 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3465 return bbox; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3466 #else |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
3467 ::warning ("render_text: cannot render text, Freetype library not available"); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3468 return Matrix (1, 4, 0.0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3469 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3470 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3471 |
7954 | 3472 #endif |