Back to home page

EIC code displayed by LXR

 
 

    


Warning, /include/Geant4/tools/glprims is written in an unsupported language. File is not indexed.

0001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
0002 // See the file tools.license for terms.
0003 
0004 #ifndef tools_glprims
0005 #define tools_glprims
0006 
0007 //same as OpenGL GL_[POINTS,etc...], but for the case we don't have OpenGL.
0008 
0009 #include <cstddef> //size_t
0010 
0011 namespace tools {
0012 namespace gl {
0013 
0014 typedef unsigned char mode_t;
0015 
0016 inline mode_t points()         {return 0x0000;}
0017 inline mode_t lines()          {return 0x0001;} //segments
0018 inline mode_t line_loop()      {return 0x0002;}
0019 inline mode_t line_strip()     {return 0x0003;} //polyline
0020 inline mode_t triangles()      {return 0x0004;}
0021 inline mode_t triangle_strip() {return 0x0005;}
0022 inline mode_t triangle_fan()   {return 0x0006;}
0023 //inline mode_t quads()          {return 0x0007;}
0024 //inline mode_t quad_strip()     {return 0x0008;}
0025 //inline mode_t polygon()        {return 0x0009;}
0026 
0027 inline bool is_mode(mode_t a_mode) {
0028   return a_mode<=0x006?true:false;
0029 }
0030 
0031 inline bool is_line(mode_t a_mode) {
0032   if(a_mode==points())     return true; //0 sz line !
0033   if(a_mode==lines())      return true;
0034   if(a_mode==line_loop())  return true;
0035   if(a_mode==line_strip()) return true;
0036   return false;
0037 }
0038 
0039 inline void cvt_2to3(size_t a_npt,const float* a_xys,float*& a_xyzs) {
0040   const float* vpos = a_xys;
0041   float x,y;
0042   for(size_t i=0;i<a_npt;i++) {
0043     x = *vpos;vpos++;
0044     y = *vpos;vpos++;
0045     *a_xyzs = x;a_xyzs++;
0046     *a_xyzs = y;a_xyzs++;
0047     *a_xyzs = 0;a_xyzs++;
0048   }
0049 }
0050 
0051 
0052 inline void triangle_fan_to_triangles(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0053   // a_pxyzs = (a_npt-2)*3*3
0054 
0055   const float* vpos = a_xyzs;
0056 
0057   float x1 = *vpos;vpos++;
0058   float y1 = *vpos;vpos++;
0059   float z1 = *vpos;vpos++;
0060 
0061   float x2 = *vpos;vpos++;
0062   float y2 = *vpos;vpos++;
0063   float z2 = *vpos;vpos++;
0064 
0065   float x3,y3,z3;
0066   for(size_t i=2;i<a_npt;i++) {
0067     x3 = *vpos;vpos++;
0068     y3 = *vpos;vpos++;
0069     z3 = *vpos;vpos++;
0070     *a_pxyzs = x1;a_pxyzs++;
0071     *a_pxyzs = y1;a_pxyzs++;
0072     *a_pxyzs = z1;a_pxyzs++;
0073 
0074     *a_pxyzs = x2;a_pxyzs++;
0075     *a_pxyzs = y2;a_pxyzs++;
0076     *a_pxyzs = z2;a_pxyzs++;
0077 
0078     *a_pxyzs = x3;a_pxyzs++;
0079     *a_pxyzs = y3;a_pxyzs++;
0080     *a_pxyzs = z3;a_pxyzs++;
0081 
0082     x2 = x3;
0083     y2 = y3;
0084     z2 = z3;
0085   }
0086 
0087 }
0088 
0089 inline void triangle_fan_to_triangles_texture(size_t a_npt,const float* a_xyzs,const float* a_tcs,float*& a_pxyzs,float*& a_ptcs) {
0090   // a_pxyzs = (a_npt-2)*3*3
0091 
0092   // a_ptcs = (a_npt-2)*3*2
0093 
0094   const float* vpos = a_xyzs;
0095   const float* tpos = a_tcs;
0096 
0097   float x1 = *vpos;vpos++;
0098   float y1 = *vpos;vpos++;
0099   float z1 = *vpos;vpos++;
0100 
0101   float tx1 = *tpos;tpos++;
0102   float ty1 = *tpos;tpos++;
0103 
0104   float x2 = *vpos;vpos++;
0105   float y2 = *vpos;vpos++;
0106   float z2 = *vpos;vpos++;
0107 
0108   float tx2 = *tpos;tpos++;
0109   float ty2 = *tpos;tpos++;
0110   
0111   float x3,y3,z3,tx3,ty3;
0112   for(size_t i=2;i<a_npt;i++) {
0113     x3 = *vpos;vpos++;
0114     y3 = *vpos;vpos++;
0115     z3 = *vpos;vpos++;
0116 
0117     tx3 = *tpos;tpos++;
0118     ty3 = *tpos;tpos++;
0119     
0120     *a_pxyzs = x1;a_pxyzs++;
0121     *a_pxyzs = y1;a_pxyzs++;
0122     *a_pxyzs = z1;a_pxyzs++;
0123 
0124     *a_ptcs = tx1;a_ptcs++;
0125     *a_ptcs = ty1;a_ptcs++;
0126 
0127     *a_pxyzs = x2;a_pxyzs++;
0128     *a_pxyzs = y2;a_pxyzs++;
0129     *a_pxyzs = z2;a_pxyzs++;
0130 
0131     *a_ptcs = tx2;a_ptcs++;
0132     *a_ptcs = ty2;a_ptcs++;
0133     
0134     *a_pxyzs = x3;a_pxyzs++;
0135     *a_pxyzs = y3;a_pxyzs++;
0136     *a_pxyzs = z3;a_pxyzs++;
0137 
0138     *a_ptcs = tx3;a_ptcs++;
0139     *a_ptcs = ty3;a_ptcs++;
0140     
0141     x2 = x3;
0142     y2 = y3;
0143     z2 = z3;
0144 
0145     tx2 = tx3;
0146     ty2 = ty3;
0147   }
0148 
0149 }
0150 
0151 inline void triangle_strip_to_triangles(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0152   // a_pxyzs = (a_npt-2)*3*3
0153 
0154   const float* vpos = a_xyzs;
0155 
0156   float x1 = *vpos;vpos++;
0157   float y1 = *vpos;vpos++;
0158   float z1 = *vpos;vpos++;
0159 
0160   float x2 = *vpos;vpos++;
0161   float y2 = *vpos;vpos++;
0162   float z2 = *vpos;vpos++;
0163 
0164   float x3,y3,z3;
0165   bool flip = false;
0166   for(size_t i=2;i<a_npt;i++) {
0167     x3 = *vpos;vpos++;
0168     y3 = *vpos;vpos++;
0169     z3 = *vpos;vpos++;
0170 
0171     if(flip) {
0172       *a_pxyzs = x1;a_pxyzs++;
0173       *a_pxyzs = y1;a_pxyzs++;
0174       *a_pxyzs = z1;a_pxyzs++;
0175 
0176       *a_pxyzs = x3;a_pxyzs++;
0177       *a_pxyzs = y3;a_pxyzs++;
0178       *a_pxyzs = z3;a_pxyzs++;
0179 
0180       *a_pxyzs = x2;a_pxyzs++;
0181       *a_pxyzs = y2;a_pxyzs++;
0182       *a_pxyzs = z2;a_pxyzs++;
0183     } else {
0184       *a_pxyzs = x1;a_pxyzs++;
0185       *a_pxyzs = y1;a_pxyzs++;
0186       *a_pxyzs = z1;a_pxyzs++;
0187 
0188       *a_pxyzs = x2;a_pxyzs++;
0189       *a_pxyzs = y2;a_pxyzs++;
0190       *a_pxyzs = z2;a_pxyzs++;
0191 
0192       *a_pxyzs = x3;a_pxyzs++;
0193       *a_pxyzs = y3;a_pxyzs++;
0194       *a_pxyzs = z3;a_pxyzs++;
0195     }
0196 
0197     x1 = x2;
0198     y1 = y2;
0199     z1 = z2;
0200 
0201     x2 = x3;
0202     y2 = y3;
0203     z2 = z3;
0204 
0205     flip = flip?false:true;
0206   }
0207 }
0208 
0209 inline void triangle_strip_to_triangles_texture(size_t a_npt,const float* a_xyzs,const float* a_tcs,float*& a_pxyzs,float*& a_ptcs) {
0210   // a_pxyzs = (a_npt-2)*3*3
0211   // a_ptcs = (a_npt-2)*3*2
0212 
0213   const float* vpos = a_xyzs;
0214   const float* tpos = a_tcs;
0215 
0216   float x1 = *vpos;vpos++;
0217   float y1 = *vpos;vpos++;
0218   float z1 = *vpos;vpos++;
0219 
0220   float tx1 = *tpos;tpos++;
0221   float ty1 = *tpos;tpos++;
0222   
0223   float x2 = *vpos;vpos++;
0224   float y2 = *vpos;vpos++;
0225   float z2 = *vpos;vpos++;
0226 
0227   float tx2 = *tpos;tpos++;
0228   float ty2 = *tpos;tpos++;
0229   
0230   float x3,y3,z3,tx3,ty3;
0231   bool flip = false;
0232   for(size_t i=2;i<a_npt;i++) {
0233     x3 = *vpos;vpos++;
0234     y3 = *vpos;vpos++;
0235     z3 = *vpos;vpos++;
0236 
0237     tx3 = *tpos;tpos++;
0238     ty3 = *tpos;tpos++;
0239   
0240     if(flip) {
0241       *a_pxyzs = x1;a_pxyzs++;
0242       *a_pxyzs = y1;a_pxyzs++;
0243       *a_pxyzs = z1;a_pxyzs++;
0244 
0245       *a_ptcs = tx1;a_ptcs++;
0246       *a_ptcs = ty1;a_ptcs++;
0247       
0248       *a_pxyzs = x3;a_pxyzs++;
0249       *a_pxyzs = y3;a_pxyzs++;
0250       *a_pxyzs = z3;a_pxyzs++;
0251 
0252       *a_ptcs = tx3;a_ptcs++;
0253       *a_ptcs = ty3;a_ptcs++;
0254       
0255       *a_pxyzs = x2;a_pxyzs++;
0256       *a_pxyzs = y2;a_pxyzs++;
0257       *a_pxyzs = z2;a_pxyzs++;
0258 
0259       *a_ptcs = tx2;a_ptcs++;
0260       *a_ptcs = ty2;a_ptcs++;
0261     } else {
0262       *a_pxyzs = x1;a_pxyzs++;
0263       *a_pxyzs = y1;a_pxyzs++;
0264       *a_pxyzs = z1;a_pxyzs++;
0265 
0266       *a_ptcs = tx1;a_ptcs++;
0267       *a_ptcs = ty1;a_ptcs++;
0268       
0269       *a_pxyzs = x2;a_pxyzs++;
0270       *a_pxyzs = y2;a_pxyzs++;
0271       *a_pxyzs = z2;a_pxyzs++;
0272 
0273       *a_ptcs = tx2;a_ptcs++;
0274       *a_ptcs = ty2;a_ptcs++;
0275       
0276       *a_pxyzs = x3;a_pxyzs++;
0277       *a_pxyzs = y3;a_pxyzs++;
0278       *a_pxyzs = z3;a_pxyzs++;
0279       
0280       *a_ptcs = tx3;a_ptcs++;
0281       *a_ptcs = ty3;a_ptcs++;
0282     }
0283 
0284     x1 = x2;
0285     y1 = y2;
0286     z1 = z2;
0287 
0288     tx1 = tx2;
0289     ty1 = ty2;
0290 
0291     x2 = x3;
0292     y2 = y3;
0293     z2 = z3;
0294 
0295     tx2 = tx3;
0296     ty2 = ty3;
0297     
0298     flip = flip?false:true;
0299   }
0300 }
0301 
0302 inline void triangle_fan_to_triangles_nms(size_t a_npt,const float* a_xyzs,const float* a_nms,float*& a_pxyzs,float*& a_pnms) {
0303   triangle_fan_to_triangles(a_npt,a_xyzs,a_pxyzs);
0304   triangle_fan_to_triangles(a_npt,a_nms,a_pnms);
0305 }
0306 
0307 inline void triangle_strip_to_triangles_nms(size_t a_npt,const float* a_xyzs,const float* a_nms,float*& a_pxyzs,float*& a_pnms) {
0308   // a_pxyzs, a_pnms = (a_npt-2)*3*3
0309   triangle_strip_to_triangles(a_npt,a_xyzs,a_pxyzs);
0310   triangle_strip_to_triangles(a_npt,a_nms,a_pnms);
0311 }
0312 
0313 inline void triangle_fan_to_triangles_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0314 
0315   const float* vpos = a_xyzs;
0316 
0317   float x1 = *vpos;vpos++;
0318   float y1 = *vpos;vpos++;
0319 
0320   float x2 = *vpos;vpos++;
0321   float y2 = *vpos;vpos++;
0322 
0323   float x3,y3;
0324   for(size_t i=2;i<a_npt;i++) {
0325     x3 = *vpos;vpos++;
0326     y3 = *vpos;vpos++;
0327 
0328     *a_pxyzs = x1;a_pxyzs++;
0329     *a_pxyzs = y1;a_pxyzs++;
0330     *a_pxyzs = 0;a_pxyzs++;
0331 
0332     *a_pxyzs = x2;a_pxyzs++;
0333     *a_pxyzs = y2;a_pxyzs++;
0334     *a_pxyzs = 0;a_pxyzs++;
0335 
0336     *a_pxyzs = x3;a_pxyzs++;
0337     *a_pxyzs = y3;a_pxyzs++;
0338     *a_pxyzs = 0;a_pxyzs++;
0339 
0340     x2 = x3;
0341     y2 = y3;
0342   }
0343 
0344 }
0345 
0346 inline void triangle_strip_to_triangles_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0347 
0348   const float* vpos = a_xyzs;
0349 
0350   float x1 = *vpos;vpos++;
0351   float y1 = *vpos;vpos++;
0352 
0353   float x2 = *vpos;vpos++;
0354   float y2 = *vpos;vpos++;
0355 
0356   float x3,y3;
0357   bool flip = false;
0358   for(size_t i=2;i<a_npt;i++) {
0359     x3 = *vpos;vpos++;
0360     y3 = *vpos;vpos++;
0361 
0362     if(flip) {
0363       *a_pxyzs = x1;a_pxyzs++;
0364       *a_pxyzs = y1;a_pxyzs++;
0365       *a_pxyzs = 0;a_pxyzs++;
0366 
0367       *a_pxyzs = x3;a_pxyzs++;
0368       *a_pxyzs = y3;a_pxyzs++;
0369       *a_pxyzs = 0;a_pxyzs++;
0370 
0371       *a_pxyzs = x2;a_pxyzs++;
0372       *a_pxyzs = y2;a_pxyzs++;
0373       *a_pxyzs = 0;a_pxyzs++;
0374     } else {
0375       *a_pxyzs = x1;a_pxyzs++;
0376       *a_pxyzs = y1;a_pxyzs++;
0377       *a_pxyzs = 0;a_pxyzs++;
0378 
0379       *a_pxyzs = x2;a_pxyzs++;
0380       *a_pxyzs = y2;a_pxyzs++;
0381       *a_pxyzs = 0;a_pxyzs++;
0382 
0383       *a_pxyzs = x3;a_pxyzs++;
0384       *a_pxyzs = y3;a_pxyzs++;
0385       *a_pxyzs = 0;a_pxyzs++;
0386     }
0387 
0388     x1 = x2;
0389     y1 = y2;
0390 
0391     x2 = x3;
0392     y2 = y3;
0393 
0394     flip = flip?false:true;
0395   }
0396 
0397 }
0398 
0399 inline void line_strip_to_lines_2to3(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0400 
0401   const float* vpos = a_xyzs;
0402 
0403   float x1 = *vpos;vpos++;
0404   float y1 = *vpos;vpos++;
0405 
0406   float x2,y2;
0407   for(size_t i=1;i<a_npt;i++) {
0408     x2 = *vpos;vpos++;
0409     y2 = *vpos;vpos++;
0410 
0411     *a_pxyzs = x1;a_pxyzs++;
0412     *a_pxyzs = y1;a_pxyzs++;
0413     *a_pxyzs = 0;a_pxyzs++;
0414 
0415     *a_pxyzs = x2;a_pxyzs++;
0416     *a_pxyzs = y2;a_pxyzs++;
0417     *a_pxyzs = 0;a_pxyzs++;
0418 
0419     x1 = x2;
0420     y1 = y2;
0421   }
0422 
0423 }
0424 
0425 inline void line_strip_to_lines(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0426   // a_pxyzs = (a_npt-1)*2*3
0427 
0428   const float* vpos = a_xyzs;
0429 
0430   float x1 = *vpos;vpos++;
0431   float y1 = *vpos;vpos++;
0432   float z1 = *vpos;vpos++;
0433 
0434   float x2,y2,z2;
0435   for(size_t i=1;i<a_npt;i++) {
0436     x2 = *vpos;vpos++;
0437     y2 = *vpos;vpos++;
0438     z2 = *vpos;vpos++;
0439 
0440     *a_pxyzs = x1;a_pxyzs++;
0441     *a_pxyzs = y1;a_pxyzs++;
0442     *a_pxyzs = z1;a_pxyzs++;
0443 
0444     *a_pxyzs = x2;a_pxyzs++;
0445     *a_pxyzs = y2;a_pxyzs++;
0446     *a_pxyzs = z2;a_pxyzs++;
0447 
0448     x1 = x2;
0449     y1 = y2;
0450     z1 = z2;
0451   }
0452 
0453 }
0454 
0455 inline void line_loop_to_lines(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0456   // a_pxyzs = a_npt*2*3
0457 
0458   const float* vpos = a_xyzs;
0459 
0460   float x1 = *vpos;vpos++;
0461   float y1 = *vpos;vpos++;
0462   float z1 = *vpos;vpos++;
0463 
0464   float x0 = x1;
0465   float y0 = y1;
0466   float z0 = z1;
0467 
0468   float x2,y2,z2;
0469   for(size_t i=1;i<a_npt;i++) {
0470     x2 = *vpos;vpos++;
0471     y2 = *vpos;vpos++;
0472     z2 = *vpos;vpos++;
0473 
0474     *a_pxyzs = x1;a_pxyzs++;
0475     *a_pxyzs = y1;a_pxyzs++;
0476     *a_pxyzs = z1;a_pxyzs++;
0477 
0478     *a_pxyzs = x2;a_pxyzs++;
0479     *a_pxyzs = y2;a_pxyzs++;
0480     *a_pxyzs = z2;a_pxyzs++;
0481 
0482     x1 = x2;
0483     y1 = y2;
0484     z1 = z2;
0485   }
0486 
0487   *a_pxyzs = x1;a_pxyzs++;
0488   *a_pxyzs = y1;a_pxyzs++;
0489   *a_pxyzs = z1;a_pxyzs++;
0490 
0491   *a_pxyzs = x0;a_pxyzs++;
0492   *a_pxyzs = y0;a_pxyzs++;
0493   *a_pxyzs = z0;a_pxyzs++;
0494 
0495 }
0496 
0497 inline void line_loop_to_line_strip(size_t a_npt,const float* a_xyzs,float*& a_pxyzs) {
0498   // a_pxyzs = (a_npt+1)*3
0499 
0500   const float* vpos = a_xyzs;
0501 
0502   float x1 = *vpos;vpos++;
0503   float y1 = *vpos;vpos++;
0504   float z1 = *vpos;vpos++;
0505 
0506   for(size_t i=0;i<a_npt;i++) {
0507     *a_pxyzs = *vpos;vpos++;a_pxyzs++;
0508     *a_pxyzs = *vpos;vpos++;a_pxyzs++;
0509     *a_pxyzs = *vpos;vpos++;a_pxyzs++;
0510   }
0511 
0512   *a_pxyzs = x1;a_pxyzs++;
0513   *a_pxyzs = y1;a_pxyzs++;
0514   *a_pxyzs = z1;a_pxyzs++;
0515 }
0516 
0517 /// for DirectX_action :
0518 inline void triangle_fan_to_triangles_2to3(size_t a_npt,const float* a_xyzs,
0519                                            float a_r,float a_g,float a_b,float a_a,
0520                                            float*& a_pxyz_rgbas) {
0521 
0522   const float* vpos = a_xyzs;
0523 
0524   float x1 = *vpos;vpos++;
0525   float y1 = *vpos;vpos++;
0526 
0527   float x2 = *vpos;vpos++;
0528   float y2 = *vpos;vpos++;
0529 
0530   float x3,y3;
0531   for(size_t i=2;i<a_npt;i++) {
0532     x3 = *vpos;vpos++;
0533     y3 = *vpos;vpos++;
0534 
0535     *a_pxyz_rgbas = x1;a_pxyz_rgbas++;
0536     *a_pxyz_rgbas = y1;a_pxyz_rgbas++;
0537     *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
0538 
0539     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0540     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0541     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0542     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0543 
0544     *a_pxyz_rgbas = x2;a_pxyz_rgbas++;
0545     *a_pxyz_rgbas = y2;a_pxyz_rgbas++;
0546     *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
0547 
0548     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0549     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0550     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0551     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0552 
0553     *a_pxyz_rgbas = x3;a_pxyz_rgbas++;
0554     *a_pxyz_rgbas = y3;a_pxyz_rgbas++;
0555     *a_pxyz_rgbas = 0;a_pxyz_rgbas++;
0556 
0557     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0558     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0559     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0560     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0561 
0562     x2 = x3;
0563     y2 = y3;
0564   }
0565 }
0566 
0567 inline void triangle_fan_to_triangles(size_t a_npt,const float* a_xyzs,
0568                                       float a_r,float a_g,float a_b,float a_a,
0569                                       float*& a_pxyz_rgbas) {
0570 
0571   const float* vpos = a_xyzs;
0572 
0573   float x1 = *vpos;vpos++;
0574   float y1 = *vpos;vpos++;
0575   float z1 = *vpos;vpos++;
0576 
0577   float x2 = *vpos;vpos++;
0578   float y2 = *vpos;vpos++;
0579   float z2 = *vpos;vpos++;
0580 
0581   float x3,y3,z3;
0582   for(size_t i=2;i<a_npt;i++) {
0583     x3 = *vpos;vpos++;
0584     y3 = *vpos;vpos++;
0585     z3 = *vpos;vpos++;
0586 
0587     *a_pxyz_rgbas = x1;a_pxyz_rgbas++;
0588     *a_pxyz_rgbas = y1;a_pxyz_rgbas++;
0589     *a_pxyz_rgbas = z1;a_pxyz_rgbas++;
0590 
0591     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0592     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0593     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0594     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0595 
0596     *a_pxyz_rgbas = x2;a_pxyz_rgbas++;
0597     *a_pxyz_rgbas = y2;a_pxyz_rgbas++;
0598     *a_pxyz_rgbas = z2;a_pxyz_rgbas++;
0599 
0600     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0601     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0602     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0603     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0604 
0605     *a_pxyz_rgbas = x3;a_pxyz_rgbas++;
0606     *a_pxyz_rgbas = y3;a_pxyz_rgbas++;
0607     *a_pxyz_rgbas = z3;a_pxyz_rgbas++;
0608 
0609     *a_pxyz_rgbas = a_r;a_pxyz_rgbas++;
0610     *a_pxyz_rgbas = a_g;a_pxyz_rgbas++;
0611     *a_pxyz_rgbas = a_b;a_pxyz_rgbas++;
0612     *a_pxyz_rgbas = a_a;a_pxyz_rgbas++;
0613 
0614     x2 = x3;
0615     y2 = y3;
0616     z2 = z3;
0617   }
0618 }
0619 
0620 }}
0621 
0622 #endif