Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
SpriteSideBar.txt97 linesDownload Raw Back to Gr
1 2#help_index "Graphics/Sprite;Sprites"3 4CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *head,I64 *_cur_elem_num)5{//For the side-bar6  CSprite *res=CAlloc(sizeof(CSprite)),*tmpg;7  CDocEntry *doc_e=doc->head.next;8  Bool found=FALSE;9  I64 num=0;10  QueInit(res);11  while (doc_e!=doc) {12    if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) {13      tmpg=SpriteSetSettings(,head,doc_e->left_exp);14      if (tmpg!=head) {15        tmpg=MAllocIdent(tmpg);16        BEqu(&tmpg->type,SPf_SEL,Bt(&doc_e->type,DOCEt_SEL));17        if (*_cur_elem_num==doc_e->left_exp) {18          *_cur_elem_num=num;19          found=TRUE;20        }21        QueIns(tmpg,res->last);22        num++;23      }24    }25    doc_e=doc_e->next;26  }27  if (!found)28    *_cur_elem_num=num;29  QueDel(head);30  Free(head);31  return res;32}33 34U0 SpriteSideBarPickNew(CDoc *doc,CSprite *head,I64 old_num)35{36  CSprite *tmpg;37  CDocEntry *doc_cur_e=NULL,*doc_e;38  I64 cur_elem_num=0;39  U8 *st;40  DocPrint(doc,"$PURPLE$$TX+CX,\"Sprite SideBar\"$\n"41        "$LK+PU+CX,\"Click for Help\","42        "A=\"FI:::/Doc/SpriteSideBar.DD.Z\"$\n\n");43  tmpg=head->next;44  while (tmpg!=head) {45    st=SpriteElem2Summary(tmpg);46    if (cur_elem_num==old_num)47      doc_cur_e=doc_e=48            DocPrint(doc,"$LTRED$$MU-UL,\"%$Q\",LE=%d$\n",st,cur_elem_num++);49    else50      doc_e=DocPrint(doc,"$LTBLUE$$MU-UL,\"%$Q\",LE=%d$\n",st,cur_elem_num++);51    BEqu(&doc_e->de_flags,DOCEf_SEL,Bt(&tmpg->type,&SPf_SEL));52    BEqu(&doc_e->type,DOCEt_SEL,Bt(&tmpg->type,SPf_SEL));53    Free(st);54    tmpg=tmpg->next;55  }56  if (cur_elem_num==old_num)57    doc_cur_e=DocPrint(doc,"$LTRED$$MU-UL,\"END\",LE=%d$\n",cur_elem_num);58  else59    DocPrint(doc,"$LTBLUE$$MU-UL,\"END\",LE=%d$\n",cur_elem_num);60  if (doc_cur_e)61    doc->cur_entry=doc_cur_e;62}63 64U0 SpriteSideBarTask2(CTask *grand_parent)65{66  I64 w,h;67  CTask *parent=Fs->parent_task,*pu_task;68  while (TRUE) {69    pu_task=grand_parent->popup_task;70    if (TaskValidate(pu_task)) {71      w=parent->win_right-parent->win_left;72      WinHorz(pu_task->win_right+2,pu_task->win_right+2+w,parent);73      h=parent->win_bottom-parent->win_top;74      WinVert(pu_task->win_top,pu_task->win_top+h,parent);75    }76    Refresh;77  }78}79 80U0 SpriteSideBarTask(CTask *parent,CSprite **_head,I64 *_cur_elem_num)81{82  CDocEntry *doc_e;83  CDoc *doc=DocPut;84  Spawn(&SpriteSideBarTask2,parent,"CSpriteTask",,Fs);85  doc->flags|=DOCF_SIZE_MIN|DOCF_FORM;86  while (TRUE) {87    SpriteSideBarPickNew(doc,*_head,*_cur_elem_num);88    DocHighlightCursor(,doc);89    View;90    doc_e=doc->cur_entry;91    if (doc_e->type_u8==DOCT_MENU_VAL)92      *_cur_elem_num=doc_e->left_exp;93    *_head=SpriteSideBar2SpriteQue(doc,*_head,_cur_elem_num);94    DocClear(doc);95  }96}97