1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
Description: upstream: (internal drawing) clip option
Attempt to rationalize (or adapt) the current inconsistency of the
(internal) clip mode which appears to be only partially implemented.
Origin: debian
Forwarded: meant to be submitted
Author: Jerome Benoit <calculus@rezozer.net>
Last-Update: 2015-05-15
--- a/drawfunc/Clip.cc
+++ b/drawfunc/Clip.cc
@@ -46,12 +46,14 @@
#include "MappingMatrix.h"
#include "Position.h"
-#define SPHERE 0
-#define CYLH 1
-#define CYLV 2
-#define CYLZ 3
-#define CUBE 4
-#define NONE 5
+#include "gui_config.h"
+
+#define SPHERE clip_sphere_data
+#define CYLH -1 /* 1 */
+#define CYLV -1 /* 2 */
+#define CYLZ clip_cylinder_data
+#define CUBE clip_cube_data
+#define NONE clip_none_data
using namespace std;
// ----------------------------------------------------------------------------
@@ -678,55 +680,29 @@
double b = wingeo.pixelToUser( 0, xmax );
double c = wingeo.pixelToUser( 1, ymin );
double d = wingeo.pixelToUser( 1, ymax );
- if(!psp) { // perspective parallel
-
- switch( cm ) { // clipmodus
-
- case SPHERE :
- return (::new ClipSphere(cd,a,b,c,d));
-
- case CYLH :
- return (::new ClipCylH(cd,a,b,c,d));
-
- case CYLV :
- return (::new ClipCylV(cd,a,b,c,d));
-
- case CYLZ :
- return (::new ClipCylZ(cd,a,b,c,d));
-
- case CUBE :
- return (::new ClipCube(cd,a,b,c,d, position));
-
- case NONE :
- return (::new ClipNone(cd,a,b,c,d));
-
- default :
+ if(!psp) { // perspective parallel
+ if (cm == SPHERE) return (::new ClipSphere(cd,a,b,c,d));
+#if 0
+ else if (cm == CYLH) return (::new ClipCylH(cd,a,b,c,d));
+ else if (cm == CYLV) return (::new ClipCylV(cd,a,b,c,d));
+#endif
+ else if (cm == CYLZ) return (::new ClipCylZ(cd,a,b,c,d));
+ else if (cm == CUBE) return (::new ClipCube(cd,a,b,c,d, position));
+ else if (cm == NONE) return (::new ClipNone(cd,a,b,c,d));
+ else {
cerr << "trying to create unknown clipping mode. using none." << endl;
return (::new ClipNone(cd,a,b,c,d));
}
- } else { // perspective central
-
- switch( cm ) { // clipmodus
-
- case SPHERE :
- return (::new ClipSphereCentral(cd,a,b,c,d,sz));
-
- case CYLH :
- return (::new ClipCylHCentral(cd,a,b,c,d,sz));
-
- case CYLV :
- return (::new ClipCylVCentral(cd,a,b,c,d,sz));
-
- case CYLZ :
- return (::new ClipCylZCentral(cd,a,b,c,d,sz));
-
- case CUBE :
- return (::new ClipCubeCentral(cd,a,b,c,d,sz, position));
-
- case NONE :
- return (::new ClipCylZCentral(cd,a,b,c,d,sz));
-
- default :
+ } else { // perspective central
+ if (cm == SPHERE) return (::new ClipSphereCentral(cd,a,b,c,d,sz));
+#if 0
+ else if (cm == CYLH) return (::new ClipCylHCentral(cd,a,b,c,d,sz));
+ else if (cm == CYLV) return (::new ClipCylVCentral(cd,a,b,c,d,sz));
+#endif
+ else if (cm == CYLZ) return (::new ClipCylZCentral(cd,a,b,c,d,sz));
+ else if (cm == CUBE) return (::new ClipCubeCentral(cd,a,b,c,d,sz, position));
+ else if (cm == NONE) return (::new ClipCylZCentral(cd,a,b,c,d,sz));
+ else {
cerr << "trying to create unknown clipping mode. using none." << endl;
return (::new ClipNone(cd,a,b,c,d));
}
|