Mercurial > hg > octave-nkf
annotate libinterp/corefcn/gl-render.cc @ 20442:a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
* liboctave/array/Array.h (Array::length): deprecate for ::numel.
* liboctave/array/Sparse.h (Sparse::length): deprecate for ::numel.
* libgui/graphics/QtHandlesUtils.cc, libgui/src/octave-qt-link.cc,
libinterp/corefcn/Cell.cc, libinterp/corefcn/__contourc__.cc,
libinterp/corefcn/__pchip_deriv__.cc, libinterp/corefcn/__qp__.cc,
libinterp/corefcn/cellfun.cc, libinterp/corefcn/daspk.cc,
libinterp/corefcn/dasrt.cc, libinterp/corefcn/dassl.cc,
libinterp/corefcn/data.cc, libinterp/corefcn/filter.cc,
libinterp/corefcn/find.cc, libinterp/corefcn/gl-render.cc,
libinterp/corefcn/gl-render.h, libinterp/corefcn/graphics.cc,
libinterp/corefcn/graphics.in.h, libinterp/corefcn/help.cc,
libinterp/corefcn/hex2num.cc, libinterp/corefcn/input.cc,
libinterp/corefcn/load-path.cc, libinterp/corefcn/load-save.cc,
libinterp/corefcn/ls-oct-ascii.h, libinterp/corefcn/lsode.cc,
libinterp/corefcn/matrix_type.cc, libinterp/corefcn/oct-hist.cc,
libinterp/corefcn/oct-map.cc, libinterp/corefcn/oct-map.h,
libinterp/corefcn/oct-obj.h, libinterp/corefcn/oct-stream.cc,
libinterp/corefcn/oct-stream.h, libinterp/corefcn/pr-output.cc,
libinterp/corefcn/quadcc.cc, libinterp/corefcn/rand.cc,
libinterp/corefcn/regexp.cc, libinterp/corefcn/strfns.cc,
libinterp/corefcn/sub2ind.cc, libinterp/corefcn/symtab.h,
libinterp/corefcn/syscalls.cc, libinterp/corefcn/tsearch.cc,
libinterp/corefcn/urlwrite.cc, libinterp/corefcn/utils.cc,
libinterp/corefcn/variables.cc, libinterp/corefcn/xdiv.cc,
libinterp/corefcn/xpow.cc, libinterp/dldfcn/__glpk__.cc,
libinterp/dldfcn/__init_fltk__.cc, libinterp/dldfcn/__magick_read__.cc,
libinterp/dldfcn/audiodevinfo.cc, libinterp/dldfcn/ccolamd.cc,
libinterp/dldfcn/colamd.cc, libinterp/octave-value/ov-cell.cc,
libinterp/octave-value/ov-class.cc, libinterp/octave-value/ov-class.h,
libinterp/octave-value/ov-fcn-inline.cc, libinterp/octave-value/ov-java.cc,
libinterp/octave-value/ov-perm.cc, libinterp/octave-value/ov-struct.cc,
libinterp/octave-value/ov-typeinfo.cc, libinterp/octave-value/ov.cc,
libinterp/operators/op-int.h, libinterp/parse-tree/pt-pr-code.cc,
liboctave/array/Array-util.cc, liboctave/array/Array.cc,
liboctave/array/CColVector.cc, liboctave/array/CDiagMatrix.cc,
liboctave/array/CMatrix.cc, liboctave/array/CRowVector.cc,
liboctave/array/DiagArray2.cc, liboctave/array/DiagArray2.h,
liboctave/array/MArray.cc, liboctave/array/PermMatrix.cc,
liboctave/array/PermMatrix.h, liboctave/array/Sparse.cc,
liboctave/array/boolMatrix.cc, liboctave/array/chMatrix.cc,
liboctave/array/chNDArray.cc, liboctave/array/dColVector.cc,
liboctave/array/dDiagMatrix.cc, liboctave/array/dMatrix.cc,
liboctave/array/dRowVector.cc, liboctave/array/fCColVector.cc,
liboctave/array/fCDiagMatrix.cc, liboctave/array/fCMatrix.cc,
liboctave/array/fCRowVector.cc, liboctave/array/fColVector.cc,
liboctave/array/fDiagMatrix.cc, liboctave/array/fMatrix.cc,
liboctave/array/fRowVector.cc, liboctave/array/idx-vector.cc,
liboctave/array/intNDArray.cc, liboctave/numeric/CmplxCHOL.cc,
liboctave/numeric/CmplxLU.cc, liboctave/numeric/CmplxQR.cc,
liboctave/numeric/DASPK.cc, liboctave/numeric/DASRT.cc,
liboctave/numeric/DASSL.cc, liboctave/numeric/LSODE.cc,
liboctave/numeric/ODES.cc, liboctave/numeric/ODES.h,
liboctave/numeric/base-dae.h, liboctave/numeric/base-lu.cc,
liboctave/numeric/dbleCHOL.cc, liboctave/numeric/dbleLU.cc,
liboctave/numeric/dbleQR.cc, liboctave/numeric/eigs-base.cc,
liboctave/numeric/fCmplxCHOL.cc, liboctave/numeric/fCmplxLU.cc,
liboctave/numeric/fCmplxQR.cc, liboctave/numeric/floatCHOL.cc,
liboctave/numeric/floatLU.cc, liboctave/numeric/floatQR.cc,
liboctave/numeric/lo-specfun.cc, liboctave/numeric/oct-rand.cc,
liboctave/numeric/oct-spparms.cc, liboctave/numeric/sparse-base-chol.cc,
liboctave/operators/mx-inlines.cc, liboctave/system/file-ops.cc,
liboctave/util/glob-match.h, liboctave/util/kpse.cc,
liboctave/util/lo-regexp.cc, liboctave/util/oct-glob.cc,
liboctave/util/pathsearch.cc, liboctave/util/str-vec.cc,
liboctave/util/str-vec.h, liboctave/util/url-transfer.cc: replace all usage
of Array::length() and Sparse::length() with ::numel().
author | Carnë Draug <carandraug@octave.org> |
---|---|
date | Sat, 30 May 2015 03:14:07 +0100 |
parents | 438485f6a479 |
children | 6db2ea5556a4 |
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 |
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19794
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 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
40 // Use symbolic names for axes |
20068
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
41 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
42 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
43 X_AXIS, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
44 Y_AXIS, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
45 Z_AXIS |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
46 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
47 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
48 // Use symbolic names for color mode |
20068
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
49 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
50 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
51 UNIFORM, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
52 FLAT, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
53 INTERP, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
54 TEXTURE |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
55 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
56 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
57 // Use symbolic names for lighting |
20068
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
58 enum |
19755f4fc851
maint: Cleanup C++ code to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
59 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
60 NONE, |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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:
18959
diff
changeset
|
62 GOURAUD = 2 |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
63 }; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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); |
20107
2eed41ae3b64
Fix computation of next-power-of-2 for height in OpenGL texture creation.
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
20071
diff
changeset
|
181 th = next_power_of_2 (h); |
7831
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: |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
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 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 ()) |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
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 |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
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:
18885
diff
changeset
|
466 // the first vertex must be identified in the draw_patch routine. |
18321
c8d6ca222bcc
Make "edgecolor"="flat" for patch objects compatible with Matlab.
Rik <rik@octave.org>
parents:
18320
diff
changeset
|
467 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
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; |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
556 int color_mode; |
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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); |
18959
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
650 glEnable (GL_MULTISAMPLE); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
651 GLint iMultiSample, iNumSamples; |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
652 glGetIntegerv (GL_SAMPLE_BUFFERS, &iMultiSample); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
653 glGetIntegerv (GL_SAMPLES, &iNumSamples); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
654 if (iMultiSample != GL_TRUE || iNumSamples == 0) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
655 { |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
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:
18958
diff
changeset
|
657 glDisable (GL_MULTISAMPLE); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
658 glEnable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
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:
18958
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 |
20442
a9574e3c6e9e
Deprecate Array::length() and Sparse::length() in favour of ::numel().
Carnë Draug <carandraug@octave.org>
parents:
20265
diff
changeset
|
670 if (c.numel () >= 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); |
18885
04adeda9b83d
Revert ea22cf3e370b and 60df2fd04293 plotting grid/ticks over axes lines.
Rik <rik@octave.org>
parents:
18856
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 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 |
18885
04adeda9b83d
Revert ea22cf3e370b and 60df2fd04293 plotting grid/ticks over axes lines.
Rik <rik@octave.org>
parents:
18856
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 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
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? |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
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 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
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:
18822
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:
18822
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:
18822
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 (); |
20265
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
873 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
|
874 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
875 // Axes planes |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
876 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:
18822
diff
changeset
|
877 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:
18822
diff
changeset
|
878 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
879 glBegin (GL_QUADS); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
880 |
20265
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
881 if (! is2d) |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
882 { |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
883 // X plane |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
884 glVertex3d (xPlane, yPlaneN, zPlaneN); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
885 glVertex3d (xPlane, yPlane, zPlaneN); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
886 glVertex3d (xPlane, yPlane, zPlane); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
887 glVertex3d (xPlane, yPlaneN, zPlane); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
888 |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
889 // Y plane |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
890 glVertex3d (xPlaneN, yPlane, zPlaneN); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
891 glVertex3d (xPlane, yPlane, zPlaneN); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
892 glVertex3d (xPlane, yPlane, zPlane); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
893 glVertex3d (xPlaneN, yPlane, zPlane); |
438485f6a479
Honor the axes stack order in gl2ps outputs (bug #44765)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20244
diff
changeset
|
894 } |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
895 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
896 // Z plane |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
897 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:
18822
diff
changeset
|
898 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:
18822
diff
changeset
|
899 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:
18822
diff
changeset
|
900 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:
18822
diff
changeset
|
901 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
902 glEnd (); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
903 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
904 set_polygon_offset (false); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
905 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
906 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
907 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
908 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
|
909 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
910 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:
18822
diff
changeset
|
911 return; |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
912 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
913 bool xySym = props.get_xySym (); |
18822
e42843ceff48
Fix axes bounding box not obeying 'layer' property.
Rik <rik@octave.org>
parents:
18813
diff
changeset
|
914 bool layer2Dtop = props.get_layer2Dtop (); |
e42843ceff48
Fix axes bounding box not obeying 'layer' property.
Rik <rik@octave.org>
parents:
18813
diff
changeset
|
915 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
|
916 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
|
917 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
|
918 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
|
919 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
|
920 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
|
921 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
|
922 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
|
923 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
|
924 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
|
925 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
|
926 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
|
927 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
|
928 |
13216 | 929 bool plotyy = (props.has_property ("__plotyy_axes__")); |
12443
24b38afd6a45
fix plotyy bugs #31800, #32211
Konstantinos Poulios <logari81@googlemail.com>
parents:
12334
diff
changeset
|
930 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
931 // Axes box |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
932 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
933 set_linestyle ("-", true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
934 set_linewidth (props.get_linewidth ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
935 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
936 glBegin (GL_LINES); |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
937 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
938 if (layer2Dtop) |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
939 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:
18822
diff
changeset
|
940 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
941 // X box |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
942 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:
18822
diff
changeset
|
943 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:
18822
diff
changeset
|
944 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:
18822
diff
changeset
|
945 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
946 if (props.is_box ()) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
947 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
948 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:
18822
diff
changeset
|
949 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:
18822
diff
changeset
|
950 if (! is2d) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
951 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
952 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:
18822
diff
changeset
|
953 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:
18822
diff
changeset
|
954 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:
18822
diff
changeset
|
955 glVertex3d (xPlane, ypTick, zpTickN); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
956 } |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
957 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
958 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
959 // Y box |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
960 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:
18822
diff
changeset
|
961 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:
18822
diff
changeset
|
962 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:
18822
diff
changeset
|
963 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
964 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:
18822
diff
changeset
|
965 { |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
966 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:
18822
diff
changeset
|
967 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:
18822
diff
changeset
|
968 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
969 if (! is2d) |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
970 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
971 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:
18822
diff
changeset
|
972 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:
18822
diff
changeset
|
973 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:
18822
diff
changeset
|
974 glVertex3d (xpTick, yPlane, zpTickN); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
975 } |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
976 } |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
977 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
978 // Z box |
20244
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
979 if (! is2d) |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
980 { |
20244
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
981 set_color (props.get_zcolor_rgb ()); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
982 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
983 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
984 { |
20244
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
985 glVertex3d (xPlaneN, yPlane, zPlaneN); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
986 glVertex3d (xPlaneN, yPlane, zPlane); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
987 } |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
988 else |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
989 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
990 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:
18822
diff
changeset
|
991 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:
18822
diff
changeset
|
992 } |
20244
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
993 |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
994 if (props.is_box ()) |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
995 { |
20244
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
996 glVertex3d (xPlane, yPlane, zPlaneN); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
997 glVertex3d (xPlane, yPlane, zPlane); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
998 |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
999 if (xySym) |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1000 { |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1001 glVertex3d (xPlane, yPlaneN, zPlaneN); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1002 glVertex3d (xPlane, yPlaneN, zPlane); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1003 } |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1004 else |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1005 { |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1006 glVertex3d (xPlaneN, yPlane, zPlaneN); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1007 glVertex3d (xPlaneN, yPlane, zPlane); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1008 } |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1009 |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1010 glVertex3d (xPlaneN, yPlaneN, zPlaneN); |
42c3a0829324
Skip z axes rendering when in 2D mode (bug #44752)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
20107
diff
changeset
|
1011 glVertex3d (xPlaneN, yPlaneN, zPlane); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1012 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1013 } |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1014 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1015 glEnd (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1016 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1017 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1018 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1019 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
|
1020 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1021 int xstate = props.get_xstate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1022 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1023 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
|
1024 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1025 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:
18822
diff
changeset
|
1026 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:
18822
diff
changeset
|
1027 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:
18822
diff
changeset
|
1028 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:
18822
diff
changeset
|
1029 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:
18822
diff
changeset
|
1030 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:
18822
diff
changeset
|
1031 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:
18822
diff
changeset
|
1032 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:
18822
diff
changeset
|
1033 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:
18822
diff
changeset
|
1034 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:
18822
diff
changeset
|
1035 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:
18822
diff
changeset
|
1036 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:
18822
diff
changeset
|
1037 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:
18822
diff
changeset
|
1038 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:
18822
diff
changeset
|
1039 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:
18822
diff
changeset
|
1040 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:
18822
diff
changeset
|
1041 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:
18822
diff
changeset
|
1042 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:
18822
diff
changeset
|
1043 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:
18822
diff
changeset
|
1044 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1045 // X grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1046 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1047 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
|
1048 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
|
1049 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
|
1050 bool do_xminorgrid = (props.is_xminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1051 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1052 bool do_xminortick = props.is_xminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1053 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
|
1054 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
|
1055 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
|
1056 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
|
1057 int hmax = 0; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1058 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
|
1059 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
|
1060 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1061 set_color (props.get_xcolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1062 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1063 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1064 if (do_xgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1065 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
|
1066 yPlane, yPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1067 zPlaneN, 0, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1068 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1069 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1070 if (tick_along_z) |
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, ypTick, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1073 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
|
1074 signum (zpTick-zpTickN)*fz*xticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1075 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 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1078 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1079 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
|
1080 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
|
1081 signum (ypTick-ypTickN)*fy*xticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1082 0., 0, mirror); |
12321
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 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1085 // tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1086 if (xticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1087 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1088 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
|
1089 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
|
1090 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1091 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1092 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
|
1093 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
|
1094 0, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1095 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1096 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
|
1097 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
|
1098 zpTick, 0, halign, valign, wmax, hmax); |
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 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1101 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1102 if (do_xminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1103 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
|
1104 yPlane, yPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1105 zPlaneN, 0, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1106 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1107 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1108 if (do_xminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1109 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1110 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1111 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
|
1112 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
|
1113 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
|
1114 0, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1115 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1116 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
|
1117 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
|
1118 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
|
1119 0., 0, mirror); |
12321
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 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1122 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
|
1123 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1124 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1125 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
|
1126 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1127 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1128 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1129 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
|
1130 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1131 int ystate = props.get_ystate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1132 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1133 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
|
1134 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1135 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:
18822
diff
changeset
|
1136 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:
18822
diff
changeset
|
1137 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:
18822
diff
changeset
|
1138 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:
18822
diff
changeset
|
1139 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:
18822
diff
changeset
|
1140 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:
18822
diff
changeset
|
1141 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:
18822
diff
changeset
|
1142 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:
18822
diff
changeset
|
1143 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:
18822
diff
changeset
|
1144 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:
18822
diff
changeset
|
1145 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:
18822
diff
changeset
|
1146 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:
18822
diff
changeset
|
1147 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:
18822
diff
changeset
|
1148 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:
18822
diff
changeset
|
1149 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:
18822
diff
changeset
|
1150 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:
18822
diff
changeset
|
1151 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:
18822
diff
changeset
|
1152 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:
18822
diff
changeset
|
1153 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:
18822
diff
changeset
|
1154 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1155 // Y grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1156 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1157 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
|
1158 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
|
1159 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
|
1160 bool do_yminorgrid = (props.is_yminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1161 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1162 bool do_yminortick = props.is_yminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1163 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
|
1164 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
|
1165 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
|
1166 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
|
1167 int hmax = 0; |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1168 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
|
1169 bool mirror = props.is_box () && ystate != AXE_ANY_DIR |
13216 | 1170 && (! props.has_property ("__plotyy_axes__")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1171 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1172 set_color (props.get_ycolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1173 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1174 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1175 if (do_ygrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1176 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
|
1177 xPlane, xPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1178 zPlaneN, 1, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1179 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1180 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1181 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1182 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
|
1183 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
|
1184 signum (zpTick-zpTickN)*fz*yticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1185 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1186 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1187 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
|
1188 zpTick, zpTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1189 signum (xPlaneN-xPlane)*fx*yticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1190 0., 0., 1, mirror); |
12321
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 // tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1193 if (yticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1194 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1195 int halign = (ystate == AXE_HORZ_DIR |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1196 ? 1 : (!xyzSym || y2Dright ? 0 : 2)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1197 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
|
1198 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1199 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1200 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
|
1201 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
|
1202 1, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1203 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1204 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
|
1205 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
|
1206 zpTick, 1, halign, valign, wmax, hmax); |
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 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1209 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1210 if (do_yminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1211 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
|
1212 xPlane, xPlaneN, layer2Dtop ? zPlaneN : zPlane, |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1213 zPlaneN, 1, (zstate != AXE_DEPTH_DIR)); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1214 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1215 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1216 if (do_yminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1217 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1218 if (tick_along_z) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1219 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
|
1220 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
|
1221 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
|
1222 1, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1223 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1224 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
|
1225 zpTick, zpTick, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1226 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
|
1227 0., 0., 1, mirror); |
12321
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 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1230 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
|
1231 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1232 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1233 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
|
1234 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1235 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1236 void |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1237 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
|
1238 { |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1239 int zstate = props.get_zstate (); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1240 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1241 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
|
1242 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1243 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:
18822
diff
changeset
|
1244 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:
18822
diff
changeset
|
1245 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:
18822
diff
changeset
|
1246 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:
18822
diff
changeset
|
1247 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:
18822
diff
changeset
|
1248 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:
18822
diff
changeset
|
1249 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:
18822
diff
changeset
|
1250 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:
18822
diff
changeset
|
1251 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:
18822
diff
changeset
|
1252 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:
18822
diff
changeset
|
1253 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:
18822
diff
changeset
|
1254 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:
18822
diff
changeset
|
1255 |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1256 // Z Grid |
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1257 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1258 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
|
1259 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
|
1260 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
|
1261 bool do_zminorgrid = (props.is_zminorgrid () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1262 && (minorgridstyle != "none")); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1263 bool do_zminortick = props.is_zminortick (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1264 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
|
1265 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
|
1266 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
|
1267 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
|
1268 int hmax = 0; |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1269 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
|
1270 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1271 set_color (props.get_zcolor_rgb ()); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1272 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1273 // grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1274 if (do_zgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1275 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
|
1276 xPlane, xPlaneN, yPlane, yPlaneN, 2, true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1277 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1278 // tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1279 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1280 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1281 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1282 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
|
1283 yPlane, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1284 signum (xPlaneN-xPlane)*fx*zticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1285 0., 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1286 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1287 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
|
1288 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
|
1289 signum (yPlane-yPlaneN)*fy*zticklen, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1290 0., 2, false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1291 } |
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 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1294 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1295 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
|
1296 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
|
1297 signum (yPlaneN-yPlane)*fy*zticklen, |
12684
abfcb5d5641b
Disable mirrored axes ticks for plottyy in ftlk
Konstantinos Poulios <logari81@googlemail.com>
parents:
12446
diff
changeset
|
1298 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1299 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1300 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
|
1301 yPlaneN, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1302 signum (xPlane-xPlaneN)*fx*zticklen, |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1303 0., 0., 2, false); |
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 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1306 // FIXME: tick texts |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1307 if (zticklabels.numel () > 0) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1308 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1309 int halign = 2; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1310 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
|
1311 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1312 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1313 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1314 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1315 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
|
1316 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
|
1317 yPlane, 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1318 else |
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, xPlaneN, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1320 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
|
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 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1323 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1324 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1325 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1326 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
|
1327 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
|
1328 2, halign, valign, wmax, hmax); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1329 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1330 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
|
1331 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
|
1332 yPlaneN, 2, halign, valign, wmax, hmax); |
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 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1335 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1336 // minor grid lines |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1337 if (do_zminorgrid) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1338 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
|
1339 xPlane, xPlaneN, yPlane, yPlaneN, 2, true); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1340 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1341 // minor tick marks |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1342 if (do_zminortick) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1343 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1344 if (xySym) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1345 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1346 if (xisinf (fy)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1347 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
|
1348 yPlane, yPlane, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1349 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
|
1350 0., 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1351 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1352 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
|
1353 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
|
1354 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
|
1355 0., 2, false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1356 } |
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 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1359 if (xisinf (fx)) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1360 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
|
1361 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
|
1362 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
|
1363 0., 2, mirror); |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1364 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1365 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
|
1366 yPlaneN, yPlaneN, |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
1367 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
|
1368 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
|
1369 } |
12321
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 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1372 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
|
1373 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1374 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1375 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
|
1376 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1377 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1378 void |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1379 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
|
1380 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1381 // Children |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1382 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1383 Matrix children = props.get_all_children (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1384 std::list<graphics_object> obj_list; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1385 std::list<graphics_object>::iterator it; |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1386 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1387 // 1st pass: draw light objects |
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 // Start with the last element of the array of child objects to |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1390 // 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
|
1391 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1392 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
|
1393 { |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1394 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
|
1395 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1396 if (go.get_properties ().is_visible ()) |
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 if (go.isa ("light")) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1399 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1400 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1401 obj_list.push_back (go); |
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 } |
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 // 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
|
1406 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1407 it = obj_list.begin (); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1408 while (it != obj_list.end ()) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1409 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1410 graphics_object go = (*it); |
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 // 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
|
1413 // to "data" |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1414 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
|
1415 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1416 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
|
1417 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1418 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1419 it = obj_list.erase (it); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1420 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1421 else |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1422 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 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1425 // 3rd pass: draw remaining objects |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1426 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1427 glDisable (GL_DEPTH_TEST); |
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 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
|
1430 { |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1431 graphics_object go = (*it); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1432 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1433 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
|
1434 draw (go); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1435 } |
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 glEnable (GL_DEPTH_TEST); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1438 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1439 set_clipping (false); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1440 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1441 // FIXME: finalize rendering (transparency processing) |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1442 // FIXME: draw zoom box, if needed |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1443 } |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1444 |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1445 void |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1446 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
|
1447 { |
17726
d449f4668b72
Print warning and abort plot if data range > max float (bug #40246)
Rik <rik@octave.org>
parents:
17651
diff
changeset
|
1448 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
|
1449 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1450 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
|
1451 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
|
1452 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
|
1453 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
|
1454 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
|
1455 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
|
1456 |
17732
dcc88366f94b
Print warning and abort FLTK plot if data values < -maxfloat (bug #40246)
Rik <rik@octave.org>
parents:
17728
diff
changeset
|
1457 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
|
1458 || 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
|
1459 { |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
1460 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
|
1461 return; |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1462 } |
17726
d449f4668b72
Print warning and abort plot if data range > max float (bug #40246)
Rik <rik@octave.org>
parents:
17651
diff
changeset
|
1463 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1464 setup_opengl_transformation (props); |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1465 |
19794
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19239
diff
changeset
|
1466 // Disable line smoothing for axes |
18959
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1467 GLboolean antialias; |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1468 glGetBooleanv (GL_LINE_SMOOTH, &antialias); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1469 if (antialias == GL_TRUE) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1470 glDisable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1471 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1472 // draw axes object |
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1473 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1474 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
|
1475 draw_axes_boxes (props); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1476 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1477 set_font (props); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
1478 |
12327
2ad37783bf01
Move axes layout from opengl_renderer::draw_axes to axes::properties
Konstantinos Poulios <logari81@googlemail.com>
parents:
12321
diff
changeset
|
1479 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
|
1480 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
|
1481 draw_axes_z_grid (props); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1482 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1483 set_linestyle ("-"); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1484 |
12334
63dc132a1000
Move axes labels and title positioning to axes::properties
Konstantinos Poulios <logari81@gmail.com>
parents:
12333
diff
changeset
|
1485 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
|
1486 |
18959
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1487 // Re-enable line smoothing for children |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1488 if (antialias == GL_TRUE) |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1489 glEnable (GL_LINE_SMOOTH); |
be8d7721ac16
Use OpenGL line smoothing when multisample is not available.
Rik <rik@octave.org>
parents:
18958
diff
changeset
|
1490 |
12321
6ba28900706b
opengl_renderer::draw_axes: simplify with subfunctions
John W. Eaton <jwe@octave.org>
parents:
12174
diff
changeset
|
1491 draw_axes_children (props); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1492 } |
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 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1495 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
|
1496 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1497 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
|
1498 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
|
1499 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
|
1500 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1501 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
|
1502 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
|
1503 (has_z ? z.numel () |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1504 : std::numeric_limits<int>::max ()))); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1505 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
|
1506 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1507 std::vector<octave_uint8> clip (n); |
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 if (has_z) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1510 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1511 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
|
1512 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1513 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1514 double z_mid = (zmin+zmax)/2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1515 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1516 for (int i = 0; i < n; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1517 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
|
1518 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1519 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1520 if (! props.linestyle_is ("none")) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1521 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1522 set_color (props.get_color_rgb ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1523 set_linestyle (props.get_linestyle (), false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1524 set_linewidth (props.get_linewidth ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1525 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1526 if (has_z) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1527 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1528 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1529 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1530 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1531 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1532 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1533 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1534 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1535 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1536 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1537 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1538 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
|
1539 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1540 glVertex3d (x(i), y(i), z(i)); |
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 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1543 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1544 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1545 glEnd (); |
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 } |
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 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1550 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1551 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1552 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1553 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1554 bool flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1555 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1556 for (int i = 1; i < n; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1557 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1558 if ((clip[i-1] & clip[i]) == clip_ok) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1559 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1560 if (! flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1561 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1562 flag = true; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1563 glBegin (GL_LINE_STRIP); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1564 glVertex2d (x(i-1), y(i-1)); |
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 glVertex2d (x(i), y(i)); |
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 else if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1569 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1570 flag = false; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1571 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1572 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1573 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1574 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1575 if (flag) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1576 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1577 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1578 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1579 set_linewidth (0.5); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1580 set_linestyle ("-"); |
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 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1583 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1584 |
20071
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
1585 if (! props.marker_is ("none") |
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
1586 && ! (props.markeredgecolor_is ("none") |
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
1587 && props.markerfacecolor_is ("none"))) |
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 Matrix lc, fc; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1590 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1591 if (props.markeredgecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1592 lc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1593 else if (! props.markeredgecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1594 lc = props.get_markeredgecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1595 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1596 if (props.markerfacecolor_is ("auto")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1597 fc = props.get_color_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1598 else if (! props.markerfacecolor_is ("none")) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1599 fc = props.get_markerfacecolor_rgb (); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1600 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1601 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
|
1602 props.get_linewidth ()); |
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 for (int i = 0; i < n; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1605 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1606 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
|
1607 draw_marker (x(i), y(i), |
18813
75ec138ba53b
Fix Z-order stacking of line markers and other graphic objects (bug #40054).
Rik <rik@octave.org>
parents:
18321
diff
changeset
|
1608 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
|
1609 lc, fc); |
7825
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 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1612 end_marker (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1613 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1614 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1615 set_clipping (props.is_clipping ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1616 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1617 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1618 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
1619 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
|
1620 { |
9681 | 1621 const Matrix x = xform.xscale (props.get_xdata ().matrix_value ()); |
1622 const Matrix y = xform.yscale (props.get_ydata ().matrix_value ()); | |
1623 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
|
1624 |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
1625 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
|
1626 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
|
1627 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1628 NDArray c; |
9681 | 1629 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
|
1630 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1631 // FIXME: handle transparency |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1632 Matrix a; |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1633 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1634 if (props.facelighting_is ("phong") || props.edgelighting_is ("phong")) |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
1635 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
|
1636 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1637 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
|
1638 (props.facecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1639 (props.facecolor_is ("interp") ? 2 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1640 (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
|
1641 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
|
1642 (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
|
1643 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
|
1644 (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
|
1645 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
|
1646 (props.edgecolor_is ("flat") ? 1 : |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1647 (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
|
1648 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
|
1649 (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
|
1650 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
|
1651 (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
|
1652 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1653 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:
18959
diff
changeset
|
1654 : 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
|
1655 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
|
1656 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1657 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
|
1658 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
|
1659 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
|
1660 float se = props.get_specularexponent (); |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1661 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
|
1662 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
|
1663 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1664 opengl_texture tex; |
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1665 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1666 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
|
1667 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
|
1668 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
|
1669 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1670 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
|
1671 |
17558
e48a22b94727
Don't plot NaN values in cdata (bug #40114).
Rik <rik@octave.org>
parents:
17269
diff
changeset
|
1672 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
|
1673 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
|
1674 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1675 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
|
1676 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1677 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
|
1678 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1679 if (x_mat) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1680 i1 = i; |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1681 |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1682 for (int j = 0; j < zc; j++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1683 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1684 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1685 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1686 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1687 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
|
1688 } |
7829
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 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1691 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
|
1692 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1693 // FIXME: implement alphadata conversion |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1694 //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
|
1695 } |
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 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
|
1698 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1699 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
|
1700 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1701 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
|
1702 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
|
1703 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1704 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
1705 // 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:
18822
diff
changeset
|
1706 // transferring pixel data to OpenGL is time consuming. |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1707 if (fc_mode == TEXTURE) |
7831
c7925666f0bf
Add OpenGL texture wrapper class (not complete yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7829
diff
changeset
|
1708 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
|
1709 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1710 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
|
1711 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1712 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1713 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1714 if (fc_mode == UNIFORM || fc_mode == TEXTURE) |
10315
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 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1717 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1718 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1719 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1720 cb[i] = as * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1721 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1722 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1723 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1724 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1725 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1726 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1727 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1728 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1729 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1730 glEnable (GL_LIGHTING); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1731 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:
18959
diff
changeset
|
1732 : GL_FLAT); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1733 set_polygon_offset (true, 1); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1734 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1735 glEnable (GL_TEXTURE_2D); |
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 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1738 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1739 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1740 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1741 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1742 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1743 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1744 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1745 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1746 { |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1747 |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1748 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
|
1749 || clip(j-1, i) || clip(j, i)) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1750 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1751 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1752 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
|
1753 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1754 // "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
|
1755 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
|
1756 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1757 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1758 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
|
1759 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1760 // "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
|
1761 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
|
1762 && 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
|
1763 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1764 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1765 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1766 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1767 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1768 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1769 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1770 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1771 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1772 glBegin (GL_QUADS); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1773 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1774 // Vertex 1 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1775 if (fc_mode == TEXTURE) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1776 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
|
1777 double (j-1) / (zr-1)); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1778 else if (fc_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 // 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
|
1781 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1782 cb[k] = c(j-1, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1783 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1784 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1785 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1786 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1787 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1788 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1789 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1790 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1791 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1792 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
|
1793 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1794 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1795 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1796 if (fl_mode > 0) |
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 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
|
1799 + 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
|
1800 + 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
|
1801 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
|
1802 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
|
1803 n(j-1,i-1,2)/d); |
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 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
|
1806 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1807 // Vertex 2 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1808 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1809 tex.tex_coord (double (i) / (zc-1), double (j-1) / (zr-1)); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1810 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1811 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1812 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1813 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1814 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1815 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1816 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1817 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1818 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1819 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1820 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1821 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1822 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1823 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1824 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1825 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1826 } |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
1827 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1828 if (fl_mode == GOURAUD) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1829 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1830 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
|
1831 + 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
|
1832 + 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
|
1833 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
|
1834 } |
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 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
|
1837 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1838 // Vertex 3 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1839 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1840 tex.tex_coord (double (i) / (zc-1), double (j) / (zr-1)); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1841 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1842 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1843 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1844 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1845 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1846 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1847 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1848 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1849 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1850 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1851 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1852 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1853 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1854 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1855 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1856 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1857 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1858 if (fl_mode == GOURAUD) |
10315
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 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
|
1861 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1862 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1863 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
|
1864 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1865 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
|
1866 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1867 // Vertex 4 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1868 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1869 tex.tex_coord (double (i-1) / (zc-1), double (j) / (zr-1)); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1870 else if (fc_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1871 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1872 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1873 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1874 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1875 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1876 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1877 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1878 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1879 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1880 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
1881 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1882 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1883 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1884 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1885 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1886 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1887 if (fl_mode == GOURAUD) |
10315
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 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
|
1890 + 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
|
1891 + 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
|
1892 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
|
1893 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1894 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
|
1895 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1896 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1897 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1898 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1899 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1900 set_polygon_offset (false); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1901 if (fc_mode == TEXTURE) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1902 glDisable (GL_TEXTURE_2D); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1903 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1904 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1905 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1906 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1907 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1908 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1909 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1910 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1911 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1912 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
1913 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
|
1914 { |
7846
d7737a4268b7
Fix typos in property names (edgealpha/facealpha).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7838
diff
changeset
|
1915 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1916 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1917 if (ec_mode == UNIFORM) |
10315
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 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1920 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1921 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1922 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1923 cb[i] = as * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1924 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1925 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1926 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1927 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1928 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
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 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1931 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1932 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1933 glEnable (GL_LIGHTING); |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1934 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:
18959
diff
changeset
|
1935 : GL_FLAT); |
10315
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 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1938 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1939 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1940 // Mesh along Y-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1941 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1942 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
|
1943 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1944 for (int i = 0; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1945 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1946 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1947 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1948 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1949 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1950 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1951 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1952 for (int j = 1; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1953 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1954 if (clip(j-1,i) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1955 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1956 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1957 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
|
1958 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1959 // "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
|
1960 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
|
1961 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1962 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
1963 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
|
1964 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1965 // "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
|
1966 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
|
1967 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1968 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
1969 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1970 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1971 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1972 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1973 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1974 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1975 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1976 glBegin (GL_LINES); |
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 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1979 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1980 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1981 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1982 cb[k] = c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1983 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1984 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1985 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1986 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1987 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1988 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1989 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1992 cb[k] = ds * c(j-1, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1993 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
1994 } |
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 if (el_mode > 0) |
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 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
|
1999 + 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
|
2000 + 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
|
2001 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
|
2002 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2003 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
|
2004 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2005 // Vertex 2 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2006 if (ec_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2007 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2008 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2009 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2010 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2011 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2012 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2013 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2014 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2015 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2016 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2017 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2018 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2019 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2020 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2021 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2022 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2023 if (el_mode == GOURAUD) |
8674
0d263850d582
Fix calculation of diffuse reflectance. Calculate surface normals here now.
Kai Habel
parents:
8377
diff
changeset
|
2024 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2025 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
|
2026 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2027 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2028 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
|
2029 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2030 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
|
2031 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2032 glEnd (); |
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 } |
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 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2037 // Mesh along X-axis |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2038 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2039 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
|
2040 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2041 for (int j = 0; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2042 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2043 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2044 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2045 j1 = j-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2046 j2 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2047 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2048 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2049 for (int i = 1; i < zc; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2050 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2051 if (clip(j,i-1) || clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2052 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2053 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2054 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
|
2055 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2056 // "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
|
2057 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
|
2058 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2059 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2060 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
|
2061 { |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2062 // "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
|
2063 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
|
2064 continue; |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2065 } |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2066 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2067 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2068 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2069 i1 = i-1; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2070 i2 = i; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2071 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2072 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2073 glBegin (GL_LINES); |
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 // Vertex 1 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2076 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2077 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2078 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2079 cb[k] = c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2080 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2081 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2082 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2083 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2084 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2085 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2086 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2087 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2088 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2089 cb[k] = ds * c(j, i-1, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2090 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2091 } |
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 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2094 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2095 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
|
2096 + 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
|
2097 + 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
|
2098 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
|
2099 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2100 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
|
2101 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2102 // Vertex 2 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2103 if (ec_mode == INTERP) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2104 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2105 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2106 cb[k] = c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2107 glColor3fv (cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2108 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2109 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2110 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2111 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2112 cb[k] *= as; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2113 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
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 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2116 cb[k] = ds * c(j, i, k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2117 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2118 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2119 } |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2120 if (el_mode == GOURAUD) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2121 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2122 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
|
2123 + n(j,i,1) * n(j,i,1) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2124 + n(j,i,2) * n(j,i,2)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2125 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
|
2126 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2127 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
|
2128 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2129 glEnd (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2130 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2131 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2132 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2133 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2134 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2135 set_linewidth (0.5); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2136 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2137 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2138 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2139 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2140 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2141 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2142 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2143 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2144 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2145 |
20071
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
2146 if (! props.marker_is ("none") |
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
2147 && ! (props.markeredgecolor_is ("none") |
17d647821d61
maint: More cleanup of C++ code to follow Octave coding conventions.
John W. Eaton <jwe@octave.org>
parents:
20068
diff
changeset
|
2148 && 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
|
2149 { |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2150 // 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
|
2151 // 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
|
2152 // 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
|
2153 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2154 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
|
2155 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
|
2156 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2157 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
|
2158 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
|
2159 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
|
2160 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2161 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
|
2162 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2163 mecolor = props.get_edgecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2164 do_edge = ! props.edgecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2165 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2166 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2167 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
|
2168 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2169 mfcolor = props.get_facecolor_rgb (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2170 do_face = ! props.facecolor_is ("none"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2171 } |
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 if ((mecolor.numel () == 0 || mfcolor.numel () == 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2174 && c.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2175 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
|
2176 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2177 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
|
2178 props.get_linewidth ()); |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2179 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2180 for (int i = 0; i < zc; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2181 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2182 if (y_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2183 i1 = i; |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2184 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2185 for (int j = 0; j < zr; j++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2186 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2187 if (clip(j,i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2188 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2189 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2190 if (x_mat) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2191 j1 = j; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2192 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2193 if ((do_edge && mecolor.numel () == 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2194 || (do_face && mfcolor.numel () == 0)) |
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 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
|
2197 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
|
2198 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2199 for (int k = 0; k < 3; k++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2200 cc(k) = c(j,i,k); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2201 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2202 |
17589
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2203 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
|
2204 : Matrix ()); |
c3aadd228c37
Fix surf/mesh handling of NaN values in cdata (transparent) (bug #32275).
Rik <rik@octave.org>
parents:
17558
diff
changeset
|
2205 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
|
2206 : Matrix ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2207 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2208 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
|
2209 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2210 } |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2211 |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2212 end_marker (); |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2213 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2214 } |
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2215 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
2216 // 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:
18822
diff
changeset
|
2217 // 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
|
2218 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2219 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
|
2220 { |
19091
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2221 // 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:
19012
diff
changeset
|
2222 std::string msg; |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2223 if (props.has_bad_data (msg)) |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2224 { |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2225 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:
19012
diff
changeset
|
2226 return; |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2227 } |
df972b9d080a
Translate patch property listeners to C++ (bug #42159)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19012
diff
changeset
|
2228 |
9681 | 2229 const Matrix f = props.get_faces ().matrix_value (); |
2230 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
|
2231 Matrix c; |
9681 | 2232 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
|
2233 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
|
2234 |
7870 | 2235 int nv = v.rows (); |
2236 int nf = f.rows (); | |
2237 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
|
2238 |
8ff92634982d
Add initial 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 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
|
2240 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
|
2241 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
|
2242 |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
2243 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
|
2244 || 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
|
2245 (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
|
2246 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
|
2247 (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
|
2248 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
|
2249 (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
|
2250 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
|
2251 || 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
|
2252 (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
|
2253 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
|
2254 (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
|
2255 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
|
2256 (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
|
2257 |
8ff92634982d
Add initial 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 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
|
2259 Matrix ecolor = props.get_edgecolor_rgb (); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2260 |
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
|
2261 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
|
2262 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
|
2263 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
|
2264 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
|
2265 |
8ff92634982d
Add initial 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 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
|
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 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
|
2269 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
|
2270 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
|
2271 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
|
2272 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
|
2273 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
|
2274 |
8ff92634982d
Add initial 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 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
|
2276 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
|
2277 |
8ff92634982d
Add initial 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 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
|
2279 { |
8ff92634982d
Add initial 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 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
|
2281 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
|
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 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
|
2284 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
|
2285 |
8ff92634982d
Add initial 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 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
|
2287 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
|
2288 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2289 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2290 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
|
2291 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2292 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
|
2293 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2294 if (c.rows () == 1) |
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 // 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
|
2297 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2298 if (fc_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2299 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2300 fcolor = c; |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2301 fc_mode = UNIFORM; |
10315
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 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2304 if (ec_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2305 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2306 ecolor = c; |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2307 ec_mode = UNIFORM; |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2308 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2309 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2310 c = Matrix (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2311 } |
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
|
2312 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2313 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
|
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 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2316 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
|
2317 { |
8ff92634982d
Add initial 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 // 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
|
2319 //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
|
2320 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
|
2321 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2322 |
7924 | 2323 octave_idx_type fr = f.rows (); |
7914
e998e81224b5
Various compilation fixes for MSVC.
John W. Eaton <jwe@octave.org>
parents:
7907
diff
changeset
|
2324 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
|
2325 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2326 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
|
2327 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
|
2328 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2329 int idx = int (f(i,j) - 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2330 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2331 Matrix vv (1, 3, 0.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2332 Matrix cc; |
18853
8969bd721448
Fix Z-depth issues of patches and lines in 2-D plots (bug #40722).
Rik <rik@octave.org>
parents:
18838
diff
changeset
|
2333 Matrix nn (1, 3, 0.0); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2334 double aa = 1.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 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
|
2337 if (has_z) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2338 vv(2) = v(idx,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2339 // FIXME: uncomment when patch object has normal computation |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2340 //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
|
2341 if (c.numel () > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2342 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2343 cc.resize (1, 3); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2344 if (has_facecolor) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2345 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
|
2346 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2347 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
|
2348 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2349 if (a.numel () > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2350 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2351 if (has_facealpha) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2352 aa = a(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2353 else |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2354 aa = a(idx); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2355 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2356 |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
2357 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
|
2358 } |
8ff92634982d
Add initial 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 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
|
2361 { |
8ff92634982d
Add initial 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 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
|
2363 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2364 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
|
2365 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
|
2366 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2367 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2368 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
|
2369 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2370 // 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
|
2371 if (props.get_facealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2372 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2373 if (fc_mode == UNIFORM) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2374 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2375 glColor3dv (fcolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2376 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2377 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2378 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2379 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2380 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2381 cb[i] = (as * fcolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2382 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2383 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2384 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2385 cb[i] = ds * fcolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2386 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2387 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2388 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2389 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2390 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2391 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2392 |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
diff
changeset
|
2393 // 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:
18885
diff
changeset
|
2394 // 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:
18885
diff
changeset
|
2395 // 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:
18885
diff
changeset
|
2396 // planes at +2.5. |
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
diff
changeset
|
2397 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
|
2398 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2399 for (int i = 0; i < nf; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2400 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2401 if (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2402 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2403 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2404 tess.begin_polygon (true); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2405 tess.begin_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2406 |
18320
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2407 // 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
|
2408 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
|
2409 { |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2410 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
|
2411 |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2412 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
|
2413 } |
2ed9498e4a74
Change diagonal of FaceColor interpolation for patch objects to match Matlab.
Rik <rik@octave.org>
parents:
18133
diff
changeset
|
2414 |
18133
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2415 if (count_f(i) > 0) |
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 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
|
2418 |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2419 if (fc_mode == FLAT) |
18133
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2420 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2421 // 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
|
2422 Matrix col = vv->color; |
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 if (col.numel () == 3) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2425 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2426 glColor3dv (col.data ()); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2427 if (fl_mode > 0) |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2428 { |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2429 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
|
2430 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2431 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
|
2432 cb[k] = (vv->ambient * col(k)); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2433 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
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 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
|
2436 cb[k] = (vv->diffuse * col(k)); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2437 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2438 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2439 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2440 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2441 |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2442 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
|
2443 } |
647d806868ee
Color patch face based upon first vertex (bug #40247).
Rik <rik@octave.org>
parents:
18099
diff
changeset
|
2444 |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2445 tess.end_contour (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2446 tess.end_polygon (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2447 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2448 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2449 if (fl_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2450 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2451 } |
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
|
2452 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2453 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2454 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2455 } |
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
|
2456 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2457 |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2458 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
|
2459 { |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2460 // 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
|
2461 if (props.get_edgealpha_double () == 1) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2462 { |
18960
79f69742971a
gl-render.cc: Use enum symbolic constants for code clarity.
Rik <rik@octave.org>
parents:
18959
diff
changeset
|
2463 if (ec_mode == UNIFORM) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2464 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2465 glColor3dv (ecolor.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2466 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2467 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2468 float cb[4] = { 0, 0, 0, 1 }; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2469 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2470 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2471 cb[i] = (as * ecolor(i)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2472 glMaterialfv (LIGHT_MODE, GL_AMBIENT, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2473 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2474 for (int i = 0; i < 3; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2475 cb[i] = ds * ecolor(i); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2476 glMaterialfv (LIGHT_MODE, GL_DIFFUSE, cb); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2477 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2478 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2479 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2480 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2481 glEnable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2482 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2483 set_linestyle (props.get_linestyle (), false); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2484 set_linewidth (props.get_linewidth ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2485 |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
diff
changeset
|
2486 // 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:
18885
diff
changeset
|
2487 // 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:
18885
diff
changeset
|
2488 // 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:
18885
diff
changeset
|
2489 // automatically sets the glType to GL_LINE_LOOP. This primitive is |
19794
db92e7e28e1f
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
19239
diff
changeset
|
2490 // 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
|
2491 patch_tesselator tess (this, ec_mode, el_mode); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2492 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2493 for (int i = 0; i < nf; i++) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2494 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2495 if (clip_f(i)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2496 { |
19012
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2497 // 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
|
2498 bool flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2499 |
19012
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2500 glShadeModel ((ec_mode == INTERP || el_mode == GOURAUD) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2501 ? GL_SMOOTH : GL_FLAT); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2502 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2503 // Add vertices in reverse order for Matlab compatibility |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2504 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
|
2505 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2506 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
|
2507 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2508 vertex_data::vertex_data_rep *vv |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2509 = 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
|
2510 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
|
2511 if (! flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2512 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2513 flag = true; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2514 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
|
2515 } |
19012
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2516 if (ec_mode != UNIFORM) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2517 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2518 Matrix col = vv->color; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2519 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2520 if (col.numel () == 3) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2521 glColor3dv (col.data ()); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2522 } |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2523 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
|
2524 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2525 else if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2526 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2527 flag = false; |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2528 glEnd (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2529 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2530 } |
19012
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2531 // 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:
18960
diff
changeset
|
2532 // from vertex 0 to vertex N. |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2533 int j = count_f(i)-1; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2534 if (flag && ! clip(int (f(i,j) - 1))) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2535 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2536 vertex_data::vertex_data_rep *vv |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2537 = vdata[i+j*fr].get_rep (); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2538 const Matrix m = vv->coords; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2539 if (ec_mode != UNIFORM) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2540 { |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2541 Matrix col = vv->color; |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2542 |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2543 if (col.numel () == 3) |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2544 glColor3dv (col.data ()); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2545 } |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2546 glVertex3d (m(0), m(1), m(2)); |
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2547 } |
11175
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2548 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2549 if (flag) |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2550 glEnd (); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2551 } |
19012
096b1a159d1f
Correctly render unclosed contour of a patch object.
Rik <rik@octave.org>
parents:
18960
diff
changeset
|
2552 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
|
2553 { |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2554 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
|
2555 tess.begin_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2556 |
18321
c8d6ca222bcc
Make "edgecolor"="flat" for patch objects compatible with Matlab.
Rik <rik@octave.org>
parents:
18320
diff
changeset
|
2557 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
|
2558 { |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2559 vertex_data::vertex_data_rep *vv |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2560 = 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
|
2561 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
|
2562 } |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2563 |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2564 tess.end_contour (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2565 tess.end_polygon (); |
c0a95a5c6d25
Address the speed of plotting large hggroup groups and in particular
David Bateman <dbateman@free.fr>
parents:
11168
diff
changeset
|
2566 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2567 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2568 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2569 set_linestyle ("-"); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2570 set_linewidth (0.5); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2571 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2572 if (el_mode > 0) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2573 glDisable (GL_LIGHTING); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2574 } |
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
|
2575 else |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2576 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2577 // FIXME: implement transparency |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2578 } |
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
|
2579 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2580 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2581 if (! props.marker_is ("none") |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2582 && ! (props.markeredgecolor_is ("none") |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2583 && 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
|
2584 { |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2585 bool do_edge = ! props.markeredgecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2586 bool do_face = ! props.markerfacecolor_is ("none"); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2587 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2588 Matrix mecolor = props.get_markeredgecolor_rgb (); |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2589 Matrix mfcolor = props.get_markerfacecolor_rgb (); |
12446
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 bool has_markerfacecolor = false; |
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 if ((mecolor.numel () == 0 && ! props.markeredgecolor_is ("none")) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2594 || (mfcolor.numel () == 0 && ! props.markerfacecolor_is ("none"))) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2595 { |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2596 Matrix mc = props.get_color_data ().matrix_value (); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2597 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2598 if (mc.rows () == 1) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2599 { |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2600 // 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
|
2601 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2602 if (mfcolor.numel () == 0 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2603 && ! props.markerfacecolor_is ("none")) |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2604 mfcolor = mc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2605 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2606 if (mecolor.numel () == 0 |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2607 && ! props.markeredgecolor_is ("none")) |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2608 mecolor = mc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2609 } |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2610 else |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2611 { |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2612 if (c.numel () == 0) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2613 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
|
2614 has_markerfacecolor = ((c.numel () > 0) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2615 && (c.rows () == f.rows ())); |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2616 } |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2617 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2618 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2619 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2620 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
|
2621 props.get_linewidth ()); |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2622 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2623 for (int i = 0; i < nf; i++) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2624 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
|
2625 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2626 int idx = int (f(i,j) - 1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2627 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2628 if (clip(idx)) |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2629 continue; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2630 |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2631 Matrix cc; |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2632 if (c.numel () > 0) |
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 cc.resize (1, 3); |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2635 if (has_markerfacecolor) |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2636 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
|
2637 else |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2638 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
|
2639 } |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2640 |
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2641 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
|
2642 : Matrix ()); |
12446
f899f451fe76
Fix for fltk patch markers (#31801)
David Bateman <dbateman@free.fr>
parents:
12443
diff
changeset
|
2643 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
|
2644 : Matrix ()); |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2645 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2646 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
|
2647 } |
7838
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2648 |
0a2ba0053fbd
Render marker of patch objects.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7837
diff
changeset
|
2649 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
|
2650 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2651 } |
8ff92634982d
Add initial support for patch rendering through GLU tessellation (no transparency, no border, no markers yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7831
diff
changeset
|
2652 |
7829
8ca8e97e8c0a
Add rendering interface for surface object (no implementation yet).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7825
diff
changeset
|
2653 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2654 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
|
2655 { |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2656 draw (props.get_children ()); |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2657 } |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2658 |
35e8d6199455
Add hggroup support in OpenGL renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
7851
diff
changeset
|
2659 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2660 opengl_renderer::draw_text (const text::properties& props) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2661 { |
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
|
2662 if (props.get_string ().is_empty ()) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2663 return; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2664 |
19239
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19096
diff
changeset
|
2665 set_font (props); |
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19096
diff
changeset
|
2666 |
13961
0fea4cf22f88
restore legend text with OpenGL + FLTK graphics (bug #34907)
John W. Eaton <jwe@octave.org>
parents:
13758
diff
changeset
|
2667 Matrix pos = xform.scale (props.get_data_position ()); |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2668 const Matrix bbox = props.get_extent_matrix (); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2669 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2670 // FIXME: handle margin and surrounding box |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2671 bool blend = glIsEnabled (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2672 |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2673 glEnable (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2674 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
|
2675 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
|
2676 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
|
2677 glDrawPixels (bbox(2), bbox(3), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2678 GL_RGBA, GL_UNSIGNED_BYTE, props.get_pixels ().data ()); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2679 glDisable (GL_ALPHA_TEST); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2680 if (! blend) |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2681 glDisable (GL_BLEND); |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2682 |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2683 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2684 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2685 void |
9798
2d6a5af744b6
printing for fltk backend using gl2ps
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9687
diff
changeset
|
2686 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
|
2687 { |
9884
fed4aad2cdca
handle indexed images in opengl renderer
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9834
diff
changeset
|
2688 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
|
2689 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
|
2690 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
|
2691 int w = dv(1); |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2692 |
11093
d748acc75658
gl-render.cc: Treat images with scalar unique(x/ydata) like Matlab.
Ben Abbott <bpabbott@mac.com>
parents:
11026
diff
changeset
|
2693 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
|
2694 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
|
2695 |
15069
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2696 // 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
|
2697 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
|
2698 return; |
7a3957ca99c3
Handle complex arguments in imagesc (bug #36866)
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
14861
diff
changeset
|
2699 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2700 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
|
2701 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
|
2702 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2703 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
|
2704 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
|
2705 |
9681 | 2706 const ColumnVector p0 = xform.transform (x(0), y(0), 0); |
2707 const ColumnVector p1 = xform.transform (x(1), y(1), 0); | |
2708 | |
17727
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2709 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
|
2710 { |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
2711 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
|
2712 return; |
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2713 } |
36d646ead233
Fix segfault when x or y data values are large (bug #39925).
Rik <rik@octave.org>
parents:
17726
diff
changeset
|
2714 |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2715 // image pixel size in screen pixel units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2716 float pix_dx, pix_dy; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2717 // image pixel size in normalized units |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2718 float nor_dx, nor_dy; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2719 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2720 if (w > 1) |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2721 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2722 pix_dx = (p1(0) - p0(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2723 nor_dx = (x(1) - x(0))/(w-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2724 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2725 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2726 { |
10076 | 2727 const ColumnVector p1w = xform.transform (x(1) + 1, y(1), 0); |
2728 pix_dx = p1w(0) - p0(0); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2729 nor_dx = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2730 } |
10076 | 2731 |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2732 if (h > 1) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2733 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2734 pix_dy = (p1(1) - p0(1))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2735 nor_dy = (y(1) - y(0))/(h-1); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2736 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2737 else |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2738 { |
10076 | 2739 const ColumnVector p1h = xform.transform (x(1), y(1) + 1, 0); |
2740 pix_dy = p1h(1) - p0(1); | |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2741 nor_dy = 1; |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2742 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2743 |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
2744 // 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:
18832
diff
changeset
|
2745 // 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
|
2746 |
18099
6a71e5030df5
Follow coding convention of defining and initializing only 1 variable per line in liboctinterp.
Rik <rik@octave.org>
parents:
17787
diff
changeset
|
2747 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
|
2748 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
|
2749 i0 = 0, i1 = h; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2750 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2751 float im_xmin = x(0) - nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2752 float im_xmax = x(1) + nor_dx/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2753 float im_ymin = y(0) - nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2754 float im_ymax = y(1) + nor_dy/2; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2755 if (props.is_clipping ()) // clip to axes |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2756 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2757 if (im_xmin < xmin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2758 j0 += (xmin - im_xmin)/nor_dx + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2759 if (im_xmax > xmax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2760 j1 -= (im_xmax - xmax)/nor_dx ; |
9687
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 if (im_ymin < ymin) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2763 i0 += (ymin - im_ymin)/nor_dy + 1; |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2764 if (im_ymax > ymax) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2765 i1 -= (im_ymax - ymax)/nor_dy; |
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 else // clip to viewport |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2768 { |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2769 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
|
2770 glGetFloatv (GL_VIEWPORT, vp); |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
2771 // 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
|
2772 |
9687
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 |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2775 if (i0 >= i1 || j0 >= j1) |
9687
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2776 return; |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2777 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2778 glPixelZoom (pix_dx, -pix_dy); |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2779 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
|
2780 |
86aa08bbc887
image clipping and axes fixes
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9682
diff
changeset
|
2781 // by default this is 4 |
18838
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2782 glPixelStorei (GL_UNPACK_ALIGNMENT, 1); |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2783 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2784 // Expect RGB data |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2785 if (dv.length () == 3 && dv(2) == 3) |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2786 { |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2787 if (cdata.is_double_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2788 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2789 const NDArray xcdata = cdata.array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2790 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2791 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
|
2792 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2793 for (int i = i0; i < i1; i++) |
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 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
|
2796 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2797 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2798 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2799 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2800 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2801 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2802 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2803 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
|
2804 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2805 } |
18838
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2806 else if (cdata.is_single_type ()) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2807 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2808 const FloatNDArray xcdata = cdata.float_array_value (); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2809 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2810 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:
18837
diff
changeset
|
2811 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2812 for (int i = i0; i < i1; i++) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2813 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2814 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:
18837
diff
changeset
|
2815 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2816 a[idx] = xcdata(i,j,0); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2817 a[idx+1] = xcdata(i,j,1); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2818 a[idx+2] = xcdata(i,j,2); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2819 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2820 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2821 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2822 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:
18837
diff
changeset
|
2823 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2824 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2825 else if (cdata.is_uint8_type ()) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2826 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2827 const uint8NDArray xcdata = cdata.uint8_array_value (); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2828 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2829 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:
18837
diff
changeset
|
2830 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2831 for (int i = i0; i < i1; i++) |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2832 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2833 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:
18837
diff
changeset
|
2834 { |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2835 a[idx] = xcdata(i,j,0); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2836 a[idx+1] = xcdata(i,j,1); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2837 a[idx+2] = xcdata(i,j,2); |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2838 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2839 } |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2840 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2841 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:
18837
diff
changeset
|
2842 |
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2843 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2844 else if (cdata.is_uint16_type ()) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2845 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2846 const uint16NDArray xcdata = cdata.uint16_array_value (); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2847 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2848 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
|
2849 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2850 for (int i = i0; i < i1; i++) |
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 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
|
2853 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2854 a[idx] = xcdata(i,j,0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2855 a[idx+1] = xcdata(i,j,1); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2856 a[idx+2] = xcdata(i,j,2); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2857 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2858 } |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2859 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2860 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
|
2861 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
2862 } |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2863 else |
18838
44f0d1a53ead
Add support for integer data types for image cdata.
Rik <rik@octave.org>
parents:
18837
diff
changeset
|
2864 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
|
2865 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11585
diff
changeset
|
2866 else |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
2867 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
|
2868 |
9680
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2869 glPixelZoom (1, 1); |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2870 } |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2871 |
73153525df9a
initial implementation of OpenGL image rendering
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9616
diff
changeset
|
2872 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2873 opengl_renderer::set_viewport (int w, int h) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2874 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2875 glViewport (0, 0, w, h); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2876 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2877 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2878 void |
9950
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2879 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
|
2880 GLenum type, const GLvoid *data) |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2881 { |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2882 glDrawPixels (width, height, format, type, data); |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2883 } |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2884 |
7dedfd70dd9f
image printing for fltk backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9884
diff
changeset
|
2885 void |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2886 opengl_renderer::set_color (const Matrix& c) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2887 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2888 glColor3dv (c.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2889 #if HAVE_FREETYPE |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2890 text_renderer.set_color (c); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2891 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2892 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2893 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2894 void |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2895 opengl_renderer::set_font (const base_properties& props) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2896 { |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2897 #if HAVE_FREETYPE |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2898 text_renderer.set_font (props.get ("fontname").string_value (), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2899 props.get ("fontweight").string_value (), |
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
2900 props.get ("fontangle").string_value (), |
19239
1288a2f27769
Handle non "points" fontunits properties (bug # 40158)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
19096
diff
changeset
|
2901 props.get ("fontsize_points").double_value ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
2902 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2903 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2904 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2905 void |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
diff
changeset
|
2906 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
|
2907 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2908 if (on) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2909 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2910 glEnable (GL_POLYGON_OFFSET_FILL); |
7906 | 2911 glEnable (GL_POLYGON_OFFSET_LINE); |
18957
75f8926deef1
Fix Z-order stacking of patches and axes grid lines (bug #40722).
Rik <rik@octave.org>
parents:
18885
diff
changeset
|
2912 glPolygonOffset (offset, offset); |
7825
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 else |
7906 | 2915 { |
2916 glDisable (GL_POLYGON_OFFSET_FILL); | |
2917 glDisable (GL_POLYGON_OFFSET_LINE); | |
2918 } | |
7825
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 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2921 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2922 opengl_renderer::set_linewidth (float w) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2923 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2924 glLineWidth (w); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2925 } |
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 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2928 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
|
2929 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2930 bool solid = false; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2931 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2932 if (s == "-") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2933 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2934 glLineStipple (1, static_cast<unsigned short> (0xFFFF)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2935 solid = true; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2936 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2937 else if (s == ":") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2938 glLineStipple (1, static_cast<unsigned short> (0x8888)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2939 else if (s == "--") |
19096
c0fb31c46e87
Change OpenGL dashed line style to 50% mark / 50% space.
Rik <rik@octave.org>
parents:
19091
diff
changeset
|
2940 glLineStipple (1, static_cast<unsigned short> (0xF0F0)); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2941 else if (s == "-.") |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2942 glLineStipple (1, static_cast<unsigned short> (0x020F)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2943 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2944 glLineStipple (1, static_cast<unsigned short> (0x0000)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2945 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2946 if (solid && ! use_stipple) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2947 glDisable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2948 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2949 glEnable (GL_LINE_STIPPLE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2950 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2951 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2952 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2953 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
|
2954 double z1, double z2) |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2955 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2956 double dx = (x2-x1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2957 double dy = (y2-y1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2958 double dz = (z2-z1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2959 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2960 x1 -= 0.001*dx; x2 += 0.001*dx; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2961 y1 -= 0.001*dy; y2 += 0.001*dy; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2962 z1 -= 0.001*dz; z2 += 0.001*dz; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2963 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2964 ColumnVector p (4, 0.0); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2965 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2966 p(0) = -1; p(3) = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2967 glClipPlane (GL_CLIP_PLANE0, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2968 p(0) = 1; p(3) = -x1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2969 glClipPlane (GL_CLIP_PLANE1, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2970 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
|
2971 glClipPlane (GL_CLIP_PLANE2, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2972 p(1) = 1; p(3) = -y1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2973 glClipPlane (GL_CLIP_PLANE3, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2974 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
|
2975 glClipPlane (GL_CLIP_PLANE4, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2976 p(2) = 1; p(3) = -z1; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2977 glClipPlane (GL_CLIP_PLANE5, p.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2978 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2979 xmin = x1; xmax = x2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2980 ymin = y1; ymax = y2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2981 zmin = z1; zmax = z2; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2982 } |
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 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2985 opengl_renderer::set_clipping (bool enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2986 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2987 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
|
2988 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2989 if (enable != has_clipping) |
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 if (enable) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2992 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2993 glEnable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2994 else |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2995 for (int i = 0; i < 6; i++) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2996 glDisable (GL_CLIP_PLANE0+i); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2997 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2998 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
2999 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3000 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3001 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
|
3002 { |
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
|
3003 #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
|
3004 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
|
3005 #else |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3006 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
|
3007 #endif |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3008 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3009 glGetIntegerv (GL_VIEWPORT, vw); |
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 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3012 glPushMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3013 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3014 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
|
3015 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3016 glPushMatrix (); |
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 set_clipping (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3019 set_linewidth (width); |
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 marker_id = make_marker_list (m, size, false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3022 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
|
3023 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3024 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3025 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3026 opengl_renderer::end_marker (void) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3027 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3028 glDeleteLists (marker_id, 1); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3029 glDeleteLists (filled_marker_id, 1); |
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 glMatrixMode (GL_MODELVIEW); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3032 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3033 glMatrixMode (GL_PROJECTION); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3034 glPopMatrix (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3035 set_linewidth (0.5f); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3036 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3037 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3038 void |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3039 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
|
3040 const Matrix& lc, const Matrix& fc) |
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 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
|
3043 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3044 glLoadIdentity (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3045 glTranslated (tmp(0), tmp(1), -tmp(2)); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3046 |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3047 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
|
3048 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3049 glColor3dv (fc.data ()); |
7906 | 3050 set_polygon_offset (true, -1.0); |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3051 glCallList (filled_marker_id); |
7906 | 3052 if (lc.numel () > 0) |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3053 { |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3054 glColor3dv (lc.data ()); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3055 glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3056 glEdgeFlag (GL_TRUE); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3057 set_polygon_offset (true, -2.0); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3058 glCallList (filled_marker_id); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3059 glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3060 } |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3061 set_polygon_offset (false); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3062 } |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3063 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
|
3064 { |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3065 glColor3dv (lc.data ()); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3066 glCallList (marker_id); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3067 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3068 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3069 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3070 unsigned int |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3071 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
|
3072 bool filled) const |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3073 { |
7907
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3074 char c = marker[0]; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3075 |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3076 if (filled && (c == '+' || c == 'x' || c == '*' || c == '.')) |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3077 return 0; |
c350329da645
Implement basic line antialiasing
John W. Eaton <jwe@octave.org>
parents:
7906
diff
changeset
|
3078 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3079 unsigned int ID = glGenLists (1); |
11576
8ac9687dbe9f
rename backend to graphics_toolkit
John W. Eaton <jwe@octave.org>
parents:
11570
diff
changeset
|
3080 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
|
3081 |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3082 // constants for the * marker |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3083 const double sqrt2d4 = 0.35355339059327; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3084 double tt = sz*sqrt2d4; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3085 |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3086 glNewList (ID, GL_COMPILE); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3087 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3088 switch (marker[0]) |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3089 { |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3090 case '+': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3091 glBegin (GL_LINES); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3092 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3093 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3094 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3095 glVertex2d (0, sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3096 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3097 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3098 case 'x': |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3099 glBegin (GL_LINES); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3100 glVertex2d (-sz/2, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3101 glVertex2d (sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3102 glVertex2d (-sz/2, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3103 glVertex2d (sz/2, -sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3104 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3105 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3106 case '*': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3107 glBegin (GL_LINES); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3108 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3109 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3110 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3111 glVertex2d (0, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3112 glVertex2d (-tt, -tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3113 glVertex2d (+tt, +tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3114 glVertex2d (-tt, +tt); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3115 glVertex2d (+tt, -tt); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3116 glEnd (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3117 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3118 case '.': |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3119 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3120 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
|
3121 |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3122 glBegin (GL_POLYGON); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3123 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
|
3124 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
|
3125 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3126 } |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3127 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3128 case 's': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3129 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3130 glVertex2d (-sz/2, -sz/2); |
9681 | 3131 glVertex2d (-sz/2, sz/2); |
3132 glVertex2d (sz/2, sz/2); | |
3133 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
|
3134 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3135 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3136 case 'o': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3137 { |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3138 double ang_step = M_PI / 5; |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3139 |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3140 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3141 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
|
3142 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
|
3143 glEnd (); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3144 } |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3145 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3146 case 'd': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3147 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
9681 | 3148 glVertex2d (0, -sz/2); |
3149 glVertex2d (sz/2, 0); | |
3150 glVertex2d (0, sz/2); | |
3151 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
|
3152 glEnd (); |
7851
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 'v': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3155 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3156 glVertex2d (0, sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
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:
18957
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; |
10835
4bbd6f75f173
gl-render.cc: Transpose markers '^' and 'v'.
Ben Abbott <bpabbott@mac.com>
parents:
10402
diff
changeset
|
3161 case '^': |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3162 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3163 glVertex2d (0, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
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:
18957
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)); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3170 glVertex2d (sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
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:
18957
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 (); |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3174 break; |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3175 case '<': |
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3176 glBegin ((filled ? GL_POLYGON : GL_LINE_LOOP)); |
18958
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3177 glVertex2d (-sz/2, 0); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3178 glVertex2d (sz/2, -sz/2); |
ff39ddf84a19
* gl-render.cc (opengl_renderer::make_marker_list): Replace glVertex2f with
Rik <rik@octave.org>
parents:
18957
diff
changeset
|
3179 glVertex2d (sz/2, sz/2); |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3180 glEnd (); |
7906 | 3181 break; |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3182 case 'p': |
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 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3185 double r; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3186 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
|
3187 |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3188 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
|
3189 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
|
3190 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3191 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
|
3192 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
|
3193 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
|
3194 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3195 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3196 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3197 break; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3198 case 'h': |
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 double ang; |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3201 double r; |
14861
f7afecdd87ef
maint: Use Octave coding conventions for cuddling parentheses in src/ directory
Rik <octave@nomad.inbox5.com>
parents:
14846
diff
changeset
|
3202 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
|
3203 |
10924
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3204 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
|
3205 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
|
3206 { |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3207 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
|
3208 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
|
3209 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
|
3210 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3211 glEnd (); |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3212 } |
f56255a2b890
gl-render.cc: Matlab compatible markers for the OpenGL.
Ben Abbott <bpabbott@mac.com>
parents:
10835
diff
changeset
|
3213 break; |
7851
002b1d8460d2
added some more markers
Shai Ayal <shaiay@users.sourceforge.net>
parents:
7846
diff
changeset
|
3214 default: |
18832
f684f7075aee
Don't fetch lots of axes state information for rendering if object is not visible.
Rik <rik@octave.org>
parents:
18822
diff
changeset
|
3215 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
|
3216 break; |
7825
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3217 } |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3218 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3219 glEndList (); |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3220 |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3221 return ID; |
13871b7de124
Import sources for OpenGL-based renderer.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
3222 } |
7874
e3a502930e2a
eliminate src/graphics subdirectory
John W. Eaton <jwe@octave.org>
parents:
7870
diff
changeset
|
3223 |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3224 void |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3225 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
|
3226 uint8NDArray& pixels, |
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3227 Matrix& bbox, |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3228 int halign, int valign, double rotation) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3229 { |
12333
f103b9c1ca05
use text_renderer object only when freetye is available
Kai Habel <kai.habel@gmx.de>
parents:
12327
diff
changeset
|
3230 #if HAVE_FREETYPE |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3231 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
|
3232 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
|
3233 #endif |
9834
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3234 } |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3235 |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3236 Matrix |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3237 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
|
3238 double x, double y, double z, |
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
3239 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
|
3240 { |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3241 #if HAVE_FREETYPE |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3242 if (txt.empty ()) |
92d8f35ff217
compute bounding boxes for text in opengl graphics backend
Shai Ayal <shaiay@users.sourceforge.net>
parents:
9798
diff
changeset
|
3243 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
|
3244 |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3245 uint8NDArray pixels; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3246 Matrix bbox; |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3247 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
|
3248 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3249 bool blend = glIsEnabled (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3250 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3251 glEnable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3252 glEnable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3253 glRasterPos3d (x, y, z); |
11455
2be9e22796d2
improvements in text-extent calculation
Konstantinos Poulios <logari81@googlemail.com>
parents:
11385
diff
changeset
|
3254 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
|
3255 glDrawPixels (bbox(2), bbox(3), |
10315
57a59eae83cc
untabify src C++ source files
John W. Eaton <jwe@octave.org>
parents:
10202
diff
changeset
|
3256 GL_RGBA, GL_UNSIGNED_BYTE, pixels.data ()); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3257 glDisable (GL_ALPHA_TEST); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3258 if (! blend) |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3259 glDisable (GL_BLEND); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3260 |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3261 return bbox; |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3262 #else |
18837
8c537222f1e5
gl-render.cc: Use class prefix, opengl_renderer or opengl_texture, when printing warning.
Rik <rik@octave.org>
parents:
18832
diff
changeset
|
3263 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
|
3264 return Matrix (1, 4, 0.0); |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3265 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3266 } |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
8920
diff
changeset
|
3267 |
7954 | 3268 #endif |