TempleOSCDV4.10.ISO
This commit is contained in:
1 parent
c5954d3371
commit
9206246147
181 files changed
+4468
-4313
No files matched your search
+127
-127
@@ -1,14 +1,14 @@
|
||||
#help_index "Graphics/Sprite;Sprites"
|
||||
|
||||
CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *root,I64 elem_num,
|
||||
CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *head,I64 elem_num,
|
||||
I64 x=0,I64 y=0,CColorROPU32 *_color=NULL,I64 *_width=NULL,
|
||||
I64 *_xx=NULL,I64 *_yy=NULL)
|
||||
{
|
||||
CSprite *res=root->next;
|
||||
CSprite *res=head->next;
|
||||
I64 width=1,xx=0,yy=0;
|
||||
CColorROPU32 color=BLACK;
|
||||
if (dc) DCRst(dc);
|
||||
while (elem_num-->0 && res!=root) {
|
||||
while (elem_num-->0 && res!=head) {
|
||||
switch (res->type) {
|
||||
case SPT_COLOR:
|
||||
color=res->c.color;
|
||||
@@ -49,13 +49,13 @@ CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *root,I64 elem_num,
|
||||
return res;
|
||||
}
|
||||
|
||||
Bool SpritePolyPtPlot(CSprite *root,I64 x,I64 y,I64)
|
||||
Bool SpritePolyPtPlot(CSprite *head,I64 x,I64 y,I64)
|
||||
{
|
||||
CSprite *tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PT));
|
||||
tempg->type=SPT_PT;
|
||||
tempg->p.x1=x;
|
||||
tempg->p.y1=y;
|
||||
QueIns(tempg,root->last);
|
||||
QueIns(tempg,head->last);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -76,19 +76,19 @@ CSprite *Sprite2SpriteQue(U8 *elems)
|
||||
return res;
|
||||
}
|
||||
|
||||
U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL)
|
||||
U8 *SpriteQue2Sprite(CSprite *head,I64 *_size=NULL)
|
||||
{
|
||||
I64 i,size=sprite_elem_base_sizes[SPT_END];
|
||||
CSprite *tempg=root->next;
|
||||
CSprite *tempg=head->next;
|
||||
U8 *res,*dst;
|
||||
while (tempg!=root) {
|
||||
while (tempg!=head) {
|
||||
size+=SpriteElemSize(tempg);
|
||||
tempg=tempg->next;
|
||||
}
|
||||
if (_size) *_size=size;
|
||||
res=dst=MAlloc(size);
|
||||
tempg=root->next;
|
||||
while (tempg!=root) {
|
||||
tempg=head->next;
|
||||
while (tempg!=head) {
|
||||
i=SpriteElemSize(tempg);
|
||||
MemCpy(dst,&tempg->start,i);
|
||||
dst+=i;
|
||||
@@ -98,25 +98,25 @@ U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL)
|
||||
return res;
|
||||
}
|
||||
|
||||
U0 SpriteEdUpdate(CDoc *doc,CDocEntry *doc_ce,CSprite *root)
|
||||
U0 SpriteEdUpdate(CDoc *doc,CDocEntry *doc_ce,CSprite *head)
|
||||
{
|
||||
CDocBin *tempb=doc_ce->bin_data;
|
||||
I64 size;
|
||||
Bool unlock=DocLock(doc);
|
||||
Free(tempb->data);
|
||||
tempb->data=SpriteQue2Sprite(root,&size);
|
||||
tempb->data=SpriteQue2Sprite(head,&size);
|
||||
tempb->size=size;
|
||||
if (unlock)
|
||||
DocUnlock(doc);
|
||||
}
|
||||
|
||||
U0 SpriteSetOrigin(CSprite *root,I64 dx,I64 dy,I64 dz)
|
||||
U0 SpriteSetOrigin(CSprite *head,I64 dx,I64 dy,I64 dz)
|
||||
{
|
||||
I64 i;
|
||||
I32 *ptr;
|
||||
CD3I32 *p;
|
||||
CSprite *tempg=root->next;
|
||||
while (tempg!=root) {
|
||||
CSprite *tempg=head->next;
|
||||
while (tempg!=head) {
|
||||
if (tempg->sel)
|
||||
switch (tempg->type) {
|
||||
case SPT_ARROW:
|
||||
@@ -372,14 +372,14 @@ CSprite *SpriteTransformBitMap(I64 *r,CSprite *tempg)
|
||||
return tempg1;
|
||||
}
|
||||
|
||||
U0 SpriteTransform(I64 *r,CSprite *root)
|
||||
U0 SpriteTransform(I64 *r,CSprite *head)
|
||||
{
|
||||
I64 i,j,k,num,
|
||||
x,y,z,x1,y1,z1,x2,y2,z2,x3,y3,z3;
|
||||
I32 *ptr;
|
||||
CD3I32 *p;
|
||||
CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3;
|
||||
while (tempg!=root) {
|
||||
CSprite *tempg=head->next,head2,*tempg1,*tempg2,*tempg3;
|
||||
while (tempg!=head) {
|
||||
if (tempg->sel)
|
||||
switch (tempg->type) {
|
||||
case SPT_WIDTH:
|
||||
@@ -450,7 +450,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
|
||||
}
|
||||
break;
|
||||
case SPT_POLYPT:
|
||||
QueInit(&root2);
|
||||
QueInit(&head2);
|
||||
x=tempg->npu.x; y=tempg->npu.y; z=0;
|
||||
x1=x; y1=y; z1=z; //unrotated cur coordinates
|
||||
Mat4x4MulXYZ(r,&x,&y,&z);
|
||||
@@ -464,14 +464,14 @@ U0 SpriteTransform(I64 *r,CSprite *root)
|
||||
y1+=gr_y_offsets[j];
|
||||
x=x1; y=y1; z=z1;
|
||||
Mat4x4MulXYZ(r,&x,&y,&z);
|
||||
Line(&root2,x3-x2,y3-y2,0,x-x2,y-y2,0,&SpritePolyPtPlot);
|
||||
Line(&head2,x3-x2,y3-y2,0,x-x2,y-y2,0,&SpritePolyPtPlot);
|
||||
x3=x; y3=y; z3=z;
|
||||
}
|
||||
|
||||
num=0;
|
||||
tempg1=root2.next;
|
||||
tempg1=head2.next;
|
||||
x3=0; y3=0; z3=0;
|
||||
while (tempg1!=&root2) {
|
||||
while (tempg1!=&head2) {
|
||||
tempg2=tempg1->next;
|
||||
if (tempg1->p.x1==x3 && tempg1->p.y1==y3) {
|
||||
QueRem(tempg1);
|
||||
@@ -490,8 +490,8 @@ U0 SpriteTransform(I64 *r,CSprite *root)
|
||||
ptr=&tempg3->npu.u;
|
||||
x3=0;y3=0; z3=0;
|
||||
i=0;
|
||||
tempg1=root2.next;
|
||||
while (tempg1!=&root2) {
|
||||
tempg1=head2.next;
|
||||
while (tempg1!=&head2) {
|
||||
tempg2=tempg1->next;
|
||||
BFieldOrU32(ptr,i,
|
||||
polypt_map[SignI64(tempg1->p.x1-x3)+1+
|
||||
@@ -553,12 +553,12 @@ U0 SpriteTransform(I64 *r,CSprite *root)
|
||||
}
|
||||
}
|
||||
|
||||
I64 SpriteQueSelCnt(CSprite *root,Bool val=TRUE)
|
||||
I64 SpriteQueSelCnt(CSprite *head,Bool val=TRUE)
|
||||
{
|
||||
I64 res=0;
|
||||
CSprite *tempg=root->next;
|
||||
CSprite *tempg=head->next;
|
||||
val=ToBool(val);
|
||||
while (tempg!=root) {
|
||||
while (tempg!=head) {
|
||||
if (ToBool(tempg->sel)==val)
|
||||
res++;
|
||||
tempg=tempg->next;
|
||||
@@ -566,11 +566,11 @@ I64 SpriteQueSelCnt(CSprite *root,Bool val=TRUE)
|
||||
return res;
|
||||
}
|
||||
|
||||
I64 SpriteQueSelAll(CSprite *root,Bool val=TRUE)
|
||||
I64 SpriteQueSelAll(CSprite *head,Bool val=TRUE)
|
||||
{
|
||||
I64 res=0;
|
||||
CSprite *tempg=root->next;
|
||||
while (tempg!=root) {
|
||||
CSprite *tempg=head->next;
|
||||
while (tempg!=head) {
|
||||
tempg->sel=val;
|
||||
res++;
|
||||
tempg=tempg->next;
|
||||
@@ -578,17 +578,17 @@ I64 SpriteQueSelAll(CSprite *root,Bool val=TRUE)
|
||||
return res;
|
||||
}
|
||||
|
||||
CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
|
||||
CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *head,I64 *_cur_elem_num)
|
||||
{//For the side-bar
|
||||
CSprite *res=CAlloc(sizeof(CSprite)),*tempg;
|
||||
CDocEntry *doc_e=doc->root.next;
|
||||
CDocEntry *doc_e=doc->head.next;
|
||||
Bool found=FALSE;
|
||||
I64 num=0;
|
||||
QueInit(res);
|
||||
while (doc_e!=doc) {
|
||||
if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) {
|
||||
tempg=SpriteSetSettings(,root,doc_e->left_exp);
|
||||
if (tempg!=root) {
|
||||
tempg=SpriteSetSettings(,head,doc_e->left_exp);
|
||||
if (tempg!=head) {
|
||||
tempg=MAllocIdent(tempg);
|
||||
tempg->sel=Bt(&doc_e->type,DOCEt_SEL);
|
||||
if (*_cur_elem_num==doc_e->left_exp) {
|
||||
@@ -603,12 +603,12 @@ CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
|
||||
}
|
||||
if (!found)
|
||||
*_cur_elem_num=num;
|
||||
QueDel(root);
|
||||
Free(root);
|
||||
QueDel(head);
|
||||
Free(head);
|
||||
return res;
|
||||
}
|
||||
|
||||
U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num)
|
||||
U0 SpriteSideBarPickNew(CDoc *doc,CSprite *head,I64 old_num)
|
||||
{
|
||||
CSprite *tempg;
|
||||
CDocEntry *doc_cur_e=NULL,*doc_e;
|
||||
@@ -617,15 +617,15 @@ U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num)
|
||||
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite SideBar\"$$\n"
|
||||
"$$LK+PU+CX,\"Click for Help\","
|
||||
"A=\"FI:::/Doc/SpriteSideBar.TXT.Z\"$$\n\n");
|
||||
tempg=root->next;
|
||||
while (tempg!=root) {
|
||||
tempg=head->next;
|
||||
while (tempg!=head) {
|
||||
st=SpriteElem2Summary(tempg);
|
||||
if (cur_elem_num==old_num) {
|
||||
DocPrint(doc,"$$LTRED$$");
|
||||
doc_e=doc_cur_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
|
||||
} else {
|
||||
DocPrint(doc,"$$LTBLUE$$");
|
||||
doc_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
|
||||
doc_e=DocPrint(doc,"$$MU-UL,\"%$$Q\",LE=%d$$\n",st,cur_elem_num++);
|
||||
}
|
||||
BEqu(&doc_e->de_flags,DOCEf_SEL,tempg->sel);
|
||||
BEqu(&doc_e->type,DOCEt_SEL,tempg->sel);
|
||||
@@ -659,29 +659,29 @@ U0 SpriteSideBarTask2(CTask *grand_parent)
|
||||
}
|
||||
}
|
||||
|
||||
U0 SpriteSideBarTask(CTask *parent,CSprite **_root,I64 *_cur_elem_num)
|
||||
U0 SpriteSideBarTask(CTask *parent,CSprite **_head,I64 *_cur_elem_num)
|
||||
{
|
||||
CDocEntry *doc_e;
|
||||
CDoc *doc=DocPut;
|
||||
Spawn(&SpriteSideBarTask2,parent,"CSpriteTask",,Fs);
|
||||
doc->flags|=DOCF_MIN_SIZE|DOCF_FORM;
|
||||
while (TRUE) {
|
||||
SpriteSideBarPickNew(doc,*_root,*_cur_elem_num);
|
||||
SpriteSideBarPickNew(doc,*_head,*_cur_elem_num);
|
||||
DocHighlightCursor(,doc);
|
||||
View;
|
||||
doc_e=doc->cur_entry;
|
||||
if (doc_e->type_u8==DOCT_MENU_VAL)
|
||||
*_cur_elem_num=doc_e->left_exp;
|
||||
*_root=SpriteSideBar2SpriteQue(doc,*_root,_cur_elem_num);
|
||||
*_head=SpriteSideBar2SpriteQue(doc,*_head,_cur_elem_num);
|
||||
DocClear(doc);
|
||||
}
|
||||
}
|
||||
|
||||
Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
|
||||
Bool SpriteEdText(CSprite **_head,I64 *_cur_elem_num)
|
||||
{
|
||||
Bool res;
|
||||
CSprite *root=*_root;
|
||||
U8 *elems=SpriteQue2Sprite(root);
|
||||
CSprite *head=*_head;
|
||||
U8 *elems=SpriteQue2Sprite(head);
|
||||
CDoc *doc=DocNew,*doc2,*old_put=DocPut;
|
||||
StrPrint(doc->filename.name,"AI:0x%X",doc);
|
||||
DocPrint(doc,"//$$PURPLE$$$$TX+CX,\"Sprite Edit as Text\"$$$$FG$$\n"
|
||||
@@ -696,11 +696,11 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
|
||||
if (elems=Code2Sprite(doc)) {
|
||||
DocDel(doc2);
|
||||
Fs->put_doc=old_put;
|
||||
QueDel(root);
|
||||
Free(root);
|
||||
root=Sprite2SpriteQue(elems);
|
||||
QueDel(head);
|
||||
Free(head);
|
||||
head=Sprite2SpriteQue(elems);
|
||||
Free(elems);
|
||||
*_cur_elem_num=QueCnt(root); //TODO: Might want to improve this.
|
||||
*_cur_elem_num=QueCnt(head); //TODO: Might want to improve this.
|
||||
break;
|
||||
} else {
|
||||
PopUpPrint("DocEd(0x%X,0x%X);",doc2,0);
|
||||
@@ -711,7 +711,7 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
|
||||
break;
|
||||
}
|
||||
DocDel(doc);
|
||||
if (_root) *_root=root;
|
||||
if (_head) *_head=head;
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -738,7 +738,7 @@ U0 GrInit3()
|
||||
}
|
||||
GrInit3;
|
||||
|
||||
I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
|
||||
I64 PopUpSpriteEd(CSprite **_head,I64 *_cur_elem_num)
|
||||
{
|
||||
U8 *st;
|
||||
CTask *pu_task;
|
||||
@@ -760,12 +760,12 @@ I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
|
||||
"$$PURPLE$$$$MU-UL,\"+] Sprite Main Menu\",LE=GED_MAIN_MENU$$$$LTBLUE$$\n"
|
||||
"$$MU-UL,\"Exit Sprite\",LE=GED_EXIT$$\n"
|
||||
"$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$");
|
||||
st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_root,_cur_elem_num);
|
||||
st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_head,_cur_elem_num);
|
||||
PopUp(st,NULL,&pu_task);
|
||||
Free(st);
|
||||
i=PopUpMenu(doc);
|
||||
if (TaskValidate(pu_task)) {
|
||||
*_root=SpriteSideBar2SpriteQue(DocPut(pu_task),*_root,_cur_elem_num);
|
||||
*_head=SpriteSideBar2SpriteQue(DocPut(pu_task),*_head,_cur_elem_num);
|
||||
Kill(pu_task);
|
||||
}
|
||||
DocDel(doc);
|
||||
@@ -784,14 +784,14 @@ class CEdSprite
|
||||
I32 *x,*y,*z,*w,*h;
|
||||
};
|
||||
|
||||
U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root)
|
||||
U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *head)
|
||||
{
|
||||
I64 i,num=0;
|
||||
I32 *ptr;
|
||||
CD3I32 *p;
|
||||
CEdSprite *temppe;
|
||||
CSprite *tempg=elems-offset(CSprite.start);
|
||||
QueInit(root);
|
||||
QueInit(head);
|
||||
while (tempg->type) {
|
||||
switch (tempg->type) {
|
||||
case SPT_ELLIPSE:
|
||||
@@ -805,7 +805,7 @@ U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root)
|
||||
temppe->w=&tempg->pwha.width;
|
||||
temppe->h=&tempg->pwha.height;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
goto pq_x1_y1;
|
||||
case SPT_RECT:
|
||||
case SPT_ROTATED_RECT:
|
||||
@@ -819,7 +819,7 @@ U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root)
|
||||
temppe->x=&tempg->pp.x2;
|
||||
temppe->y=&tempg->pp.y2;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
case SPT_TEXT:
|
||||
case SPT_TEXT_BOX:
|
||||
case SPT_TEXT_DIAMOND:
|
||||
@@ -836,7 +836,7 @@ pq_x1_y1:
|
||||
temppe->x=&tempg->p.x1;
|
||||
temppe->y=&tempg->p.y1;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
break;
|
||||
case SPT_SHIFT:
|
||||
x+=tempg->p.x1;
|
||||
@@ -852,7 +852,7 @@ pq_x1_y1:
|
||||
temppe->x=&ptr[i<<1];
|
||||
temppe->y=&ptr[i<<1+1];
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
}
|
||||
break;
|
||||
case SPT_POLYPT:
|
||||
@@ -863,7 +863,7 @@ pq_x1_y1:
|
||||
temppe->x=&tempg->npu.x;
|
||||
temppe->y=&tempg->npu.y;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
break;
|
||||
case SPT_BSPLINE2:
|
||||
case SPT_BSPLINE3:
|
||||
@@ -879,7 +879,7 @@ pq_x1_y1:
|
||||
temppe->y=&p[i].y;
|
||||
temppe->z=&p[i].z;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
}
|
||||
break;
|
||||
case SPT_MESH:
|
||||
@@ -893,7 +893,7 @@ pq_x1_y1:
|
||||
temppe->y=&tempg->pmu.y;
|
||||
temppe->z=&tempg->pmu.z;
|
||||
temppe->num=num;
|
||||
QueIns(temppe,root->last);
|
||||
QueIns(temppe,head->last);
|
||||
break;
|
||||
}
|
||||
tempg(U8 *)+=SpriteElemSize(tempg);
|
||||
@@ -901,15 +901,15 @@ pq_x1_y1:
|
||||
}
|
||||
}
|
||||
|
||||
U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *root)
|
||||
U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *head)
|
||||
{
|
||||
I64 x,y;
|
||||
CEdSprite *temppe;
|
||||
WinMgrSync;
|
||||
DCFill(dc);
|
||||
if (Blink(20)) {
|
||||
temppe=root->next;
|
||||
while (temppe!=root) {
|
||||
temppe=head->next;
|
||||
while (temppe!=head) {
|
||||
switch (temppe->type) {
|
||||
case GSPT_SIMPLE_PT:
|
||||
x=*temppe->x+temppe->xx;
|
||||
@@ -932,11 +932,11 @@ U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *root)
|
||||
}
|
||||
}
|
||||
|
||||
U0 SpriteCtrlPtsMove(CEdSprite *root,I64 dx,I64 dy)
|
||||
U0 SpriteCtrlPtsMove(CEdSprite *head,I64 dx,I64 dy)
|
||||
{
|
||||
CEdSprite *temppe;
|
||||
temppe=root->next;
|
||||
while (temppe!=root) {
|
||||
temppe=head->next;
|
||||
while (temppe!=head) {
|
||||
if (temppe->flags&GSPF_SEL)
|
||||
switch (temppe->type) {
|
||||
case GSPT_SIMPLE_PT:
|
||||
@@ -957,13 +957,13 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
I64 msg_code,a1,a2,xx,yy,xx2,yy2,dd,best_dd,cur_elem_num;
|
||||
Bool res=TRUE;
|
||||
CDC *dc=DCAlias;
|
||||
CEdSprite root,*temppe,*best_pe;
|
||||
CEdSprite head,*temppe,*best_pe;
|
||||
|
||||
SpritePtQueNew(elems,x,y,&root);
|
||||
SpritePtQueNew(elems,x,y,&head);
|
||||
cur_elem_num=0;
|
||||
if (root.next!=&root) {
|
||||
if (head.next!=&head) {
|
||||
while (TRUE) {
|
||||
SpriteCtrlPtsDraw(dc,&root); //has WinMgrSync
|
||||
SpriteCtrlPtsDraw(dc,&head); //has WinMgrSync
|
||||
switch (msg_code=ScanMsg(&a1,&a2,
|
||||
1<<MSG_IP_R_UP|1<<MSG_IP_L_DOWN|1<<MSG_KEY_DOWN)) {
|
||||
case MSG_IP_L_DOWN:
|
||||
@@ -971,8 +971,8 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
case GED_SHIFT_PTS:
|
||||
xx=a1; yy=a2;
|
||||
best_dd=MAX_I64;
|
||||
temppe=root.next;
|
||||
while (temppe!=&root) {
|
||||
temppe=head.next;
|
||||
while (temppe!=&head) {
|
||||
switch (temppe->type) {
|
||||
case GSPT_SIMPLE_PT:
|
||||
dd=SqrI64(*temppe->x+temppe->xx-xx)+
|
||||
@@ -995,7 +995,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
case GED_SHIFT_RECTS:
|
||||
xx2=xx=a1; yy2=yy=a2;
|
||||
while (TRUE) {
|
||||
SpriteCtrlPtsDraw(dc,&root);
|
||||
SpriteCtrlPtsDraw(dc,&head);
|
||||
dc->color=ROPF_DITHER+WHITE<<16+RED;
|
||||
GrBorder(dc,xx,yy,xx2,yy2);
|
||||
if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) {
|
||||
@@ -1007,8 +1007,8 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
}
|
||||
if (xx2<xx) SwapI64(&xx,&xx2);
|
||||
if (yy2<yy) SwapI64(&yy,&yy2);
|
||||
temppe=root.next;
|
||||
while (temppe!=&root) {
|
||||
temppe=head.next;
|
||||
while (temppe!=&head) {
|
||||
switch (temppe->type) {
|
||||
case GSPT_SIMPLE_PT:
|
||||
if (xx<=*temppe->x+temppe->xx<=xx2 &&
|
||||
@@ -1024,7 +1024,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
temppe=temppe->next;
|
||||
}
|
||||
do {
|
||||
SpriteCtrlPtsDraw(dc,&root);
|
||||
SpriteCtrlPtsDraw(dc,&head);
|
||||
msg_code=ScanMsg(&a1,&a2,1<<MSG_KEY_DOWN|1<<MSG_IP_L_DOWN);
|
||||
if (msg_code==MSG_KEY_DOWN) goto gs_key;
|
||||
} while (msg_code!=MSG_IP_L_DOWN);
|
||||
@@ -1032,14 +1032,14 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
|
||||
break;
|
||||
}
|
||||
do {
|
||||
SpriteCtrlPtsDraw(dc,&root);
|
||||
SpriteCtrlPtsDraw(dc,&head);
|
||||
if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) {
|
||||
SpriteCtrlPtsMove(&root,a1-xx,a2-yy);
|
||||
SpriteCtrlPtsMove(&head,a1-xx,a2-yy);
|
||||
xx=a1;yy=a2;
|
||||
}
|
||||
} while (msg_code!=MSG_IP_L_UP);
|
||||
temppe=root.next;
|
||||
while (temppe!=&root) {
|
||||
temppe=head.next;
|
||||
while (temppe!=&head) {
|
||||
temppe->flags&=~GSPF_SEL;
|
||||
temppe=temppe->next;
|
||||
}
|
||||
@@ -1067,7 +1067,7 @@ gs_key:
|
||||
}
|
||||
}
|
||||
gs_done:
|
||||
QueDel(&root,TRUE);
|
||||
QueDel(&head,TRUE);
|
||||
}
|
||||
DCFill(dc);
|
||||
DCDel(dc);
|
||||
@@ -1077,33 +1077,33 @@ gs_done:
|
||||
}
|
||||
|
||||
I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
CSprite **_root,I64 *_cur_elem_num)
|
||||
CSprite **_head,I64 *_cur_elem_num)
|
||||
{
|
||||
CDocEntry *doc_e2;
|
||||
CDocBin *tempb;
|
||||
Bool unlock;
|
||||
I64 i,r[16],msg_code,a1,a2,xx,yy,
|
||||
old_de_flags;
|
||||
CSprite *cur_elem,*root2,*next,*last,*tempg,*insert_pt;
|
||||
CSprite *cur_elem,*head2,*next,*last,*tempg,*insert_pt;
|
||||
|
||||
old_de_flags=doc_ce->de_flags;
|
||||
tempb=doc_ce->bin_data;
|
||||
DocUnlock(doc);
|
||||
SpriteQueSelAll(*_root,FALSE);
|
||||
SpriteQueSelAll(*_head,FALSE);
|
||||
do {
|
||||
if (winmgr.fps<10)
|
||||
doc_ce->de_flags|=DOCEF_DONT_DRAW;
|
||||
StrCpy(Fs->task_title,"Sprite Edit Menu");
|
||||
i=PopUpSpriteEd(_root,_cur_elem_num);
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
i=PopUpSpriteEd(_head,_cur_elem_num);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
if (0<=i<GED_EXIT) {
|
||||
StrCpy(Fs->task_title,DefineSub(i,"ST_SPRITE_ED_MENU"));
|
||||
switch (i) {
|
||||
case GED_SEL_UNSEL_ALL:
|
||||
if (!SpriteQueSelCnt(*_root))
|
||||
SpriteQueSelAll(*_root);
|
||||
if (!SpriteQueSelCnt(*_head))
|
||||
SpriteQueSelAll(*_head);
|
||||
else
|
||||
SpriteQueSelAll(*_root,FALSE);
|
||||
SpriteQueSelAll(*_head,FALSE);
|
||||
break;
|
||||
case GED_SEL:
|
||||
case GED_UNSEL:
|
||||
@@ -1115,7 +1115,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
WinMgrSync(2);
|
||||
if (msg_code==MSG_IP_L_DOWN) {
|
||||
*_cur_elem_num=doc->nearest_sprite_elem_num;
|
||||
cur_elem=SpriteSetSettings(,*_root,*_cur_elem_num);
|
||||
cur_elem=SpriteSetSettings(,*_head,*_cur_elem_num);
|
||||
cur_elem->sel=ToBool(i==GED_SEL);
|
||||
GetMsg(,,1<<MSG_IP_L_UP);
|
||||
}
|
||||
@@ -1123,28 +1123,28 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
doc->cur_sprite=NULL;
|
||||
break;
|
||||
case GED_SET_ORIGIN:
|
||||
SpriteQueSelAll(*_root);
|
||||
SpriteQueSelAll(*_head);
|
||||
doc_ce->de_flags=old_de_flags;
|
||||
GetMsg(&a1,&a2,1<<MSG_IP_L_UP);
|
||||
SpriteSetOrigin(*_root,x-a1,y-a2,0);
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteQueSelAll(*_root,FALSE);
|
||||
SpriteSetOrigin(*_head,x-a1,y-a2,0);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
SpriteQueSelAll(*_head,FALSE);
|
||||
break;
|
||||
case GED_SHIFT_SEL:
|
||||
if (!SpriteQueSelCnt(*_root))
|
||||
SpriteQueSelAll(*_root);
|
||||
if (!SpriteQueSelCnt(*_head))
|
||||
SpriteQueSelAll(*_head);
|
||||
doc_ce->de_flags=old_de_flags;
|
||||
GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN);
|
||||
xx=a1; yy=a2;
|
||||
do {
|
||||
msg_code=GetMsg(&a1,&a2,
|
||||
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
|
||||
SpriteSetOrigin(*_root,a1-xx,a2-yy,0);
|
||||
SpriteSetOrigin(*_head,a1-xx,a2-yy,0);
|
||||
xx=a1; yy=a2;
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
} while (msg_code!=MSG_IP_L_UP);
|
||||
if (!SpriteQueSelCnt(*_root,FALSE))
|
||||
SpriteQueSelAll(*_root,FALSE);
|
||||
if (!SpriteQueSelCnt(*_head,FALSE))
|
||||
SpriteQueSelAll(*_head,FALSE);
|
||||
break;
|
||||
case GED_SHIFT_PTS:
|
||||
case GED_SHIFT_RECTS:
|
||||
@@ -1155,25 +1155,25 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
"to OR another rectangle.\n");
|
||||
doc_ce->de_flags=old_de_flags;
|
||||
if (SpriteShiftPts(tempb->data,x,y,_cur_elem_num,i)) {
|
||||
QueDel(*_root);
|
||||
Free(*_root);
|
||||
*_root=Sprite2SpriteQue(tempb->data);
|
||||
QueDel(*_head);
|
||||
Free(*_head);
|
||||
*_head=Sprite2SpriteQue(tempb->data);
|
||||
} else
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
break;
|
||||
case GED_TRANSFORM_SEL:
|
||||
if (!SpriteQueSelCnt(*_root))
|
||||
SpriteQueSelAll(*_root);
|
||||
if (!SpriteQueSelCnt(*_head))
|
||||
SpriteQueSelAll(*_head);
|
||||
if (PopUpTransform(r)) {
|
||||
SpriteTransform(r,*_root);
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteTransform(r,*_head);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
}
|
||||
if (!SpriteQueSelCnt(*_root,FALSE))
|
||||
SpriteQueSelAll(*_root,FALSE);
|
||||
if (!SpriteQueSelCnt(*_head,FALSE))
|
||||
SpriteQueSelAll(*_head,FALSE);
|
||||
break;
|
||||
case GED_SHIFT_SUB_ORIGIN:
|
||||
doc_ce->de_flags=old_de_flags;
|
||||
insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num);
|
||||
insert_pt=SpriteSetSettings(,*_head,*_cur_elem_num);
|
||||
tempg=CAlloc(SpriteElemQuedBaseSize(SPT_SHIFT));
|
||||
tempg->type=SPT_SHIFT;
|
||||
tempg->p.x1=0;
|
||||
@@ -1186,7 +1186,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
|
||||
tempg->p.x1=a1-xx;
|
||||
tempg->p.y1=a2-yy;
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
} while (msg_code!=MSG_IP_L_UP);
|
||||
*_cur_elem_num+=1;
|
||||
break;
|
||||
@@ -1197,36 +1197,36 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
|
||||
"'Insert shift sub-origin' after picking the\n"
|
||||
"element to insert before. Or,\n"
|
||||
"use 'shift points'.\n");
|
||||
insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num);
|
||||
insert_pt=SpriteSetSettings(,*_head,*_cur_elem_num);
|
||||
unlock=DocLock(sys_clipboard_doc);
|
||||
doc_e2=sys_clipboard_doc->root.next;
|
||||
doc_e2=sys_clipboard_doc->head.next;
|
||||
while (doc_e2!=sys_clipboard_doc) {
|
||||
if (doc_e2->type_u8==DOCT_SPRITE) {
|
||||
root2=Sprite2SpriteQue(doc_e2->bin_data->data);
|
||||
if (root2->next!=root2) {
|
||||
tempg=root2->next;
|
||||
while (tempg!=root2) {
|
||||
head2=Sprite2SpriteQue(doc_e2->bin_data->data);
|
||||
if (head2->next!=head2) {
|
||||
tempg=head2->next;
|
||||
while (tempg!=head2) {
|
||||
*_cur_elem_num+=1;
|
||||
tempg=tempg->next;
|
||||
}
|
||||
next=root2->next;
|
||||
last=root2->last;
|
||||
next=head2->next;
|
||||
last=head2->last;
|
||||
insert_pt->last->next=next;
|
||||
next->last=insert_pt->last;
|
||||
insert_pt->last=last;
|
||||
last->next=insert_pt;
|
||||
}
|
||||
Free(root2);
|
||||
Free(head2);
|
||||
}
|
||||
doc_e2=doc_e2->next;
|
||||
}
|
||||
if (unlock)
|
||||
DocUnlock(sys_clipboard_doc);
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
break;
|
||||
case GED_TEXT_ED:
|
||||
if (SpriteEdText(_root,_cur_elem_num))
|
||||
SpriteEdUpdate(doc,doc_ce,*_root);
|
||||
if (SpriteEdText(_head,_cur_elem_num))
|
||||
SpriteEdUpdate(doc,doc_ce,*_head);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user