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