Mercurial > octave-nkf
annotate libinterp/corefcn/gl-render.cc @ 19895:19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Try to wrap long lines to < 80 characters.
Use GNU style and don't indent first brace of function definition.
"case" statement is aligned flush left with brace of switch stmt.
Remove trailing '\' line continuation from the end of #define macros.
Use 2 spaces for indent.
* files-dock-widget.cc, history-dock-widget.cc, main-window.cc, octave-cmd.cc,
octave-dock-widget.cc, octave-gui.cc, resource-manager.cc, settings-dialog.cc,
shortcut-manager.cc, welcome-wizard.cc, workspace-view.cc, cellfun.cc, data.cc,
debug.cc, debug.h, dirfns.cc, error.h, file-io.cc, gl-render.cc, gl-render.h,
gl2ps-renderer.h, graphics.cc, graphics.in.h, help.cc, input.cc, load-path.cc,
load-path.h, lookup.cc, lu.cc, oct-stream.cc, octave-default-image.h,
ordschur.cc, pr-output.cc, qz.cc, strfns.cc, symtab.cc, symtab.h, sysdep.cc,
variables.cc, zfstream.h, __fltk_uigetfile__.cc, __init_fltk__.cc,
__magick_read__.cc, __osmesa_print__.cc, audiodevinfo.cc, ov-classdef.cc,
ov-classdef.h, ov-fcn.h, ov-float.cc, ov-flt-complex.cc, ov-java.cc,
ov-range.cc, ov-re-mat.cc, ov-usr-fcn.h, ov.cc, op-int.h, options-usage.h,
pt-eval.cc, Array-C.cc, Array-fC.cc, Array.cc, Array.h, PermMatrix.cc,
Sparse.cc, chMatrix.h, dSparse.cc, dim-vector.h, bsxfun-decl.h, bsxfun-defs.cc,
oct-norm.cc, Sparse-op-defs.h, oct-inttypes.cc, oct-inttypes.h, main.in.cc,
mkoctfile.in.cc: Cleanup C++ code to follow Octave coding conventions.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 25 Feb 2015 11:55:49 -0800 |
parents | 4197fc428c7d |
children | 17d647821d61 |
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 |
19731
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19631
diff
changeset
|
3 Copyright (C) 2008-2015 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" |
13985
43cc49c7abd1
Use thread-safe atomic reference counting (GCC and MSVC).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13961
diff
changeset
|
33 #include "oct-refcount.h" |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
34 #include "gl-render.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
35 #include "txt-eng.h" |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
36 #include "txt-eng-ft.h" |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
37 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
38 #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
|
39 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
40 // Use symbolic names for axes |
19895
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
41 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
42 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
43 X_AXIS, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
44 Y_AXIS, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
45 Z_AXIS |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
46 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
47 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
48 // Use symbolic names for color mode |
19895
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
49 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
50 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
51 UNIFORM, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
52 FLAT, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
53 INTERP, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
54 TEXTURE |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
55 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
56 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
57 // Use symbolic names for lighting |
19895
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
58 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19731
diff
changeset
|
59 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
60 NONE, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
61 //FLAT, // Already declared in anonymous enum for color mode |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
62 GOURAUD = 2 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
63 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
64 |
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
|
65 // 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
|
66 // 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
|
67 // 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
|
68 #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
|
69 #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
|
70 #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
|
71 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
72 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
|
73 opengl_texture |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
74 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
75 protected: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
76 class texture_rep |
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 public: |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
79 texture_rep (void) |
11584
cda4aa780d58
Another round of initialising members in the constructor initialisation list
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11576
diff
changeset
|
80 : id (), w (), h (), tw (), th (), tx (), ty (), |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
81 valid (false), count (1) |
11584
cda4aa780d58
Another round of initialising members in the constructor initialisation list
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11576
diff
changeset
|
82 { } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
83 |
9681 | 84 texture_rep (GLuint id_arg, int w_arg, int h_arg, int tw_arg, int th_arg) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
85 : id (id_arg), w (w_arg), h (h_arg), tw (tw_arg), th (th_arg), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
86 tx (double(w)/tw), ty (double(h)/th), valid (true), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
87 count (1) { } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
88 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
89 ~texture_rep (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
90 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
91 if (valid) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
92 glDeleteTextures (1, &id); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
93 } |
7831
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 void bind (int mode) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
96 { if (valid) glBindTexture (mode, id); } |
7831
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 void tex_coord (double q, double r) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
99 { if (valid) glTexCoord2d (q*tx, r*ty); } |
7831
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 GLuint id; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
102 int w, h; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
103 int tw, th; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
104 double tx, ty; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
105 bool valid; |
12125
a21a3875ca83
implement a common class for reference counts
Jaroslav Hajek <highegg@gmail.com>
parents:
12122
diff
changeset
|
106 octave_refcount<int> count; |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
107 }; |
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 texture_rep *rep; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
110 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
111 private: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
112 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
|
113 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
114 public: |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
115 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
|
116 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
117 opengl_texture (const opengl_texture& tx) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
118 : rep (tx.rep) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
119 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
120 rep->count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
121 } |
7831
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 ~opengl_texture (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
124 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
125 if (--rep->count == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
126 delete rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
127 } |
7831
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 opengl_texture& operator = (const opengl_texture& tx) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
130 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
131 if (--rep->count == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
132 delete rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
133 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
134 rep = tx.rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
135 rep->count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
136 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
137 return *this; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
138 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
139 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
140 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
|
141 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
142 void bind (int mode = GL_TEXTURE_2D) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
143 { rep->bind (mode); } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
144 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
145 void tex_coord (double q, double r) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
146 { rep->tex_coord (q, r); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
147 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
148 bool is_valid (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
149 { return rep->valid; } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
150 }; |
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 static int |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
153 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
|
154 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
155 int m = 1; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
156 |
15215
9020dddc925a
use std::numeric_limits for integer max and min values
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
157 while (m < n && m < std::numeric_limits<int>::max ()) |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
158 m <<= 1; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
159 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
160 return m; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
161 } |
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 opengl_texture |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
164 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
|
165 { |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
166 opengl_texture retval; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
167 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
168 dim_vector dv (data.dims ()); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
169 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
170 // Expect RGB data |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
171 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
|
172 { |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
173 // FIXME: dim_vectors hold octave_idx_type values. |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
174 // Should we check for dimensions larger than intmax? |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
175 int h, w, tw, th; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
176 h = dv(0), w = dv(1); |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
177 GLuint id; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
178 bool ok = true; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
179 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
180 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
|
181 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
|
182 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
183 glGenTextures (1, &id); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
184 glBindTexture (GL_TEXTURE_2D, id); |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
185 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
186 if (data.is_double_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
187 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
188 const NDArray xdata = data.array_value (); |
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 OCTAVE_LOCAL_BUFFER (float, a, (3*tw*th)); |
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 for (int i = 0; i < h; i++) |
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 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
|
195 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
196 a[idx] = xdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
197 a[idx+1] = xdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
198 a[idx+2] = xdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
199 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
200 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
201 |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
202 glTexImage2D (GL_TEXTURE_2D, 0, 3, tw, th, 0, GL_RGB, GL_FLOAT, a); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
203 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
204 else if (data.is_uint8_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
205 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
206 const uint8NDArray xdata = data.uint8_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
207 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
208 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
|
209 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
210 for (int i = 0; i < h; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
211 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
212 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
|
213 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
214 a[idx] = xdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
215 a[idx+1] = xdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
216 a[idx+2] = xdata(i,j,2); |
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 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
219 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
220 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
|
221 GL_RGB, GL_UNSIGNED_BYTE, a); |
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 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
224 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
225 ok = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
226 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
|
227 } |
7831
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 if (ok) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
230 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
231 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
|
232 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
|
233 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
234 if (glGetError () != GL_NO_ERROR) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
235 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
|
236 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
237 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
|
238 } |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
239 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
240 else |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
241 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
|
242 |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
243 return retval; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
244 } |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
245 |
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
|
246 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
|
247 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
|
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 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
|
250 #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
|
251 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
|
252 #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
|
253 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
|
254 #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
|
255 |
8ff92634982d
Add initial 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 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
|
257 |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14838
diff
changeset
|
258 opengl_tesselator (void) : glu_tess (0), fill () { init (); } |
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
|
259 |
8ff92634982d
Add initial 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 virtual ~opengl_tesselator (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
261 { if (glu_tess) gluDeleteTess (glu_tess); } |
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
|
262 |
8ff92634982d
Add initial 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 void begin_polygon (bool filled = true) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
264 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
265 gluTessProperty (glu_tess, GLU_TESS_BOUNDARY_ONLY, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
266 (filled ? GL_FALSE : GL_TRUE)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
267 fill = filled; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
268 gluTessBeginPolygon (glu_tess, this); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
269 } |
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
|
270 |
8ff92634982d
Add initial 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 void end_polygon (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
272 { gluTessEndPolygon (glu_tess); } |
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
|
273 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
274 void begin_contour (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
275 { gluTessBeginContour (glu_tess); } |
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
|
276 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
277 void end_contour (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
278 { gluTessEndContour (glu_tess); } |
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
|
279 |
8ff92634982d
Add initial 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 void add_vertex (double *loc, void *data) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
281 { gluTessVertex (glu_tess, loc, 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
|
282 |
8ff92634982d
Add initial 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 protected: |
7870 | 284 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
|
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 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
|
287 |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
288 virtual void vertex (void * /*data*/) { } |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
289 |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
290 virtual void combine (GLdouble [3] /*c*/, void * [4] /*data*/, |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
291 GLfloat [4] /*w*/, void ** /*out_data*/) { } |
7870 | 292 |
293 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
|
294 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
295 virtual void error (GLenum err) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
296 { ::error ("OpenGL tesselation error (%d)", err); } |
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
|
297 |
8ff92634982d
Add initial 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 virtual void init (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
299 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
300 glu_tess = gluNewTess (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
301 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
302 gluTessCallback (glu_tess, GLU_TESS_BEGIN_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
303 reinterpret_cast<fcn> (tess_begin)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
304 gluTessCallback (glu_tess, GLU_TESS_END_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
305 reinterpret_cast<fcn> (tess_end)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
306 gluTessCallback (glu_tess, GLU_TESS_VERTEX_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
307 reinterpret_cast<fcn> (tess_vertex)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
308 gluTessCallback (glu_tess, GLU_TESS_COMBINE_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
309 reinterpret_cast<fcn> (tess_combine)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
310 gluTessCallback (glu_tess, GLU_TESS_EDGE_FLAG_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
311 reinterpret_cast<fcn> (tess_edge_flag)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
312 gluTessCallback (glu_tess, GLU_TESS_ERROR_DATA, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
313 reinterpret_cast<fcn> (tess_error)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
314 } |
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
|
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 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
|
317 |
8ff92634982d
Add initial 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 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
|
319 static void CALLBACK tess_begin (GLenum type, void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
320 { reinterpret_cast<opengl_tesselator *> (t)->begin (type); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
321 |
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
|
322 static void CALLBACK tess_end (void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
323 { reinterpret_cast<opengl_tesselator *> (t)->end (); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
324 |
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
|
325 static void CALLBACK tess_vertex (void *v, void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
326 { reinterpret_cast<opengl_tesselator *> (t)->vertex (v); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
327 |
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
|
328 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
|
329 void **out, void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
330 { reinterpret_cast<opengl_tesselator *> (t)->combine (c, v, w, out); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
331 |
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
|
332 static void CALLBACK tess_edge_flag (GLboolean flag, void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
333 { reinterpret_cast<opengl_tesselator *> (t)->edge_flag (flag); } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
334 |
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
|
335 static void CALLBACK tess_error (GLenum err, void *t) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
336 { reinterpret_cast<opengl_tesselator *> (t)->error (err); } |
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
|
337 |
8ff92634982d
Add initial 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 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
339 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
340 // No copying! |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
341 |
12174 | 342 opengl_tesselator (const opengl_tesselator&); |
343 | |
344 opengl_tesselator operator = (const opengl_tesselator&); | |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
345 |
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
|
346 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
|
347 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
|
348 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
349 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
350 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
|
351 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
|
352 { |
8ff92634982d
Add initial 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 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
|
354 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
|
355 { |
8ff92634982d
Add initial 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 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
|
357 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
|
358 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
|
359 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
|
360 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
|
361 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
|
362 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
|
363 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
|
364 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
|
365 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
366 // reference counter |
12125
a21a3875ca83
implement a common class for reference counts
Jaroslav Hajek <highegg@gmail.com>
parents:
12122
diff
changeset
|
367 octave_refcount<int> 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 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
369 vertex_data_rep (void) |
11584
cda4aa780d58
Another round of initialising members in the constructor initialisation list
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11576
diff
changeset
|
370 : coords (), color (), normal (), alpha (), |
cda4aa780d58
Another round of initialising members in the constructor initialisation list
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11576
diff
changeset
|
371 ambient (), diffuse (), specular (), specular_exp (),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
|
372 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
373 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
|
374 double a, float as, float ds, float ss, float se) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
375 : coords (c), color (col), normal (n), alpha (a), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
376 ambient (as), diffuse (ds), specular (ss), specular_exp (se), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
377 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
|
378 }; |
8ff92634982d
Add initial 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 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
|
381 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
|
382 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
383 vertex_data_rep *nil_rep (void) const |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
384 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
385 static vertex_data_rep *nr = new vertex_data_rep (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
386 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
387 return nr; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
388 } |
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
|
389 |
8ff92634982d
Add initial 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 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
|
391 vertex_data (void) : rep (nil_rep ()) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
392 { 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
|
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 vertex_data (const vertex_data& v) : rep (v.rep) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
395 { 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
|
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 (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
|
398 double a, float as, float ds, float ss, float se) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
399 : rep (new vertex_data_rep (c, col, n, a, as, ds, ss, se)) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
400 { } |
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
|
401 |
8ff92634982d
Add initial 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 vertex_data (vertex_data_rep *new_rep) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
403 : rep (new_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
|
404 |
8ff92634982d
Add initial 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 ~vertex_data (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
406 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
407 if (--rep->count == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
408 delete rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
409 } |
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
|
410 |
8ff92634982d
Add initial 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 vertex_data& operator = (const vertex_data& v) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
412 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
413 if (--rep->count == 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
414 delete rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
415 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
416 rep = v.rep; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
417 rep->count++; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
418 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
419 return *this; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
420 } |
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
|
421 |
8ff92634982d
Add initial 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 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
|
423 }; |
8ff92634982d
Add initial 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 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
|
426 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
|
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 public: |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
429 patch_tesselator (opengl_renderer *r, int cmode, int lmode, float idx = 0.0) |
17651
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
430 : opengl_tesselator (), renderer (r), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
431 color_mode (cmode), light_mode (lmode), index (idx), |
b0f529c3671d
gl-render.cc: Replace custom min function with std::min.
Rik <rik@octave.org>
parents:
17602
diff
changeset
|
432 first (true), tmp_vdata () |
12164
18e9a8da7d18
eliminate some -Weffc++ warnings
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
12126
diff
changeset
|
433 { } |
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
|
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 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
|
436 void begin (GLenum type) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
437 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
438 //printf ("patch_tesselator::begin (%d)\n", type); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
439 first = true; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
440 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
441 if (color_mode == INTERP || light_mode == GOURAUD) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
442 glShadeModel (GL_SMOOTH); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
443 else |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
444 glShadeModel (GL_FLAT); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
445 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
446 if (is_filled ()) |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
447 renderer->set_polygon_offset (true, index); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
448 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
449 glBegin (type); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
450 } |
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
|
451 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
452 void end (void) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
453 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
454 //printf ("patch_tesselator::end\n"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
455 glEnd (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
456 renderer->set_polygon_offset (false); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
457 } |
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
|
458 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
459 void vertex (void *data) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
460 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
461 vertex_data::vertex_data_rep *v |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
462 = reinterpret_cast<vertex_data::vertex_data_rep *> (data); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
463 //printf ("patch_tesselator::vertex (%g, %g, %g)\n", v->coords(0), v->coords(1), v->coords(2)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
464 |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
465 // NOTE: OpenGL can re-order vertices. For "flat" coloring of FaceColor |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
466 // the first vertex must be identified in the draw_patch routine. |
18296
c8d6ca222bcc
Make "edgecolor"="flat" for patch objects compatible with Matlab.
Rik <rik@octave.org>
parents:
18295
diff
changeset
|
467 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
468 if (color_mode == INTERP || (color_mode == FLAT && ! is_filled ())) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
469 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
470 Matrix col = v->color; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
471 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
472 if (col.numel () == 3) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
473 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
474 glColor3dv (col.data ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
475 if (light_mode > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
476 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
477 float buf[4] = { 0, 0, 0, 1 }; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
478 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
479 for (int k = 0; k < 3; k++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
480 buf[k] = (v->ambient * col(k)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
481 glMaterialfv (LIGHT_MODE, GL_AMBIENT, buf); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
482 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
483 for (int k = 0; k < 3; k++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
484 buf[k] = (v->diffuse * col(k)); |
18133
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
485 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, buf); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
486 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
487 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
488 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
489 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
490 if (light_mode > 0 && (first || light_mode == GOURAUD)) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
491 glNormal3dv (v->normal.data ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
492 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
493 glVertex3dv (v->coords.data ()); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
494 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
495 first = false; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
496 } |
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
|
497 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
498 void combine (GLdouble xyz[3], void *data[4], GLfloat w[4], void **out_data) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
499 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
500 //printf ("patch_tesselator::combine\n"); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
501 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
502 vertex_data::vertex_data_rep *v[4]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
503 int vmax = 4; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
504 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
505 for (int i = 0; i < 4; i++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
506 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
507 v[i] = reinterpret_cast<vertex_data::vertex_data_rep *> (data[i]); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
508 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
509 if (vmax == 4 && ! v[i]) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
510 vmax = i; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
511 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
512 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
513 Matrix vv (1, 3, 0.0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
514 Matrix cc; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
515 Matrix nn (1, 3, 0.0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
516 double aa = 0.0; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
517 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
518 vv(0) = xyz[0]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
519 vv(1) = xyz[1]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
520 vv(2) = xyz[2]; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
521 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
522 if (v[0]->color.numel ()) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
523 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
524 cc.resize (1, 3, 0.0); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
525 for (int ic = 0; ic < 3; ic++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
526 for (int iv = 0; iv < vmax; iv++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
527 cc(ic) += (w[iv] * v[iv]->color (ic)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
528 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
529 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
530 if (v[0]->normal.numel () > 0) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
531 { |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
532 for (int in = 0; in < 3; in++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
533 for (int iv = 0; iv < vmax; iv++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
534 nn(in) += (w[iv] * v[iv]->normal (in)); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
535 } |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
536 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
537 for (int iv = 0; iv < vmax; iv++) |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
538 aa += (w[iv] * v[iv]->alpha); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
539 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
540 vertex_data new_v (vv, cc, nn, aa, v[0]->ambient, v[0]->diffuse, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
541 v[0]->specular, v[0]->specular_exp); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
542 tmp_vdata.push_back (new_v); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
543 |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
544 *out_data = new_v.get_rep (); |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
545 } |
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
|
546 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
547 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
548 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
549 // No copying! |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
550 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
551 patch_tesselator (const patch_tesselator&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
552 |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
553 patch_tesselator& operator = (const patch_tesselator&); |
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
554 |
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
|
555 opengl_renderer *renderer; |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
556 int color_mode; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
557 int light_mode; |
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
|
558 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
|
559 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
|
560 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
|
561 }; |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
562 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
563 void |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
564 opengl_renderer::draw (const graphics_object& go, bool toplevel) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
565 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
566 if (! go.valid_object ()) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
567 return; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
568 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
569 const base_properties& props = go.get_properties (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
570 |
14838
1abb7c083171
Make sure opengl_renderer::toolkit is defined.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
14138
diff
changeset
|
571 if (! toolkit) |
1abb7c083171
Make sure opengl_renderer::toolkit is defined.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
14138
diff
changeset
|
572 toolkit = props.get_toolkit (); |
1abb7c083171
Make sure opengl_renderer::toolkit is defined.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
14138
diff
changeset
|
573 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
574 if (go.isa ("figure")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
575 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
|
576 else if (go.isa ("axes")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
577 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
|
578 else if (go.isa ("line")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
579 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
|
580 else if (go.isa ("surface")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
581 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
|
582 else if (go.isa ("patch")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
583 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
|
584 else if (go.isa ("hggroup")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
585 draw_hggroup (dynamic_cast<const hggroup::properties&> (props)); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
586 else if (go.isa ("text")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
587 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
|
588 else if (go.isa ("image")) |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
589 draw_image (dynamic_cast<const image::properties&> (props)); |
13703
22ce748da25f
Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
590 else if (go.isa ("uimenu") || go.isa ("uicontrol") |
22ce748da25f
Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
591 || go.isa ("uicontextmenu") || go.isa ("uitoolbar") |
22ce748da25f
Add missing UI objects: uicontextmenu, uitoolbar, uipushtool and uitoggletool.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13281
diff
changeset
|
592 || go.isa ("uipushtool") || go.isa ("uitoggletool")) |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
593 /* SKIP */; |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
594 else if (go.isa ("uipanel")) |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
595 { |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
596 if (toplevel) |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
597 draw_uipanel (dynamic_cast<const uipanel::properties&> (props), go); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
598 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
599 else |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
600 { |
15466
d174210ce1ec
use ' instead of ` in error messages, warnings and most comments
John W. Eaton <jwe@octave.org>
parents:
14138
diff
changeset
|
601 warning ("opengl_renderer: cannot render object of type '%s'", |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
602 props.graphics_object_name ().c_str ()); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
603 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
604 } |
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 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
607 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
|
608 { |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
609 // Initialize OpenGL context |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
610 |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
611 init_gl_context (props.is___enhanced__ (), props.get_color_rgb ()); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
612 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
613 // Draw children |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
614 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
615 draw (props.get_all_children (), false); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
616 } |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
617 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
618 void |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
619 opengl_renderer::draw_uipanel (const uipanel::properties& props, |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
620 const graphics_object& go) |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
621 { |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
622 graphics_object fig = go.get_ancestor ("figure"); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
623 const figure::properties& figProps = |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
624 dynamic_cast<const figure::properties&> (fig.get_properties ()); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
625 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
626 // Initialize OpenGL context |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
627 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
628 init_gl_context (figProps.is___enhanced__ (), |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
629 props.get_backgroundcolor_rgb ()); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
630 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
631 // Draw children |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
632 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
633 draw (props.get_all_children (), false); |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
634 } |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
635 |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
636 void |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
637 opengl_renderer::init_gl_context (bool enhanced, const Matrix& c) |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
638 { |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
639 // Initialize OpenGL context |
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
640 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
641 glEnable (GL_DEPTH_TEST); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
642 glDepthFunc (GL_LEQUAL); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
643 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
|
644 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
|
645 glEnable (GL_NORMALIZE); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
646 |
13281
834f904a3dcb
Add support for full asynchronous graphics toolkit running in a separate
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13219
diff
changeset
|
647 if (enhanced) |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
648 { |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
649 glEnable (GL_BLEND); |
18804
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
650 glEnable (GL_MULTISAMPLE); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
651 GLint iMultiSample, iNumSamples; |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
652 glGetIntegerv (GL_SAMPLE_BUFFERS, &iMultiSample); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
653 glGetIntegerv (GL_SAMPLES, &iNumSamples); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
654 if (iMultiSample != GL_TRUE || iNumSamples == 0) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
655 { |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
656 // MultiSample not implemented. Use old-style anti-aliasing |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
657 glDisable (GL_MULTISAMPLE); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
658 glEnable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
659 glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
660 } |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
661 } |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
662 else |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
663 { |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
664 glDisable (GL_BLEND); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
665 glDisable (GL_LINE_SMOOTH); |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
666 } |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
667 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
668 // Clear background |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
669 |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14838
diff
changeset
|
670 if (c.length () >= 3) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
671 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
672 glClearColor (c(0), c(1), c(2), 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
673 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
|
674 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
675 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
676 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
677 void |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
678 opengl_renderer::render_grid (const std::string& gridstyle, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
679 const Matrix& ticks, double lim1, double lim2, |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
680 double p1, double p1N, double p2, double p2N, |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
681 int xyz, bool is_3D) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
682 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
683 set_linestyle (gridstyle, true); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
684 glBegin (GL_LINES); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
685 for (int i = 0; i < ticks.numel (); i++) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
686 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
687 double val = ticks(i); |
18754
04adeda9b83d
Revert ea22cf3e370b and 60df2fd04293 plotting grid/ticks over axes lines.
Rik <rik@octave.org>
parents:
18735
diff
changeset
|
688 if (lim1 <= val && val <= lim2) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
689 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
690 if (xyz == X_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
691 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
692 glVertex3d (val, p1N, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
693 glVertex3d (val, p1, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
694 if (is_3D) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
695 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
696 glVertex3d (val, p1, p2N); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
697 glVertex3d (val, p1, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
698 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
699 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
700 else if (xyz == Y_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
701 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
702 glVertex3d (p1N, val, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
703 glVertex3d (p1, val, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
704 if (is_3D) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
705 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
706 glVertex3d (p1, val, p2N); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
707 glVertex3d (p1, val, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
708 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
709 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
710 else if (xyz == Z_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
711 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
712 glVertex3d (p1N, p2, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
713 glVertex3d (p1, p2, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
714 glVertex3d (p1, p2N, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
715 glVertex3d (p1, p2, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
716 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
717 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
718 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
719 glEnd (); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
720 set_linestyle ("-", true); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
721 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
722 |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
723 void |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
724 opengl_renderer::render_tickmarks (const Matrix& ticks, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
725 double lim1, double lim2, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
726 double p1, double p1N, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
727 double p2, double p2N, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
728 double dx, double dy, double dz, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
729 int xyz, bool mirror) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
730 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
731 glBegin (GL_LINES); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
732 |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
733 for (int i = 0; i < ticks.numel (); i++) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
734 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
735 double val = ticks(i); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
736 |
18754
04adeda9b83d
Revert ea22cf3e370b and 60df2fd04293 plotting grid/ticks over axes lines.
Rik <rik@octave.org>
parents:
18735
diff
changeset
|
737 if (lim1 <= val && val <= lim2) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
738 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
739 if (xyz == X_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
740 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
741 glVertex3d (val, p1, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
742 glVertex3d (val, p1+dy, p2+dz); |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
743 if (mirror) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
744 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
745 glVertex3d (val, p1N, p2N); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
746 glVertex3d (val, p1N-dy, p2N-dz); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
747 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
748 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
749 else if (xyz == Y_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
750 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
751 glVertex3d (p1, val, p2); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
752 glVertex3d (p1+dx, val, p2+dz); |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
753 if (mirror) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
754 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
755 glVertex3d (p1N, val, p2N); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
756 glVertex3d (p1N-dx, val, p2N-dz); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
757 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
758 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
759 else if (xyz == Z_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
760 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
761 glVertex3d (p1, p2, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
762 glVertex3d (p1+dx, p2+dy, val); |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
763 if (mirror) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
764 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
765 glVertex3d (p1N, p2N, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
766 glVertex3d (p1N-dx, p2N-dy, val); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
767 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
768 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
769 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
770 } |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
771 |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
772 glEnd (); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
773 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
774 |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
775 void |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
776 opengl_renderer::render_ticktexts (const Matrix& ticks, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
777 const string_vector& ticklabels, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
778 double lim1, double lim2, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
779 double p1, double p2, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
780 int xyz, int ha, int va, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
781 int& wmax, int& hmax) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
782 { |
16855
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
783 int nticks = ticks.numel (); |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
784 int nlabels = ticklabels.numel (); |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
785 |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
786 if (nlabels == 0) |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
787 return; |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
788 |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
789 for (int i = 0; i < nticks; i++) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
790 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
791 double val = ticks(i); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
792 |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
793 if (lim1 <= val && val <= lim2) |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
794 { |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
795 Matrix b; |
16855
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
796 |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
797 std::string label (ticklabels(i % nlabels)); |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
798 label.erase (0, label.find_first_not_of (" ")); |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
799 label = label.substr (0, label.find_last_not_of (" ")+1); |
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
800 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
801 // FIXME: As tick text is transparent, shouldn't it be |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
802 // drawn after axes object, for correct rendering? |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
803 if (xyz == X_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
804 { |
16855
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
805 b = render_text (label, val, p1, p2, ha, va); |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
806 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
807 else if (xyz == Y_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
808 { |
16855
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
809 b = render_text (label, p1, val, p2, ha, va); |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
810 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
811 else if (xyz == Z_AXIS) |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
812 { |
16855
359ac80ecb30
Trim ticklabel strings and repeat them as necessary to fill tick marks (bug #39344)
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
813 b = render_text (label, p1, p2, val, ha, va); |
12126
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
814 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
815 |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
816 wmax = std::max (wmax, static_cast<int> (b(2))); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
817 hmax = std::max (hmax, static_cast<int> (b(3))); |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
818 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
819 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
820 } |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
821 |
85f9a5b211fd
restructuring draw_axes, enabling minor ticks/grid in fltk, closing bug 31800
Konstantinos Poulios <logari81@googlemail.com>
parents:
12125
diff
changeset
|
822 void |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
823 opengl_renderer::setup_opengl_transformation (const axes::properties& props) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
824 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
825 // setup OpenGL transformation |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
826 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
827 Matrix x_zlim = props.get_transform_zlim (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
828 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
829 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
|
830 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
|
831 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
832 Matrix x_mat1 = props.get_opengl_matrix_1 (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
833 Matrix x_mat2 = props.get_opengl_matrix_2 (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
834 |
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
|
835 #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
|
836 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
|
837 #else |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
838 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
|
839 #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
|
840 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
841 glGetIntegerv (GL_VIEWPORT, vw); |
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 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
844 glLoadIdentity (); |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
845 glScaled (1, 1, -1); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
846 glMultMatrixd (x_mat1.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
847 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
848 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
849 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
|
850 glMultMatrixd (x_mat2.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
851 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
852 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
853 glClear (GL_DEPTH_BUFFER_BIT); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
854 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
855 // store axes transformation data |
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 xform = props.get_transform (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
858 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
859 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
860 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
861 opengl_renderer::draw_axes_planes (const axes::properties& props) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
862 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
863 Matrix axe_color = props.get_color_rgb (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
864 if (axe_color.numel () == 0 || ! props.is_visible ()) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
865 return; |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
866 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
867 double xPlane = props.get_xPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
868 double yPlane = props.get_yPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
869 double zPlane = props.get_zPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
870 double xPlaneN = props.get_xPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
871 double yPlaneN = props.get_yPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
872 double zPlaneN = props.get_zPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
873 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
874 // Axes planes |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
875 set_color (axe_color); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
876 set_polygon_offset (true, 2.5); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
877 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
878 glBegin (GL_QUADS); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
879 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
880 // X plane |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
881 glVertex3d (xPlane, yPlaneN, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
882 glVertex3d (xPlane, yPlane, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
883 glVertex3d (xPlane, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
884 glVertex3d (xPlane, yPlaneN, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
885 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
886 // Y plane |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
887 glVertex3d (xPlaneN, yPlane, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
888 glVertex3d (xPlane, yPlane, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
889 glVertex3d (xPlane, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
890 glVertex3d (xPlaneN, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
891 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
892 // Z plane |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
893 glVertex3d (xPlaneN, yPlaneN, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
894 glVertex3d (xPlane, yPlaneN, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
895 glVertex3d (xPlane, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
896 glVertex3d (xPlaneN, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
897 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
898 glEnd (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
899 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
900 set_polygon_offset (false); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
901 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
902 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
903 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
904 opengl_renderer::draw_axes_boxes (const axes::properties& props) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
905 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
906 if (! props.is_visible ()) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
907 return; |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
908 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
909 bool xySym = props.get_xySym (); |
18701
e42843ceff48
Fix axes bounding box not obeying 'layer' property.
Rik <rik@octave.org>
parents:
18692
diff
changeset
|
910 bool layer2Dtop = props.get_layer2Dtop (); |
e42843ceff48
Fix axes bounding box not obeying 'layer' property.
Rik <rik@octave.org>
parents:
18692
diff
changeset
|
911 bool is2d = props.get_is2D (); |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
912 double xPlane = props.get_xPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
913 double yPlane = props.get_yPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
914 double zPlane = props.get_zPlane (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
915 double xPlaneN = props.get_xPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
916 double yPlaneN = props.get_yPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
917 double zPlaneN = props.get_zPlaneN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
918 double xpTick = props.get_xpTick (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
919 double ypTick = props.get_ypTick (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
920 double zpTick = props.get_zpTick (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
921 double xpTickN = props.get_xpTickN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
922 double ypTickN = props.get_ypTickN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
923 double zpTickN = props.get_zpTickN (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
924 |
13216 | 925 bool plotyy = (props.has_property ("__plotyy_axes__")); |
12443
24b38afd6a45
fix plotyy bugs #31800, #32211
Konstantinos Poulios <logari81@googlemail.com>
parents:
12334
diff
changeset
|
926 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
927 // Axes box |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
928 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
929 set_linestyle ("-", true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
930 set_linewidth (props.get_linewidth ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
931 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
932 glBegin (GL_LINES); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
933 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
934 if (layer2Dtop) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
935 std::swap (zpTick, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
936 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
937 // X box |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
938 set_color (props.get_xcolor_rgb ()); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
939 glVertex3d (xPlaneN, ypTick, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
940 glVertex3d (xPlane, ypTick, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
941 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
942 if (props.is_box ()) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
943 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
944 glVertex3d (xPlaneN, ypTickN, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
945 glVertex3d (xPlane, ypTickN, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
946 if (! is2d) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
947 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
948 glVertex3d (xPlaneN, ypTickN, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
949 glVertex3d (xPlane, ypTickN, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
950 glVertex3d (xPlaneN, ypTick, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
951 glVertex3d (xPlane, ypTick, zpTickN); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
952 } |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
953 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
954 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
955 // Y box |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
956 set_color (props.get_ycolor_rgb ()); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
957 glVertex3d (xpTick, yPlaneN, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
958 glVertex3d (xpTick, yPlane, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
959 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
960 if (props.is_box () && ! plotyy) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
961 { |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
962 glVertex3d (xpTickN, yPlaneN, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
963 glVertex3d (xpTickN, yPlane, zpTick); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
964 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
965 if (! is2d) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
966 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
967 glVertex3d (xpTickN, yPlaneN, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
968 glVertex3d (xpTickN, yPlane, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
969 glVertex3d (xpTick, yPlaneN, zpTickN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
970 glVertex3d (xpTick, yPlane, zpTickN); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
971 } |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
972 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
973 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
974 // Z box |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
975 set_color (props.get_zcolor_rgb ()); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
976 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
977 if (xySym) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
978 { |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
979 glVertex3d (xPlaneN, yPlane, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
980 glVertex3d (xPlaneN, yPlane, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
981 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
982 else |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
983 { |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
984 glVertex3d (xPlane, yPlaneN, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
985 glVertex3d (xPlane, yPlaneN, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
986 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
987 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
988 if (props.is_box ()) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
989 { |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
990 glVertex3d (xPlane, yPlane, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
991 glVertex3d (xPlane, yPlane, zPlane); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
992 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
993 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
994 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
995 glVertex3d (xPlane, yPlaneN, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
996 glVertex3d (xPlane, yPlaneN, zPlane); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
997 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
998 else |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
999 { |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1000 glVertex3d (xPlaneN, yPlane, zPlaneN); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1001 glVertex3d (xPlaneN, yPlane, zPlane); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1002 } |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1003 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1004 glVertex3d (xPlaneN, yPlaneN, zPlaneN); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1005 glVertex3d (xPlaneN, yPlaneN, zPlane); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1006 } |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1007 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1008 glEnd (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1009 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1010 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1011 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1012 opengl_renderer::draw_axes_x_grid (const axes::properties& props) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1013 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1014 int xstate = props.get_xstate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1015 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1016 if (props.is_visible () && xstate != AXE_DEPTH_DIR) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1017 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1018 int zstate = props.get_zstate (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1019 bool x2Dtop = props.get_x2Dtop (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1020 bool layer2Dtop = props.get_layer2Dtop (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1021 bool xyzSym = props.get_xyzSym (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1022 bool nearhoriz = props.get_nearhoriz (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1023 double xticklen = props.get_xticklen (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1024 double xtickoffset = props.get_xtickoffset (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1025 double fy = props.get_fy (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1026 double fz = props.get_fz (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1027 double x_min = props.get_x_min (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1028 double x_max = props.get_x_max (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1029 double yPlane = props.get_yPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1030 double yPlaneN = props.get_yPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1031 double ypTick = props.get_ypTick (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1032 double ypTickN = props.get_ypTickN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1033 double zPlane = props.get_zPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1034 double zPlaneN = props.get_zPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1035 double zpTick = props.get_zpTick (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1036 double zpTickN = props.get_zpTickN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1037 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1038 // X grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1039 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1040 std::string gridstyle = props.get_gridlinestyle (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1041 std::string minorgridstyle = props.get_minorgridlinestyle (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1042 bool do_xgrid = (props.is_xgrid () && (gridstyle != "none")); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1043 bool do_xminorgrid = (props.is_xminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1044 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1045 bool do_xminortick = props.is_xminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1046 Matrix xticks = xform.xscale (props.get_xtick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1047 Matrix xmticks = xform.xscale (props.get_xmtick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1048 string_vector xticklabels = props.get_xticklabel ().all_strings (); |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1049 int wmax = 0; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1050 int hmax = 0; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1051 bool tick_along_z = nearhoriz || xisinf (fy); |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1052 bool mirror = props.is_box () && xstate != AXE_ANY_DIR; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1053 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1054 set_color (props.get_xcolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1055 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1056 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1057 if (do_xgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1058 render_grid (gridstyle, xticks, x_min, x_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1059 yPlane, yPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1060 zPlaneN, 0, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1061 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1062 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1063 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1064 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1065 render_tickmarks (xticks, x_min, x_max, ypTick, ypTick, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1066 zpTick, zpTickN, 0., 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1067 signum (zpTick-zpTickN)*fz*xticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1068 0, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1069 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1070 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1071 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1072 render_tickmarks (xticks, x_min, x_max, ypTick, ypTickN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1073 zpTick, zpTick, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1074 signum (ypTick-ypTickN)*fy*xticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1075 0., 0, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1076 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1077 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1078 // tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1079 if (xticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1080 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1081 int halign = (xstate == AXE_HORZ_DIR ? 1 : (xyzSym ? 0 : 2)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1082 int valign = (xstate == AXE_VERT_DIR ? 1 : (x2Dtop ? 0 : 2)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1083 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1084 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1085 render_ticktexts (xticks, xticklabels, x_min, x_max, ypTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1086 zpTick+signum (zpTick-zpTickN)*fz*xtickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1087 0, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1088 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1089 render_ticktexts (xticks, xticklabels, x_min, x_max, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1090 ypTick+signum (ypTick-ypTickN)*fy*xtickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1091 zpTick, 0, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1092 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1093 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1094 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1095 if (do_xminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1096 render_grid (minorgridstyle, xmticks, x_min, x_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1097 yPlane, yPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1098 zPlaneN, 0, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1099 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1100 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1101 if (do_xminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1102 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1103 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1104 render_tickmarks (xmticks, x_min, x_max, ypTick, ypTick, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1105 zpTick, zpTickN, 0., 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1106 signum (zpTick-zpTickN)*fz*xticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1107 0, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1108 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1109 render_tickmarks (xmticks, x_min, x_max, ypTick, ypTickN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1110 zpTick, zpTick, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1111 signum (ypTick-ypTickN)*fy*xticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1112 0., 0, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1113 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1114 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1115 gh_manager::get_object (props.get_xlabel ()).set ("visible", "on"); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1116 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1117 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1118 gh_manager::get_object (props.get_xlabel ()).set ("visible", "off"); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1119 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1120 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1121 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1122 opengl_renderer::draw_axes_y_grid (const axes::properties& props) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1123 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1124 int ystate = props.get_ystate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1125 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1126 if (ystate != AXE_DEPTH_DIR && props.is_visible ()) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1127 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1128 int zstate = props.get_zstate (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1129 bool y2Dright = props.get_y2Dright (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1130 bool layer2Dtop = props.get_layer2Dtop (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1131 bool xyzSym = props.get_xyzSym (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1132 bool nearhoriz = props.get_nearhoriz (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1133 double yticklen = props.get_yticklen (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1134 double ytickoffset = props.get_ytickoffset (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1135 double fx = props.get_fx (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1136 double fz = props.get_fz (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1137 double xPlane = props.get_xPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1138 double xPlaneN = props.get_xPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1139 double xpTick = props.get_xpTick (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1140 double xpTickN = props.get_xpTickN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1141 double y_min = props.get_y_min (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1142 double y_max = props.get_y_max (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1143 double zPlane = props.get_zPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1144 double zPlaneN = props.get_zPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1145 double zpTick = props.get_zpTick (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1146 double zpTickN = props.get_zpTickN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1147 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1148 // Y grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1149 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1150 std::string gridstyle = props.get_gridlinestyle (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1151 std::string minorgridstyle = props.get_minorgridlinestyle (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1152 bool do_ygrid = (props.is_ygrid () && (gridstyle != "none")); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1153 bool do_yminorgrid = (props.is_yminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1154 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1155 bool do_yminortick = props.is_yminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1156 Matrix yticks = xform.yscale (props.get_ytick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1157 Matrix ymticks = xform.yscale (props.get_ymtick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1158 string_vector yticklabels = props.get_yticklabel ().all_strings (); |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1159 int wmax = 0; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1160 int hmax = 0; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1161 bool tick_along_z = nearhoriz || xisinf (fx); |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1162 bool mirror = props.is_box () && ystate != AXE_ANY_DIR |
13216 | 1163 && (! props.has_property ("__plotyy_axes__")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1164 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1165 set_color (props.get_ycolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1166 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1167 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1168 if (do_ygrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1169 render_grid (gridstyle, yticks, y_min, y_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1170 xPlane, xPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1171 zPlaneN, 1, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1172 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1173 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1174 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1175 render_tickmarks (yticks, y_min, y_max, xpTick, xpTick, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1176 zpTick, zpTickN, 0., 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1177 signum (zpTick-zpTickN)*fz*yticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1178 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1179 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1180 render_tickmarks (yticks, y_min, y_max, xpTick, xpTickN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1181 zpTick, zpTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1182 signum (xPlaneN-xPlane)*fx*yticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1183 0., 0., 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1184 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1185 // tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1186 if (yticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1187 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1188 int halign = (ystate == AXE_HORZ_DIR |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1189 ? 1 : (!xyzSym || y2Dright ? 0 : 2)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1190 int valign = (ystate == AXE_VERT_DIR ? 1 : 2); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1191 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1192 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1193 render_ticktexts (yticks, yticklabels, y_min, y_max, xpTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1194 zpTick+signum (zpTick-zpTickN)*fz*ytickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1195 1, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1196 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1197 render_ticktexts (yticks, yticklabels, y_min, y_max, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1198 xpTick+signum (xpTick-xpTickN)*fx*ytickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1199 zpTick, 1, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1200 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1201 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1202 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1203 if (do_yminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1204 render_grid (minorgridstyle, ymticks, y_min, y_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1205 xPlane, xPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1206 zPlaneN, 1, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1207 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1208 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1209 if (do_yminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1210 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1211 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1212 render_tickmarks (ymticks, y_min, y_max, xpTick, xpTick, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1213 zpTick, zpTickN, 0., 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1214 signum (zpTick-zpTickN)*fz*yticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1215 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1216 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1217 render_tickmarks (ymticks, y_min, y_max, xpTick, xpTickN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1218 zpTick, zpTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1219 signum (xpTick-xpTickN)*fx*yticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1220 0., 0., 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1221 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1222 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1223 gh_manager::get_object (props.get_ylabel ()).set ("visible", "on"); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1224 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1225 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1226 gh_manager::get_object (props.get_ylabel ()).set ("visible", "off"); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1227 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1228 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1229 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1230 opengl_renderer::draw_axes_z_grid (const axes::properties& props) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1231 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1232 int zstate = props.get_zstate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1233 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1234 if (zstate != AXE_DEPTH_DIR && props.is_visible ()) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1235 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1236 bool xySym = props.get_xySym (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1237 bool zSign = props.get_zSign (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1238 double zticklen = props.get_zticklen (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1239 double ztickoffset = props.get_ztickoffset (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1240 double fx = props.get_fx (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1241 double fy = props.get_fy (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1242 double xPlane = props.get_xPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1243 double xPlaneN = props.get_xPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1244 double yPlane = props.get_yPlane (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1245 double yPlaneN = props.get_yPlaneN (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1246 double z_min = props.get_z_min (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1247 double z_max = props.get_z_max (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1248 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1249 // Z Grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1250 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1251 std::string gridstyle = props.get_gridlinestyle (); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1252 std::string minorgridstyle = props.get_minorgridlinestyle (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1253 bool do_zgrid = (props.is_zgrid () && (gridstyle != "none")); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1254 bool do_zminorgrid = (props.is_zminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1255 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1256 bool do_zminortick = props.is_zminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1257 Matrix zticks = xform.zscale (props.get_ztick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1258 Matrix zmticks = xform.zscale (props.get_zmtick ().matrix_value ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1259 string_vector zticklabels = props.get_zticklabel ().all_strings (); |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1260 int wmax = 0; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1261 int hmax = 0; |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1262 bool mirror = props.is_box () && zstate != AXE_ANY_DIR; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1263 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1264 set_color (props.get_zcolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1265 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1266 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1267 if (do_zgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1268 render_grid (gridstyle, zticks, z_min, z_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1269 xPlane, xPlaneN, yPlane, yPlaneN, 2, true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1270 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1271 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1272 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1273 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1274 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1275 render_tickmarks (zticks, z_min, z_max, xPlaneN, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1276 yPlane, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1277 signum (xPlaneN-xPlane)*fx*zticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1278 0., 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1279 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1280 render_tickmarks (zticks, z_min, z_max, xPlaneN, xPlaneN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1281 yPlane, yPlane, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1282 signum (yPlane-yPlaneN)*fy*zticklen, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1283 0., 2, false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1284 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1285 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1286 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1287 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1288 render_tickmarks (zticks, z_min, z_max, xPlaneN, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1289 yPlaneN, yPlane, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1290 signum (yPlaneN-yPlane)*fy*zticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1291 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1292 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1293 render_tickmarks (zticks, z_min, z_max, xPlane, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1294 yPlaneN, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1295 signum (xPlane-xPlaneN)*fx*zticklen, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1296 0., 0., 2, false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1297 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1298 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1299 // FIXME: tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1300 if (zticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1301 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1302 int halign = 2; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1303 int valign = (zstate == AXE_VERT_DIR ? 1 : (zSign ? 3 : 2)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1304 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1305 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1306 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1307 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1308 render_ticktexts (zticks, zticklabels, z_min, z_max, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1309 xPlaneN+signum (xPlaneN-xPlane)*fx*ztickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1310 yPlane, 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1311 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1312 render_ticktexts (zticks, zticklabels, z_min, z_max, xPlaneN, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1313 yPlane+signum (yPlane-yPlaneN)*fy*ztickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1314 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1315 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1316 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1317 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1318 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1319 render_ticktexts (zticks, zticklabels, z_min, z_max, xPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1320 yPlaneN+signum (yPlaneN-yPlane)*fy*ztickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1321 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1322 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1323 render_ticktexts (zticks, zticklabels, z_min, z_max, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1324 xPlane+signum (xPlane-xPlaneN)*fx*ztickoffset, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1325 yPlaneN, 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1326 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1327 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1328 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1329 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1330 if (do_zminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1331 render_grid (minorgridstyle, zmticks, z_min, z_max, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1332 xPlane, xPlaneN, yPlane, yPlaneN, 2, true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1333 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1334 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1335 if (do_zminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1336 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1337 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1338 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1339 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1340 render_tickmarks (zmticks, z_min, z_max, xPlaneN, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1341 yPlane, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1342 signum (xPlaneN-xPlane)*fx*zticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1343 0., 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1344 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1345 render_tickmarks (zmticks, z_min, z_max, xPlaneN, xPlaneN, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1346 yPlane, yPlane, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1347 signum (yPlane-yPlaneN)*fy*zticklen/2, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1348 0., 2, false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1349 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1350 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1351 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1352 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1353 render_tickmarks (zmticks, z_min, z_max, xPlane, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1354 yPlaneN, yPlane, 0., |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1355 signum (yPlaneN-yPlane)*fy*zticklen/2, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1356 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1357 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1358 render_tickmarks (zmticks, z_min, z_max, xPlane, xPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1359 yPlaneN, yPlaneN, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1360 signum (xPlane-xPlaneN)*fx*zticklen/2, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1361 0., 0., 2, false); |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12965
diff
changeset
|
1362 } |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1363 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1364 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1365 gh_manager::get_object (props.get_zlabel ()).set ("visible", "on"); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1366 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1367 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1368 gh_manager::get_object (props.get_zlabel ()).set ("visible", "off"); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1369 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1370 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1371 void |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1372 opengl_renderer::draw_axes_children (const axes::properties& props) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1373 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1374 // Children |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1375 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1376 Matrix children = props.get_all_children (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1377 std::list<graphics_object> obj_list; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1378 std::list<graphics_object>::iterator it; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1379 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1380 // 1st pass: draw light objects |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1381 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1382 // Start with the last element of the array of child objects to |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1383 // display them in the order they were added to the array. |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1384 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1385 for (octave_idx_type i = children.numel () - 1; i >= 0; i--) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1386 { |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1387 graphics_object go = gh_manager::get_object (children(i)); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1388 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1389 if (go.get_properties ().is_visible ()) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1390 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1391 if (go.isa ("light")) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1392 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1393 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1394 obj_list.push_back (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1395 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1396 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1397 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1398 // 2nd pass: draw other objects (with units set to "data") |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1399 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1400 it = obj_list.begin (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1401 while (it != obj_list.end ()) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1402 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1403 graphics_object go = (*it); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1404 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1405 // FIXME: check whether object has "units" property and it is set |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1406 // to "data" |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1407 if (! go.isa ("text") || go.get ("units").string_value () == "data") |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1408 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1409 set_clipping (go.get_properties ().is_clipping ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1410 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1411 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1412 it = obj_list.erase (it); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1413 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1414 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1415 it++; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1416 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1417 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1418 // 3rd pass: draw remaining objects |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1419 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1420 glDisable (GL_DEPTH_TEST); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1421 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1422 for (it = obj_list.begin (); it != obj_list.end (); it++) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1423 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1424 graphics_object go = (*it); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1425 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1426 set_clipping (go.get_properties ().is_clipping ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1427 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1428 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1429 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1430 glEnable (GL_DEPTH_TEST); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1431 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1432 set_clipping (false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1433 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1434 // FIXME: finalize rendering (transparency processing) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1435 // FIXME: draw zoom box, if needed |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1436 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1437 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1438 void |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1439 opengl_renderer::draw_axes (const axes::properties& props) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1440 { |
17726
d449f4668b72
Print warning and abort plot if data range > max float (bug #40246)
Rik <rik@octave.org>
parents:
17651
diff
changeset
|
1441 static double floatmax = std::numeric_limits<float>::max (); |
d449f4668b72
Print warning and abort plot if data range > max float (bug #40246)
Rik <rik@octave.org>
parents:
17651
diff
changeset
|
1442 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1443 double x_min = props.get_x_min (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1444 double x_max = props.get_x_max (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1445 double y_min = props.get_y_min (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1446 double y_max = props.get_y_max (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1447 double z_min = props.get_z_min (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1448 double z_max = props.get_z_max (); |
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1449 |
17732
dcc88366f94b
Print warning and abort FLTK plot if data values < -maxfloat (bug #40246)
Rik <rik@octave.org>
parents:
17728
diff
changeset
|
1450 if (x_max > floatmax || y_max > floatmax || z_max > floatmax |
dcc88366f94b
Print warning and abort FLTK plot if data values < -maxfloat (bug #40246)
Rik <rik@octave.org>
parents:
17728
diff
changeset
|
1451 || x_min < -floatmax || y_min < -floatmax || z_min < -floatmax) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1452 { |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
1453 warning ("opengl_renderer: data values greater than float capacity. (1) Scale data, or (2) Use gnuplot"); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1454 return; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1455 } |
17726
d449f4668b72
Print warning and abort plot if data range > max float (bug #40246)
Rik <rik@octave.org>
parents:
17651
diff
changeset
|
1456 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1457 setup_opengl_transformation (props); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1458 |
19631
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19081
diff
changeset
|
1459 // Disable line smoothing for axes |
18804
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1460 GLboolean antialias; |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1461 glGetBooleanv (GL_LINE_SMOOTH, &antialias); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1462 if (antialias == GL_TRUE) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1463 glDisable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1464 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1465 // draw axes object |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1466 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1467 draw_axes_planes (props); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1468 draw_axes_boxes (props); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1469 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1470 set_font (props); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1471 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1472 draw_axes_x_grid (props); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1473 draw_axes_y_grid (props); |
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1474 draw_axes_z_grid (props); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1475 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1476 set_linestyle ("-"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1477 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1478 set_clipbox (x_min, x_max, y_min, y_max, z_min, z_max); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1479 |
18804
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1480 // Re-enable line smoothing for children |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1481 if (antialias == GL_TRUE) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1482 glEnable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18803
diff
changeset
|
1483 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1484 draw_axes_children (props); |
7825
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 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1487 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1488 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
|
1489 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1490 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
|
1491 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
|
1492 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
|
1493 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1494 bool has_z = (z.numel () > 0); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1495 int n = static_cast<int> (std::min (std::min (x.numel (), y.numel ()), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1496 (has_z ? z.numel () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1497 : std::numeric_limits<int>::max ()))); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1498 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
|
1499 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1500 std::vector<octave_uint8> clip (n); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1501 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1502 if (has_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1503 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1504 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
|
1505 else |
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 double z_mid = (zmin+zmax)/2; |
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 for (int i = 0; i < n; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1510 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
|
1511 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1512 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1513 if (! props.linestyle_is ("none")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1514 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1515 set_color (props.get_color_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1516 set_linestyle (props.get_linestyle (), false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1517 set_linewidth (props.get_linewidth ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1518 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1519 if (has_z) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1520 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1521 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1522 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1523 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1524 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1525 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1526 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1527 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1528 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1529 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1530 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1531 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
|
1532 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1533 glVertex3d (x(i), y(i), z(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1534 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1535 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1536 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1537 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1538 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1539 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1540 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1541 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1542 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1543 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1544 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1545 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1546 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1547 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1548 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1549 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1550 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1551 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1552 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1553 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1554 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1555 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1556 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1557 glVertex2d (x(i-1), y(i-1)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1558 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1559 glVertex2d (x(i), y(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1560 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1561 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1562 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1563 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1564 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1565 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1566 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1567 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1568 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1569 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1570 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1571 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1572 set_linewidth (0.5); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1573 set_linestyle ("-"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1574 } |
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 set_clipping (false); |
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 (! props.marker_is ("none") && |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1579 ! (props.markeredgecolor_is ("none") |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1580 && props.markerfacecolor_is ("none"))) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1581 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1582 Matrix lc, fc; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1583 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1584 if (props.markeredgecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1585 lc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1586 else if (! props.markeredgecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1587 lc = props.get_markeredgecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1588 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1589 if (props.markerfacecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1590 fc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1591 else if (! props.markerfacecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1592 fc = props.get_markerfacecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1593 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1594 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
|
1595 props.get_linewidth ()); |
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 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1598 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1599 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
|
1600 draw_marker (x(i), y(i), |
18692
75ec138ba53b
Fix Z-order stacking of line markers and other graphic objects (bug #40054).
Rik <rik@octave.org>
parents:
18296
diff
changeset
|
1601 has_z ? z(i) : 0.0, |
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
|
1602 lc, fc); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1603 } |
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 end_marker (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1606 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1607 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1608 set_clipping (props.is_clipping ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1609 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1610 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1611 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1612 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
|
1613 { |
9681 | 1614 const Matrix x = xform.xscale (props.get_xdata ().matrix_value ()); |
1615 const Matrix y = xform.yscale (props.get_ydata ().matrix_value ()); | |
1616 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
|
1617 |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1618 int zr = z.rows (); |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1619 int zc = z.columns (); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1620 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1621 NDArray c; |
9681 | 1622 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
|
1623 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1624 // FIXME: handle transparency |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1625 Matrix a; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1626 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1627 if (props.facelighting_is ("phong") || props.edgelighting_is ("phong")) |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
1628 warning ("opengl_renderer: phong light model not supported"); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1629 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1630 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
|
1631 (props.facecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1632 (props.facecolor_is ("interp") ? 2 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1633 (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
|
1634 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
|
1635 (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
|
1636 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
|
1637 (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
|
1638 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
|
1639 (props.edgecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1640 (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
|
1641 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
|
1642 (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
|
1643 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
|
1644 (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
|
1645 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1646 Matrix fcolor = (fc_mode == TEXTURE ? Matrix (1, 3, 1.0) |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1647 : props.get_facecolor_rgb ()); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1648 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
|
1649 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1650 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
|
1651 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
|
1652 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
|
1653 float se = props.get_specularexponent (); |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1654 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
|
1655 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
|
1656 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1657 opengl_texture tex; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1658 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1659 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
|
1660 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
|
1661 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
|
1662 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1663 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
|
1664 |
17558
e48a22b94727
Don't plot NaN values in cdata (bug #40114).
Rik <rik@octave.org>
parents:
17269
diff
changeset
|
1665 if ((fc_mode > 0 && fc_mode < 3) || ec_mode > 0) |
e48a22b94727
Don't plot NaN values in cdata (bug #40114).
Rik <rik@octave.org>
parents:
17269
diff
changeset
|
1666 c = props.get_color_data ().array_value (); |
e48a22b94727
Don't plot NaN values in cdata (bug #40114).
Rik <rik@octave.org>
parents:
17269
diff
changeset
|
1667 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1668 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
|
1669 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1670 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
|
1671 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1672 if (x_mat) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1673 i1 = i; |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1674 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1675 for (int j = 0; j < zc; j++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1676 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1677 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1678 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1679 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1680 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
|
1681 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1682 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1683 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1684 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
|
1685 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1686 // FIXME: implement alphadata conversion |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1687 //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
|
1688 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1689 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1690 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
|
1691 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1692 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
|
1693 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1694 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
|
1695 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
|
1696 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1697 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1698 // FIXME: good candidate for caching, |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
1699 // transferring pixel data to OpenGL is time consuming. |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1700 if (fc_mode == TEXTURE) |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1701 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
|
1702 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1703 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
|
1704 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1705 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1706 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1707 if (fc_mode == UNIFORM || fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1708 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1709 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1710 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1711 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1712 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1713 cb[i] = as * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1714 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1715 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1716 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1717 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1718 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1719 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1720 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1721 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1722 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1723 glEnable (GL_LIGHTING); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1724 glShadeModel ((fc_mode == INTERP || fl_mode == GOURAUD) ? GL_SMOOTH |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1725 : GL_FLAT); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1726 set_polygon_offset (true, 1); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1727 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1728 glEnable (GL_TEXTURE_2D); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1729 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1730 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1731 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1732 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1733 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1734 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1735 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1736 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1737 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1738 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1739 { |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1740 |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1741 if (clip(j-1, i-1) || clip(j, i-1) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1742 || clip(j-1, i) || clip(j, i)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1743 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1744 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1745 if (fc_mode == FLAT) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1746 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1747 // "flat" only needs color at lower-left vertex |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1748 if (! xfinite (c(j-1,i-1))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1749 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1750 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1751 else if (fc_mode == INTERP) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1752 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1753 // "interp" needs valid color at all 4 vertices |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1754 if (! (xfinite (c(j-1, i-1)) && xfinite (c(j, i-1)) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1755 && xfinite (c(j-1, i)) && xfinite (c(j, i)))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1756 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1757 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1758 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1759 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1760 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1761 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1762 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1763 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1764 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1765 glBegin (GL_QUADS); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1766 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1767 // Vertex 1 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1768 if (fc_mode == TEXTURE) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1769 tex.tex_coord (double (i-1) / (zc-1), |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1770 double (j-1) / (zr-1)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1771 else if (fc_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1772 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1773 // 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
|
1774 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1775 cb[k] = c(j-1, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1776 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1777 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1778 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1779 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1780 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1781 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1782 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1783 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1784 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1785 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
|
1786 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1787 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1788 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1789 if (fl_mode > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1790 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1791 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
|
1792 + 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
|
1793 + n(j-1,i-1,2) * n(j-1,i-1,2)); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1794 glNormal3d (n(j-1,i-1,0)/d, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1795 n(j-1,i-1,1)/d, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1796 n(j-1,i-1,2)/d); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1797 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1798 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
|
1799 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1800 // Vertex 2 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1801 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1802 tex.tex_coord (double (i) / (zc-1), double (j-1) / (zr-1)); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1803 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1804 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1805 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1806 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1807 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1808 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1809 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1810 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1811 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1812 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1813 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1814 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1815 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1816 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1817 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1818 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1819 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1820 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1821 if (fl_mode == GOURAUD) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1822 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1823 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
|
1824 + 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
|
1825 + 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
|
1826 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
|
1827 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1828 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1829 glVertex3d (x(j1,i), y(j-1,i2), z(j-1,i)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1830 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1831 // Vertex 3 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1832 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1833 tex.tex_coord (double (i) / (zc-1), double (j) / (zr-1)); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1834 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1835 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1836 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1837 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1838 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1839 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1840 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1841 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1842 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1843 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1844 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1845 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1846 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1847 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1848 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
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 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1851 if (fl_mode == GOURAUD) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1852 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1853 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
|
1854 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1855 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1856 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
|
1857 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1858 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
|
1859 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1860 // Vertex 4 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1861 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1862 tex.tex_coord (double (i-1) / (zc-1), double (j) / (zr-1)); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1863 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1864 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1865 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1866 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1867 glColor3fv (cb); |
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 if (fl_mode > 0) |
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1872 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1873 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1874 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1875 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1876 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1877 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1878 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1879 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1880 if (fl_mode == GOURAUD) |
10315
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 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
|
1883 + 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
|
1884 + 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
|
1885 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
|
1886 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1887 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
|
1888 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1889 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1890 } |
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 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1893 set_polygon_offset (false); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1894 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1895 glDisable (GL_TEXTURE_2D); |
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 (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1898 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1899 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1900 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1901 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1902 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1903 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1904 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1905 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1906 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
|
1907 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1908 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1909 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1910 if (ec_mode == UNIFORM) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1911 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1912 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1913 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1914 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1915 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1916 cb[i] = as * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1917 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1918 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1919 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1920 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1921 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1922 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1923 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1924 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1925 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1926 glEnable (GL_LIGHTING); |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1927 glShadeModel ((ec_mode == INTERP || el_mode == GOURAUD) ? GL_SMOOTH |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1928 : GL_FLAT); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1929 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1930 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1931 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1932 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1933 // Mesh along Y-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1934 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1935 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
|
1936 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1937 for (int i = 0; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1938 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1939 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1940 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1941 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1942 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1943 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1944 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1945 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1946 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1947 if (clip(j-1,i) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1948 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1949 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1950 if (ec_mode == FLAT) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1951 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1952 // "flat" only needs color at lower-left vertex |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1953 if (! xfinite (c(j-1,i))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1954 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1955 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1956 else if (ec_mode == INTERP) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1957 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1958 // "interp" needs valid color at both vertices |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1959 if (! (xfinite (c(j-1, i)) && xfinite (c(j, i)))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1960 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1961 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1962 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1963 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1964 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1965 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1966 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1967 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1968 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1969 glBegin (GL_LINES); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1970 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1971 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1972 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1973 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1974 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1975 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1976 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1977 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1978 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1979 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1980 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1981 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1982 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1983 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1984 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1985 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1986 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1987 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1988 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1989 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1990 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1991 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
|
1992 + 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
|
1993 + 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
|
1994 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
|
1995 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1996 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
|
1997 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1998 // Vertex 2 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
1999 if (ec_mode == INTERP) |
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2002 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2003 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2004 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2005 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2006 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2007 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2008 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2009 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2010 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2011 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2012 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2013 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2014 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2015 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2016 if (el_mode == GOURAUD) |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2017 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2018 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
|
2019 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2020 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2021 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
|
2022 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2023 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
|
2024 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2025 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2026 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2027 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2028 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2029 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2030 // Mesh along X-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2031 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2032 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
|
2033 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2034 for (int j = 0; j < zr; j++) |
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 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2037 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2038 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2039 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2040 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2041 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2042 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2043 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2044 if (clip(j,i-1) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2045 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2046 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2047 if (ec_mode == FLAT) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2048 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2049 // "flat" only needs color at lower-left vertex |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2050 if (! xfinite (c(j,i-1))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2051 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2052 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2053 else if (ec_mode == INTERP) |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2054 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2055 // "interp" needs valid color at both vertices |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2056 if (! (xfinite (c(j, i-1)) && xfinite (c(j, i)))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2057 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2058 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2059 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2060 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2061 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2062 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2063 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2064 } |
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 glBegin (GL_LINES); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2067 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2068 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2069 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2070 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2071 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2072 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2073 glColor3fv (cb); |
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 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2076 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2077 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2078 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2079 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2080 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2081 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2082 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2083 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2084 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2085 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2086 if (el_mode > 0) |
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 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
|
2089 + 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
|
2090 + 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
|
2091 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
|
2092 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2093 glVertex3d (x(j2,i-1), y(j,i1), z(j,i-1)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2094 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2095 // Vertex 2 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2096 if (ec_mode == INTERP) |
10315
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2099 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2100 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2101 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2102 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2103 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2104 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2105 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2106 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2109 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2110 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2111 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2112 } |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2113 if (el_mode == GOURAUD) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2114 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2115 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
|
2116 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2117 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2118 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
|
2119 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2120 glVertex3d (x(j2,i), y(j,i2), z(j,i)); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2121 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2122 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2123 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2124 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2125 } |
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 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2128 set_linewidth (0.5); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2129 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2130 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2131 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2132 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2133 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2134 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2135 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2136 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2137 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2138 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2139 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
|
2140 ! (props.markeredgecolor_is ("none") |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2141 && 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
|
2142 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2143 // 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
|
2144 // 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
|
2145 // 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
|
2146 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2147 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
|
2148 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
|
2149 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2150 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
|
2151 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
|
2152 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
|
2153 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2154 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
|
2155 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2156 mecolor = props.get_edgecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2157 do_edge = ! props.edgecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2158 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2159 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2160 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
|
2161 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2162 mfcolor = props.get_facecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2163 do_face = ! props.facecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2164 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2165 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2166 if ((mecolor.numel () == 0 || mfcolor.numel () == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2167 && c.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2168 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
|
2169 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2170 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
|
2171 props.get_linewidth ()); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2172 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2173 for (int i = 0; i < zc; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2174 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2175 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2176 i1 = i; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2177 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2178 for (int j = 0; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2179 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2180 if (clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2181 continue; |
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 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2184 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2185 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2186 if ((do_edge && mecolor.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2187 || (do_face && mfcolor.numel () == 0)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2188 { |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2189 if (! xfinite (c(j,i))) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2190 continue; // Skip NaNs in color data |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2191 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2192 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2193 cc(k) = c(j,i,k); |
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 |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2196 Matrix lc = (do_edge ? (mecolor.numel () == 0 ? cc : mecolor) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2197 : Matrix ()); |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2198 Matrix fc = (do_face ? (mfcolor.numel () == 0 ? cc : mfcolor) |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2199 : Matrix ()); |
10315
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 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
|
2202 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2203 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2204 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2205 end_marker (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2206 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2207 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2208 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
2209 // FIXME: global optimization (rendering, data structures...), |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
2210 // there is probably a smarter/faster/less-memory-consuming way to do this. |
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
|
2211 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2212 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
|
2213 { |
18935
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2214 // Do not render if the patch has incoherent data |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2215 std::string msg; |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2216 if (props.has_bad_data (msg)) |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2217 { |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2218 warning ("opengl_renderer: %s. Not rendering.", msg.c_str ()); |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2219 return; |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2220 } |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18856
diff
changeset
|
2221 |
9681 | 2222 const Matrix f = props.get_faces ().matrix_value (); |
2223 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
|
2224 Matrix c; |
9681 | 2225 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
|
2226 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
|
2227 |
7870 | 2228 int nv = v.rows (); |
2229 int nf = f.rows (); | |
2230 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
|
2231 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2232 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
|
2233 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
|
2234 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
|
2235 |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2236 int fc_mode = ((props.facecolor_is ("none") |
11168
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2237 || props.facecolor_is_rgb ()) ? 0 : |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2238 (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
|
2239 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
|
2240 (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
|
2241 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
|
2242 (props.facealpha_is ("flat") ? 1 : 2)); |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2243 int ec_mode = ((props.edgecolor_is ("none") |
11168
36442102c340
Fix treatment of facevertexcdata if facecolor is 'none' with the fltk backend
David Bateman <dbateman@free.fr>
parents:
11166
diff
changeset
|
2244 || props.edgecolor_is_rgb ()) ? 0 : |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2245 (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
|
2246 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
|
2247 (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
|
2248 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
|
2249 (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
|
2250 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2251 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
|
2252 Matrix ecolor = props.get_edgecolor_rgb (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2253 |
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
|
2254 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
|
2255 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
|
2256 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
|
2257 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
|
2258 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2259 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
|
2260 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2261 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
|
2262 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
|
2263 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
|
2264 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
|
2265 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
|
2266 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
|
2267 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2268 boolMatrix clip_f (1, nf, false); |
11570
57632dea2446
attempt better backward compatibility for Array constructors
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
2269 Array<int> count_f (dim_vector (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
|
2270 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2271 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
|
2272 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2273 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
|
2274 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
|
2275 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2276 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
|
2277 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
|
2278 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2279 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
|
2280 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
|
2281 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2282 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2283 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
|
2284 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2285 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
|
2286 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2287 if (c.rows () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2288 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2289 // Single color specifications, we can simplify a little bit |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2290 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2291 if (fc_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2292 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2293 fcolor = c; |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2294 fc_mode = UNIFORM; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2295 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2296 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2297 if (ec_mode > 0) |
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 ecolor = c; |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2300 ec_mode = UNIFORM; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2301 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2302 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2303 c = Matrix (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2304 } |
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
|
2305 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2306 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
|
2307 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2308 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2309 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
|
2310 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2311 // 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
|
2312 //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
|
2313 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
|
2314 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2315 |
7924 | 2316 octave_idx_type fr = f.rows (); |
7914
e998e81224b5
Various compilation fixes for MSVC.
John W. Eaton <jwe@octave.org>
parents:
7907
diff
changeset
|
2317 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
|
2318 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2319 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
|
2320 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
|
2321 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2322 int idx = int (f(i,j) - 1); |
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 Matrix vv (1, 3, 0.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2325 Matrix cc; |
18732
8969bd721448
Fix Z-depth issues of patches and lines in 2-D plots (bug #40722).
Rik <rik@octave.org>
parents:
18717
diff
changeset
|
2326 Matrix nn (1, 3, 0.0); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2327 double aa = 1.0; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2328 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2329 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
|
2330 if (has_z) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2331 vv(2) = v(idx,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2332 // FIXME: uncomment when patch object has normal computation |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2333 //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
|
2334 if (c.numel () > 0) |
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 cc.resize (1, 3); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2337 if (has_facecolor) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2338 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
|
2339 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2340 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
|
2341 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2342 if (a.numel () > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2343 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2344 if (has_facealpha) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2345 aa = a(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2346 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2347 aa = a(idx); |
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 |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
2350 vdata[i+j*fr] = 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
|
2351 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2352 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2353 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
|
2354 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2355 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
|
2356 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2357 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
|
2358 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
|
2359 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2360 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2361 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
|
2362 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2363 // 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
|
2364 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2365 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2366 if (fc_mode == UNIFORM) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2367 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2368 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2369 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2370 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2371 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2372 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2373 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2374 cb[i] = (as * fcolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2375 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2376 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2377 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2378 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2379 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2380 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2381 } |
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 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2385 |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2386 // NOTE: Push filled part of patch backwards to avoid Z-fighting with |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2387 // tesselator outline. A value of 1.0 seems to work fine. Value |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2388 // can't be too large or the patch will be pushed below the axes |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2389 // planes at +2.5. |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2390 patch_tesselator tess (this, fc_mode, fl_mode, 1.0); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2391 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2392 for (int i = 0; i < nf; i++) |
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 (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2395 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2396 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2397 tess.begin_polygon (true); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2398 tess.begin_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2399 |
18295
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2400 // Add vertices in reverse order for Matlab compatibility |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2401 for (int j = count_f(i)-1; j > 0; j--) |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2402 { |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2403 vertex_data::vertex_data_rep *vv = vdata[i+j*fr].get_rep (); |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2404 |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2405 tess.add_vertex (vv->coords.fortran_vec (), vv); |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2406 } |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2407 |
18133
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2408 if (count_f(i) > 0) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2409 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2410 vertex_data::vertex_data_rep *vv = vdata[i].get_rep (); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2411 |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2412 if (fc_mode == FLAT) |
18133
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2413 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2414 // For "flat" shading, use color of 1st vertex. |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2415 Matrix col = vv->color; |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2416 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2417 if (col.numel () == 3) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2418 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2419 glColor3dv (col.data ()); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2420 if (fl_mode > 0) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2421 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2422 float cb[4] = { 0, 0, 0, 1 }; |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2423 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2424 for (int k = 0; k < 3; k++) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2425 cb[k] = (vv->ambient * col(k)); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2426 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2427 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2428 for (int k = 0; k < 3; k++) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2429 cb[k] = (vv->diffuse * col(k)); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2430 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2431 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2432 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2433 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2434 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2435 tess.add_vertex (vv->coords.fortran_vec (), vv); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2436 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2437 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2438 tess.end_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2439 tess.end_polygon (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2440 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2441 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2442 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2443 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2444 } |
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
|
2445 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2446 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2447 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2448 } |
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
|
2449 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2450 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2451 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
|
2452 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2453 // 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
|
2454 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2455 { |
18805
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18804
diff
changeset
|
2456 if (ec_mode == UNIFORM) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2457 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2458 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2459 if (el_mode > 0) |
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 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2462 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2463 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2464 cb[i] = (as * ecolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2465 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
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 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2468 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2469 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2470 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2471 } |
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 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2474 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2475 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2476 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2477 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2478 |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2479 // NOTE: patch contour cannot be offset. Offset must occur with the |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2480 // filled portion of the patch above. The tesselator uses |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2481 // GLU_TESS_BOUNDARY_ONLY to get the outline of the patch and OpenGL |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2482 // automatically sets the glType to GL_LINE_LOOP. This primitive is |
19631
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19081
diff
changeset
|
2483 // not supported by glPolygonOffset which is used to do Z offsets. |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2484 patch_tesselator tess (this, ec_mode, el_mode); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2485 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2486 for (int i = 0; i < nf; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2487 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2488 if (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2489 { |
18856
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2490 // This is an unclosed contour. Draw it as a line. |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2491 bool flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2492 |
18856
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2493 glShadeModel ((ec_mode == INTERP || el_mode == GOURAUD) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2494 ? GL_SMOOTH : GL_FLAT); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2495 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2496 // Add vertices in reverse order for Matlab compatibility |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2497 for (int j = count_f(i)-1; j >= 0; j--) |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2498 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2499 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
|
2500 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2501 vertex_data::vertex_data_rep *vv |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2502 = vdata[i+j*fr].get_rep (); |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2503 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
|
2504 if (! flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2505 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2506 flag = true; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2507 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
|
2508 } |
18856
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2509 if (ec_mode != UNIFORM) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2510 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2511 Matrix col = vv->color; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2512 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2513 if (col.numel () == 3) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2514 glColor3dv (col.data ()); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2515 } |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2516 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
|
2517 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2518 else if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2519 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2520 flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2521 glEnd (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2522 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2523 } |
18856
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2524 // Do loop body with vertex N to "close" GL_LINE_STRIP |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2525 // from vertex 0 to vertex N. |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2526 int j = count_f(i)-1; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2527 if (flag && ! clip(int (f(i,j) - 1))) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2528 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2529 vertex_data::vertex_data_rep *vv |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2530 = vdata[i+j*fr].get_rep (); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2531 const Matrix m = vv->coords; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2532 if (ec_mode != UNIFORM) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2533 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2534 Matrix col = vv->color; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2535 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2536 if (col.numel () == 3) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2537 glColor3dv (col.data ()); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2538 } |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2539 glVertex3d (m(0), m(1), m(2)); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2540 } |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2541 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2542 if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2543 glEnd (); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2544 } |
18856
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18805
diff
changeset
|
2545 else // Normal edge contour drawn with tesselator |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2546 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2547 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
|
2548 tess.begin_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2549 |
18296
c8d6ca222bcc
Make "edgecolor"="flat" for patch objects compatible with Matlab.
Rik <rik@octave.org>
parents:
18295
diff
changeset
|
2550 for (int j = count_f(i)-1; j >= 0; j--) |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2551 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2552 vertex_data::vertex_data_rep *vv |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2553 = vdata[i+j*fr].get_rep (); |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2554 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
|
2555 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2556 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2557 tess.end_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2558 tess.end_polygon (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2559 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2560 } |
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 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2563 set_linewidth (0.5); |
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 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2566 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2567 } |
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
|
2568 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2569 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2570 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2571 } |
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
|
2572 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2573 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2574 if (! props.marker_is ("none") |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2575 && ! (props.markeredgecolor_is ("none") |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2576 && props.markerfacecolor_is ("none"))) |
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
|
2577 { |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2578 bool do_edge = ! props.markeredgecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2579 bool do_face = ! props.markerfacecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2580 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2581 Matrix mecolor = props.get_markeredgecolor_rgb (); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2582 Matrix mfcolor = props.get_markerfacecolor_rgb (); |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2583 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2584 bool has_markerfacecolor = false; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2585 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2586 if ((mecolor.numel () == 0 && ! props.markeredgecolor_is ("none")) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2587 || (mfcolor.numel () == 0 && ! props.markerfacecolor_is ("none"))) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2588 { |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2589 Matrix mc = props.get_color_data ().matrix_value (); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2590 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2591 if (mc.rows () == 1) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2592 { |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2593 // Single color specifications, we can simplify a little bit |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2594 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2595 if (mfcolor.numel () == 0 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2596 && ! props.markerfacecolor_is ("none")) |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2597 mfcolor = mc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2598 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2599 if (mecolor.numel () == 0 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2600 && ! props.markeredgecolor_is ("none")) |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2601 mecolor = mc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2602 } |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2603 else |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2604 { |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2605 if (c.numel () == 0) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2606 c = props.get_color_data ().matrix_value (); |
13141
e81ddf9cacd5
maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
12965
diff
changeset
|
2607 has_markerfacecolor = ((c.numel () > 0) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2608 && (c.rows () == f.rows ())); |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2609 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2610 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2611 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2612 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2613 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
|
2614 props.get_linewidth ()); |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2615 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2616 for (int i = 0; i < nf; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2617 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
|
2618 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2619 int idx = int (f(i,j) - 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2620 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2621 if (clip(idx)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2622 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2623 |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2624 Matrix cc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2625 if (c.numel () > 0) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2626 { |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2627 cc.resize (1, 3); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2628 if (has_markerfacecolor) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2629 cc(0) = c(i,0), cc(1) = c(i,1), cc(2) = c(i,2); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2630 else |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2631 cc(0) = c(idx,0), cc(1) = c(idx,1), cc(2) = c(idx,2); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2632 } |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2633 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2634 Matrix lc = (do_edge ? (mecolor.numel () == 0 ? cc : mecolor) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2635 : Matrix ()); |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2636 Matrix fc = (do_face ? (mfcolor.numel () == 0 ? cc : mfcolor) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2637 : Matrix ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2638 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2639 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
|
2640 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2641 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2642 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
|
2643 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2644 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2645 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2646 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2647 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
|
2648 { |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2649 draw (props.get_children ()); |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2650 } |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2651 |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2652 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2653 opengl_renderer::draw_text (const text::properties& props) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2654 { |
12965
22bc9ec80c2c
allow multi-line string property for text objects using cell arrays or char matrices
Ben Abbott <bpabbott@mac.com>
parents:
12684
diff
changeset
|
2655 if (props.get_string ().is_empty ()) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2656 return; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2657 |
19081
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18940
diff
changeset
|
2658 set_font (props); |
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18940
diff
changeset
|
2659 |
13961
0fea4cf22f88
restore legend text with OpenGL + FLTK graphics (bug #34907)
John W. Eaton <jwe@octave.org>
parents:
13758
diff
changeset
|
2660 Matrix pos = xform.scale (props.get_data_position ()); |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2661 const Matrix bbox = props.get_extent_matrix (); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2662 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2663 // FIXME: handle margin and surrounding box |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2664 bool blend = glIsEnabled (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2665 |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2666 glEnable (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2667 glEnable (GL_ALPHA_TEST); |
13961
0fea4cf22f88
restore legend text with OpenGL + FLTK graphics (bug #34907)
John W. Eaton <jwe@octave.org>
parents:
13758
diff
changeset
|
2668 glRasterPos3d (pos(0), pos(1), pos.numel () > 2 ? pos(2) : 0.0); |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2669 glBitmap (0, 0, 0, 0, bbox(0), bbox(1), 0); |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2670 glDrawPixels (bbox(2), bbox(3), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2671 GL_RGBA, GL_UNSIGNED_BYTE, props.get_pixels ().data ()); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2672 glDisable (GL_ALPHA_TEST); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2673 if (! blend) |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2674 glDisable (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2675 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2676 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2677 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2678 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2679 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
|
2680 { |
9884
fed4aad2cdca
handle indexed images in opengl renderer
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9834
diff
changeset
|
2681 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
|
2682 dim_vector dv (cdata.dims ()); |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2683 int h = dv(0); |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2684 int w = dv(1); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2685 |
11093
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2686 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
|
2687 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
|
2688 |
15069
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2689 // Someone wants us to draw an empty image? No way. |
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2690 if (x.is_empty () || y.is_empty ()) |
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2691 return; |
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2692 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2693 if (w > 1 && x(1) == x(0)) |
11093
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2694 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
|
2695 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2696 if (h > 1 && y(1) == y(0)) |
11093
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2697 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
|
2698 |
9681 | 2699 const ColumnVector p0 = xform.transform (x(0), y(0), 0); |
2700 const ColumnVector p1 = xform.transform (x(1), y(1), 0); | |
2701 | |
17727
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2702 if (xisnan (p0(0)) || xisnan (p0(1)) || xisnan (p1(0)) || xisnan (p1(1))) |
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2703 { |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
2704 warning ("opengl_renderer: image X,Y data too large to draw"); |
17727
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2705 return; |
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2706 } |
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2707 |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2708 // image pixel size in screen pixel units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2709 float pix_dx, pix_dy; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2710 // image pixel size in normalized units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2711 float nor_dx, nor_dy; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2712 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2713 if (w > 1) |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2714 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2715 pix_dx = (p1(0) - p0(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2716 nor_dx = (x(1) - x(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2717 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2718 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2719 { |
10076 | 2720 const ColumnVector p1w = xform.transform (x(1) + 1, y(1), 0); |
2721 pix_dx = p1w(0) - p0(0); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2722 nor_dx = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2723 } |
10076 | 2724 |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2725 if (h > 1) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2726 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2727 pix_dy = (p1(1) - p0(1))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2728 nor_dy = (y(1) - y(0))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2729 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2730 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2731 { |
10076 | 2732 const ColumnVector p1h = xform.transform (x(1), y(1) + 1, 0); |
2733 pix_dy = p1h(1) - p0(1); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2734 nor_dy = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2735 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2736 |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
2737 // OpenGL won't draw any of the image if it's origin is outside the |
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
2738 // viewport/clipping plane so we must do the clipping ourselves. |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2739 |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2740 int j0, j1, i0, i1; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2741 j0 = 0, j1 = w; |
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2742 i0 = 0, i1 = h; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2743 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2744 float im_xmin = x(0) - nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2745 float im_xmax = x(1) + nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2746 float im_ymin = y(0) - nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2747 float im_ymax = y(1) + nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2748 if (props.is_clipping ()) // clip to axes |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2749 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2750 if (im_xmin < xmin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2751 j0 += (xmin - im_xmin)/nor_dx + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2752 if (im_xmax > xmax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2753 j1 -= (im_xmax - xmax)/nor_dx ; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2754 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2755 if (im_ymin < ymin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2756 i0 += (ymin - im_ymin)/nor_dy + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2757 if (im_ymax > ymax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2758 i1 -= (im_ymax - ymax)/nor_dy; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2759 } |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2760 else // clip to viewport |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2761 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2762 GLfloat vp[4]; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2763 glGetFloatv (GL_VIEWPORT, vp); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2764 // FIXME: actually add the code to do it! |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2765 |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2766 } |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2767 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2768 if (i0 >= i1 || j0 >= j1) |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2769 return; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2770 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2771 glPixelZoom (pix_dx, -pix_dy); |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2772 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
|
2773 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2774 // by default this is 4 |
18717
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2775 glPixelStorei (GL_UNPACK_ALIGNMENT, 1); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2776 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2777 // Expect RGB data |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2778 if (dv.length () == 3 && dv(2) == 3) |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2779 { |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2780 if (cdata.is_double_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2781 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2782 const NDArray xcdata = cdata.array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2783 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2784 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
|
2785 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2786 for (int i = i0; i < i1; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2787 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2788 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
|
2789 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2790 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2791 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2792 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2793 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2794 } |
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 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
|
2797 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2798 } |
18717
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2799 else if (cdata.is_single_type ()) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2800 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2801 const FloatNDArray xcdata = cdata.float_array_value (); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2802 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2803 OCTAVE_LOCAL_BUFFER (GLfloat, a, 3*(j1-j0)*(i1-i0)); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2804 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2805 for (int i = i0; i < i1; i++) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2806 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2807 for (int j = j0, idx = (i-i0)*(j1-j0)*3; j < j1; j++, idx += 3) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2808 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2809 a[idx] = xcdata(i,j,0); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2810 a[idx+1] = xcdata(i,j,1); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2811 a[idx+2] = xcdata(i,j,2); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2812 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2813 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2814 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2815 draw_pixels (j1-j0, i1-i0, GL_RGB, GL_FLOAT, a); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2816 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2817 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2818 else if (cdata.is_uint8_type ()) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2819 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2820 const uint8NDArray xcdata = cdata.uint8_array_value (); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2821 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2822 OCTAVE_LOCAL_BUFFER (GLubyte, a, 3*(j1-j0)*(i1-i0)); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2823 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2824 for (int i = i0; i < i1; i++) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2825 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2826 for (int j = j0, idx = (i-i0)*(j1-j0)*3; j < j1; j++, idx += 3) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2827 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2828 a[idx] = xcdata(i,j,0); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2829 a[idx+1] = xcdata(i,j,1); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2830 a[idx+2] = xcdata(i,j,2); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2831 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2832 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2833 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2834 draw_pixels (j1-j0, i1-i0, GL_RGB, GL_UNSIGNED_BYTE, a); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2835 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2836 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2837 else if (cdata.is_uint16_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2838 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2839 const uint16NDArray xcdata = cdata.uint16_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2840 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2841 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
|
2842 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2843 for (int i = i0; i < i1; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2844 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2845 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
|
2846 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2847 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2848 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2849 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2850 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2851 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2852 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2853 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
|
2854 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2855 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2856 else |
18717
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18716
diff
changeset
|
2857 warning ("opengl_renderer: invalid image data type (expected double, single, uint8, or uint16)"); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2858 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2859 else |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
2860 warning ("opengl_renderer: invalid image size (expected MxNx3 or MxN)"); |
13219
cf5ebc0e47e4
fix warnings for unused but set variables and shadowed variables
John W. Eaton <jwe@octave.org>
parents:
13216
diff
changeset
|
2861 |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2862 glPixelZoom (1, 1); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2863 } |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2864 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2865 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2866 opengl_renderer::set_viewport (int w, int h) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2867 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2868 glViewport (0, 0, w, h); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2869 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2870 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2871 void |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2872 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
|
2873 GLenum type, const GLvoid *data) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2874 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2875 glDrawPixels (width, height, format, type, data); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2876 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2877 |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2878 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2879 opengl_renderer::set_color (const Matrix& c) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2880 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2881 glColor3dv (c.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2882 #if HAVE_FREETYPE |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2883 text_renderer.set_color (c); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2884 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2885 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2886 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2887 void |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2888 opengl_renderer::set_font (const base_properties& props) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2889 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2890 #if HAVE_FREETYPE |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2891 text_renderer.set_font (props.get ("fontname").string_value (), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2892 props.get ("fontweight").string_value (), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2893 props.get ("fontangle").string_value (), |
19081
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
18940
diff
changeset
|
2894 props.get ("fontsize_points").double_value ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2895 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2896 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2897 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2898 void |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2899 opengl_renderer::set_polygon_offset (bool on, float offset) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2900 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2901 if (on) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2902 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2903 glEnable (GL_POLYGON_OFFSET_FILL); |
7906 | 2904 glEnable (GL_POLYGON_OFFSET_LINE); |
18802
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18754
diff
changeset
|
2905 glPolygonOffset (offset, offset); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2906 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2907 else |
7906 | 2908 { |
2909 glDisable (GL_POLYGON_OFFSET_FILL); | |
2910 glDisable (GL_POLYGON_OFFSET_LINE); | |
2911 } | |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2912 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2913 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2914 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2915 opengl_renderer::set_linewidth (float w) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2916 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2917 glLineWidth (w); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2918 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2919 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2920 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2921 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
|
2922 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2923 bool solid = false; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2924 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2925 if (s == "-") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2926 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2927 glLineStipple (1, static_cast<unsigned short> (0xFFFF)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2928 solid = true; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2929 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2930 else if (s == ":") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2931 glLineStipple (1, static_cast<unsigned short> (0x8888)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2932 else if (s == "--") |
18940
c0fb31c46e87
Change OpenGL dashed line style to 50% mark / 50% space.
Rik <rik@octave.org>
parents:
18935
diff
changeset
|
2933 glLineStipple (1, static_cast<unsigned short> (0xF0F0)); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2934 else if (s == "-.") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2935 glLineStipple (1, static_cast<unsigned short> (0x020F)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2936 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2937 glLineStipple (1, static_cast<unsigned short> (0x0000)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2938 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2939 if (solid && ! use_stipple) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2940 glDisable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2941 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2942 glEnable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2943 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2944 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2945 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2946 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
|
2947 double z1, double z2) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2948 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2949 double dx = (x2-x1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2950 double dy = (y2-y1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2951 double dz = (z2-z1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2952 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2953 x1 -= 0.001*dx; x2 += 0.001*dx; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2954 y1 -= 0.001*dy; y2 += 0.001*dy; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2955 z1 -= 0.001*dz; z2 += 0.001*dz; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2956 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2957 ColumnVector p (4, 0.0); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2958 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2959 p(0) = -1; p(3) = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2960 glClipPlane (GL_CLIP_PLANE0, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2961 p(0) = 1; p(3) = -x1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2962 glClipPlane (GL_CLIP_PLANE1, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2963 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
|
2964 glClipPlane (GL_CLIP_PLANE2, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2965 p(1) = 1; p(3) = -y1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2966 glClipPlane (GL_CLIP_PLANE3, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2967 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
|
2968 glClipPlane (GL_CLIP_PLANE4, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2969 p(2) = 1; p(3) = -z1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2970 glClipPlane (GL_CLIP_PLANE5, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2971 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2972 xmin = x1; xmax = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2973 ymin = y1; ymax = y2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2974 zmin = z1; zmax = z2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2975 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2976 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2977 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2978 opengl_renderer::set_clipping (bool enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2979 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2980 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
|
2981 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2982 if (enable != has_clipping) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2983 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2984 if (enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2985 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2986 glEnable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2987 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2988 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2989 glDisable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2990 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2991 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2992 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2993 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2994 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
|
2995 { |
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
|
2996 #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
|
2997 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
|
2998 #else |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2999 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
|
3000 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3001 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3002 glGetIntegerv (GL_VIEWPORT, vw); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3003 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3004 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3005 glPushMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3006 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3007 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
|
3008 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3009 glPushMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3010 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3011 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3012 set_linewidth (width); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3013 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3014 marker_id = make_marker_list (m, size, false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3015 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
|
3016 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3017 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3018 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3019 opengl_renderer::end_marker (void) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3020 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3021 glDeleteLists (marker_id, 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3022 glDeleteLists (filled_marker_id, 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3023 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3024 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3025 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3026 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3027 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3028 set_linewidth (0.5f); |
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 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3032 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
|
3033 const Matrix& lc, const Matrix& fc) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3034 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3035 ColumnVector tmp = xform.transform (x, y, z, false); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
3036 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3037 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3038 glTranslated (tmp(0), tmp(1), -tmp(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3039 |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3040 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
|
3041 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3042 glColor3dv (fc.data ()); |
7906 | 3043 set_polygon_offset (true, -1.0); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3044 glCallList (filled_marker_id); |
7906 | 3045 if (lc.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3046 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3047 glColor3dv (lc.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3048 glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3049 glEdgeFlag (GL_TRUE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3050 set_polygon_offset (true, -2.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3051 glCallList (filled_marker_id); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3052 glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3053 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3054 set_polygon_offset (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3055 } |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3056 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
|
3057 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3058 glColor3dv (lc.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3059 glCallList (marker_id); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3060 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3061 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3062 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3063 unsigned int |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3064 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
|
3065 bool filled) const |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3066 { |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3067 char c = marker[0]; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3068 |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3069 if (filled && (c == '+' || c == 'x' || c == '*' || c == '.')) |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3070 return 0; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3071 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3072 unsigned int ID = glGenLists (1); |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11570
diff
changeset
|
3073 double sz = size * toolkit.get_screen_resolution () / 72.0; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3074 |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3075 // constants for the * marker |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3076 const double sqrt2d4 = 0.35355339059327; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3077 double tt = sz*sqrt2d4; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3078 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3079 glNewList (ID, GL_COMPILE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3080 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3081 switch (marker[0]) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3082 { |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3083 case '+': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3084 glBegin (GL_LINES); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3085 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3086 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3087 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3088 glVertex2d (0, sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3089 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3090 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3091 case 'x': |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3092 glBegin (GL_LINES); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3093 glVertex2d (-sz/2, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3094 glVertex2d (sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3095 glVertex2d (-sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3096 glVertex2d (sz/2, -sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3097 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3098 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3099 case '*': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3100 glBegin (GL_LINES); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3101 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3102 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3103 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3104 glVertex2d (0, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3105 glVertex2d (-tt, -tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3106 glVertex2d (+tt, +tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3107 glVertex2d (-tt, +tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3108 glVertex2d (+tt, -tt); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3109 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3110 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3111 case '.': |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3112 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3113 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
|
3114 |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3115 glBegin (GL_POLYGON); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3116 for (double ang = 0; ang < (2*M_PI); ang += ang_step) |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3117 glVertex2d (sz*cos (ang)/3, sz*sin (ang)/3); |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3118 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3119 } |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3120 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3121 case 's': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3122 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3123 glVertex2d (-sz/2, -sz/2); |
9681 | 3124 glVertex2d (-sz/2, sz/2); |
3125 glVertex2d (sz/2, sz/2); | |
3126 glVertex2d (sz/2, -sz/2); | |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14838
diff
changeset
|
3127 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3128 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3129 case 'o': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3130 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3131 double ang_step = M_PI / 5; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3132 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3133 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3134 for (double ang = 0; ang < (2*M_PI); ang += ang_step) |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3135 glVertex2d (sz*cos (ang)/2, sz*sin (ang)/2); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3136 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3137 } |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3138 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3139 case 'd': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3140 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3141 glVertex2d (0, -sz/2); |
3142 glVertex2d (sz/2, 0); | |
3143 glVertex2d (0, sz/2); | |
3144 glVertex2d (-sz/2, 0); | |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14838
diff
changeset
|
3145 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3146 break; |
10835
4bbd6f75f173
gl-render.cc: Transpose markers '^' and 'v'.
Ben Abbott <bpabbott@mac.com>
parents:
10402
diff
changeset
|
3147 case 'v': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3148 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3149 glVertex2d (0, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3150 glVertex2d (sz/2, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3151 glVertex2d (-sz/2, -sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3152 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3153 break; |
10835
4bbd6f75f173
gl-render.cc: Transpose markers '^' and 'v'.
Ben Abbott <bpabbott@mac.com>
parents:
10402
diff
changeset
|
3154 case '^': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3155 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3156 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3157 glVertex2d (-sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3158 glVertex2d (sz/2, sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3159 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3160 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3161 case '>': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3162 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3163 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3164 glVertex2d (-sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3165 glVertex2d (-sz/2, -sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3166 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3167 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3168 case '<': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3169 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18803
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3170 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3171 glVertex2d (sz/2, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18802
diff
changeset
|
3172 glVertex2d (sz/2, sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3173 glEnd (); |
7906 | 3174 break; |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3175 case 'p': |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3176 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3177 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3178 double r; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3179 double dr = 1.0 - sin (M_PI/10)/sin (3*M_PI/10)*1.02; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
3180 |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3181 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
|
3182 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
|
3183 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3184 ang = (-0.5 + double(i+1)/5) * M_PI; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3185 r = 1.0 - (dr * fmod (double(i+1), 2.0)); |
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3186 glVertex2d (sz*r*cos (ang)/2, sz*r*sin (ang)/2); |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3187 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3188 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3189 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3190 break; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3191 case 'h': |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3192 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3193 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3194 double r; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3195 double dr = 1.0 - 0.5/sin (M_PI/3)*1.02; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
3196 |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3197 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
|
3198 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
|
3199 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3200 ang = (0.5 + double(i+1)/6.0) * M_PI; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3201 r = 1.0 - (dr * fmod (double(i+1), 2.0)); |
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3202 glVertex2d (sz*r*cos (ang)/2, sz*r*sin (ang)/2); |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3203 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3204 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3205 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3206 break; |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3207 default: |
18711
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18701
diff
changeset
|
3208 warning ("opengl_renderer: unsupported marker '%s'", marker.c_str ()); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3209 break; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3210 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3211 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3212 glEndList (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3213 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3214 return ID; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3215 } |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7870
diff
changeset
|
3216 |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3217 void |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3218 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
|
3219 uint8NDArray& pixels, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3220 Matrix& bbox, |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3221 int halign, int valign, double rotation) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3222 { |
12333
f103b9c1ca05
use text_renderer object only when freetye is available
Kai Habel <kai.habel@gmx.de>
parents:
12327
diff
changeset
|
3223 #if HAVE_FREETYPE |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3224 text_renderer.text_to_pixels (txt, pixels, bbox, |
17269
5b088598df1d
Add simple TeX parser based on flex/bison.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16892
diff
changeset
|
3225 halign, valign, rotation, "none"); |
12333
f103b9c1ca05
use text_renderer object only when freetye is available
Kai Habel <kai.habel@gmx.de>
parents:
12327
diff
changeset
|
3226 #endif |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3227 } |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3228 |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3229 Matrix |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3230 opengl_renderer::render_text (const std::string& txt, |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3231 double x, double y, double z, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3232 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
|
3233 { |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3234 #if HAVE_FREETYPE |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3235 if (txt.empty ()) |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3236 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
|
3237 |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3238 uint8NDArray pixels; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3239 Matrix bbox; |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3240 text_to_pixels (txt, pixels, bbox, halign, valign, rotation); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3241 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3242 bool blend = glIsEnabled (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3243 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3244 glEnable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3245 glEnable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3246 glRasterPos3d (x, y, z); |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3247 glBitmap(0, 0, 0, 0, bbox(0), bbox(1), 0); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3248 glDrawPixels (bbox(2), bbox(3), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3249 GL_RGBA, GL_UNSIGNED_BYTE, pixels.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3250 glDisable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3251 if (! blend) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3252 glDisable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3253 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3254 return bbox; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3255 #else |
18716
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18711
diff
changeset
|
3256 warning ("opengl_renderer: cannot render text, FreeType library not available"); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3257 return Matrix (1, 4, 0.0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3258 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3259 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3260 |
7954 | 3261 #endif |