aboutsummaryrefslogtreecommitdiff
path: root/generic/Draw.h
diff options
context:
space:
mode:
authorlecoanet2002-02-15 08:25:44 +0000
committerlecoanet2002-02-15 08:25:44 +0000
commite14f136e0250caf818c2f6b9b9ac393db7c556d8 (patch)
tree65fafcebb80218b6e4fa81787948db72d7459f19 /generic/Draw.h
parente579556a8de609ce3c1d4185601ce1a43e2aa9bd (diff)
downloadtkzinc-e14f136e0250caf818c2f6b9b9ac393db7c556d8.zip
tkzinc-e14f136e0250caf818c2f6b9b9ac393db7c556d8.tar.gz
tkzinc-e14f136e0250caf818c2f6b9b9ac393db7c556d8.tar.bz2
tkzinc-e14f136e0250caf818c2f6b9b9ac393db7c556d8.tar.xz
R�amenagement du code de clipping local utilisant le stencil
Diffstat (limited to 'generic/Draw.h')
-rw-r--r--generic/Draw.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/generic/Draw.h b/generic/Draw.h
index d153520..4524c05 100644
--- a/generic/Draw.h
+++ b/generic/Draw.h
@@ -47,6 +47,41 @@
struct _WidgetInfo;
struct _ImageBits;
+#ifdef GLX
+#define GLX_START_CLIP(num_clips, render) { \
+ if (!num_clips) { \
+ glEnable(GL_STENCIL_TEST); \
+ } \
+ glStencilFunc(GL_EQUAL, num_clips, 0xFF); \
+ glStencilOp(GL_KEEP, GL_INCR, GL_INCR); \
+ if (!render) { \
+ glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); \
+ } \
+}
+#define GLX_RENDER_CLIPPED() { \
+ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); \
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); \
+ }
+#define GLX_RESTORE_STENCIL(num_clips, render) { \
+ glStencilFunc(GL_EQUAL, num_clips+1, 0xFF); \
+ glStencilOp(GL_KEEP, GL_DECR, GL_DECR); \
+ if (render) { \
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); \
+ } \
+ else { \
+ glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); \
+ } \
+}
+#define GLX_END_CLIP(num_clips) { \
+ glStencilFunc(GL_EQUAL, num_clips, 0xFF); \
+ glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); \
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); \
+ if (!num_clips) { \
+ glDisable(GL_STENCIL_TEST); \
+ } \
+}
+#endif
+
void SetLineStyle(struct _WidgetInfo *wi, LineStyle line_style);
void GetLineShape(ZnPoint *p1, ZnPoint *p2, unsigned int line_width,