hschumann2/TempleOS-Source-Code
0847
1 2#help_index "Sprites/Binary"3 4class CMeshTri5{6 I32 color; //Give one of 0-7 colors.7//Colors 8-15 are 0-7 with intensity bit set.8 I32 nums[3]; //Vertex number9};10 11class CQueMeshTri12{13 CQueMeshTri *next,*last;14 U0 start;15 I32 color;16 I32 nums[3];17};18 19public class CSpriteBase20{21 U8 type;22};23 24public class CSpriteColor : CSpriteBase25{26 U8 color;27};28 29public class CSpriteDitherColor : CSpriteBase30{31 U16 dither_color;32};33 34public class CSpriteT : CSpriteBase35{36 I32 thick;37};38 39public class CSpritePt : CSpriteBase40{41 I32 x1;42 I32 y1;43};44 45public class CSpritePtRad : CSpritePt46{47 I32 radius;48};49 50public class CSpritePtPt : CSpritePt51{52 I32 x2;53 I32 y2;54};55 56public class CSpritePtPtAng : CSpritePtPt57{58 F64 angle;59};60 61public class CSpritePtWH : CSpritePt62{63 I32 width;64 I32 height;65};66 67public class CSpritePtWHU8s : CSpritePtWH68{69 U8 u[0];70};71 72public class CSpritePtWHAng : CSpritePtWH73{74 F64 angle;75};76 77public class CSpritePtWHAngSides : CSpritePtWHAng78{79 I32 sides;80};81 82public class CSpriteNumU8s : CSpriteBase83{84 I32 num;85 U8 u[0];86};87 88public class CSpriteNumPtU8s : CSpriteBase89{90 I32 num;91 I32 x;92 I32 y;93 U8 u[0];94};95 96public class CSpritePtStr : CSpritePt97{98 U8 st[0];99};100 101public class CSpriteMeshU8s : CSpriteBase102{103 I32 vertex_cnt;104 I32 tri_cnt;105 U8 u[0];106};107 108public class CSpritePtMeshU8s : CSpriteBase109{110 I32 x;111 I32 y;112 I32 z;113 I32 vertex_cnt;114 I32 tri_cnt;115 U8 u[0];116};117 118#define SPF_SEL 128119#define SPf_SEL 7120 121#define SPT_END 0 //CSpriteBase122#define SPT_COLOR 1 //CSpriteColor123#define SPT_DITHER_COLOR 2 //CSpriteDitherColor124#define SPT_THICK 3 //CSpriteT125#define SPT_PLANAR_SYMMETRY 4 //CSpritePtPt126#define SPT_TRANSFORM_ON 5 //CSpriteBase127#define SPT_TRANSFORM_OFF 6 //CSpriteBase128#define SPT_SHIFT 7 //CSpritePt129#define SPT_PT 8 //CSpritePt130#define SPT_POLYPT 9 //CSpriteNumPtU8s131#define SPT_LINE 10 //CSpritePtPt132#define SPT_POLYLINE 11 //CSpriteNumU8s133#define SPT_RECT 12 //CSpritePtPt134#define SPT_ROTATED_RECT 13 //CSpritePtPtAng135#define SPT_CIRCLE 14 //CSpritePtRad136#define SPT_ELLIPSE 15 //CSpritePtWHAng137#define SPT_POLYGON 16 //CSpritePtWHAngSides138#define SPT_BSPLINE2 17 //CSpriteNumU8s139#define SPT_BSPLINE2_CLOSED 18 //CSpriteNumU8s140#define SPT_BSPLINE3 19 //CSpriteNumU8s141#define SPT_BSPLINE3_CLOSED 20 //CSpriteNumU8s142#define SPT_FLOOD_FILL 21 //CSpritePt143#define SPT_FLOOD_FILL_NOT 22 //CSpritePt144#define SPT_BITMAP 23 //CSpritePtWHU8s145#define SPT_MESH 24 //CSpriteMeshU8s See ::/Apps/GrModels.146#define SPT_SHIFTABLE_MESH 25 //CSpritePtMeshU8s See ::/Apps/GrModels.147#define SPT_ARROW 26 //CSpritePtPt148#define SPT_TEXT 27 //CSpritePtStr149#define SPT_TEXT_BOX 28 //CSpritePtStr150#define SPT_TEXT_DIAMOND 29 //CSpritePtStr151#define SPT_TYPES_NUM 30152#define SPG_TYPE_MASK 0x7F153 154#help_index "Graphics/Sprite;Sprites;Sprites/Binary"155 156//See Sprites. See ::/Adam/Gr/GrSpritePlot.HC and157//::/Demo/Graphics/SpriteRaw.HC for how CSprite are stored.158public class CSprite159{160 CSprite *next,*last;161 U0 start;162 union {163 U8 type;164 CSpriteBase b;165 CSpriteColor c;166 CSpriteDitherColor d;167 CSpriteT t;168 CSpritePt p;169 CSpritePtPt pp;170 CSpritePtPtAng ppa;171 CSpritePtRad pr;172 CSpritePtWHU8s pwhu;173 CSpritePtWHAng pwha;174 CSpritePtWHAngSides pwhas;175 CSpriteNumU8s nu;176 CSpriteNumPtU8s npu;177 CSpriteMeshU8s mu;178 CSpritePtMeshU8s pmu;179 CSpritePtStr ps;180 }181};182 