Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
CtrlsSlider.txt216 linesDownload Raw Back to Ctrls
1 2class CTemplateCSSlider3{4  CTemplateCSSlider *next,*last;5  U8 *name;6  I64 num;7};8 9class CTemplateCS10{11  CTemplateCSSlider *next_slider,*last_slider;12  I64 num_sliders,range,spacing,border;13  U8 *glbl_name;14};15 16CTemplateCS *CtrlSliderGet()17{18  CTemplateCSSlider *tmps;19  U8 *st,pmt[STR_LEN];20  CTemplateCS *res=CAlloc(sizeof(CTemplateCS));21 22  "$PURPLE$Ctrl Slider$FG$\n\n";23 24  res->glbl_name=GetStr("Glbl Struct Name (ENTER for No Glbl):");25  res->range=GetI64     ("Range   (%4d):",30);26  res->spacing=GetI64("Spacing (%4d):",20);27  res->border=GetI64 ("Border  (%4d):",2);28 29  res->next_slider=res->last_slider=&res->next_slider;30  while (TRUE) {31    StrPrint(pmt,"Slider #%d Name:",res->num_sliders+1);32    st=GetStr(pmt);33    if (!*st) {34      Free(st);35      break;36    }37    tmps=CAlloc(sizeof(CTemplateCSSlider));38    tmps->name=st;39    QueIns(tmps,res->last_slider);40    tmps->num=res->num_sliders++;41  }42  return res;43}44 45U0 TemplateCtrlSlider(CDoc *doc)46{47  CTask *task;48  CTemplateCS *m=NULL;49  CTemplateCSSlider *tmps;50  I64 i;51 52  DocUnlock(doc);53  DocRecalc(doc);54  DocCaptureUndo(doc,TRUE);55 56  task=User("CTemplateCS **_m=0x%X;*_m=CtrlSliderGet;\n",&m);57  while (!m)58    Yield;59 60  DocPrint(doc,61"#define SLIDER_RANGE\t%d62#define SLIDER_SPACING\t%d63#define SLIDER_BORDER\t%d64 65class CSliderState66{67",m->range,m->spacing,m->border);68 69  tmps=m->next_slider;70  while (tmps!=&m->next_slider) {71    DocPrint(doc,"  I64 %s;\n",tmps->name);72    tmps=tmps->next;73  }74  if (*m->glbl_name)75    DocPrint(doc,"} %s;\n",m->glbl_name);76  else77    DocPrint(doc,"};\n");78 79  DocPrint(doc,80"81U0 DrawCtrlSlider(CDC *dc,CCtrl *c)82{83  CSliderState *s=c->state;84 85  dc->color=LTRED;86  GrRect(dc, c->left,c->top,%d*SLIDER_SPACING+%d,SLIDER_SPACING*2+SLIDER_RANGE);87  dc->color=BLUE;88  GrRect(dc, c->left+SLIDER_BORDER,c->top+SLIDER_BORDER,89    %d*SLIDER_SPACING+%d-2*SLIDER_BORDER,SLIDER_SPACING*290    +SLIDER_RANGE-2*SLIDER_BORDER);91  dc->color=BLACK;92",m->num_sliders+1,m->num_sliders,m->num_sliders+1,m->num_sliders);93 94  for (i=0;i<m->num_sliders;i++)95    DocPrint(doc,96"  GrLine(dc,c->left+%d*SLIDER_SPACING+%d,c->top+SLIDER_SPACING,97             c->left+%d*SLIDER_SPACING+%d,c->top+SLIDER_SPACING+SLIDER_RANGE-1);98",i+1,i,i+1,i);99 100  DocPrint(doc,"  dc->color=LTRED;\n");101 102  tmps=m->next_slider;103  while (tmps!=&m->next_slider) {104    DocPrint(doc,105"  GrPrint(dc,c->left+%d*SLIDER_SPACING+%d-FONT_WIDTH/2,106    c->top+SLIDER_SPACING+SLIDER_RANGE+3,107    \"%%d\",s->%s*10/SLIDER_RANGE);\n",108      tmps->num+1,tmps->num,tmps->name);109    tmps=tmps->next;110  }111 112  tmps=m->next_slider;113  while (tmps!=&m->next_slider) {114    DocPrint(doc,115        "  GrRect(dc,c->left+%d*SLIDER_SPACING+%d-3,"116        "c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->%s-2,7,5);\n",117      tmps->num+1,tmps->num,tmps->name);118    tmps=tmps->next;119  }120  DocPrint(doc,"  dc->color=YELLOW;\n");121 122  tmps=m->next_slider;123  while (tmps!=&m->next_slider) {124    DocPrint(doc,"  GrRect(dc,c->left+%d*SLIDER_SPACING+%d-2,"125        "c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->%s-1,5,3);\n",126      tmps->num+1,tmps->num,tmps->name);127    tmps=tmps->next;128  }129  DocPrint(doc,130"}131 132U0 UpdateDerivedCtrlSlider(CCtrl *c)133{134  CSliderState *s=c->state;135  c->left=c->win_task->pix_width/2-(SLIDER_SPACING*3+2)/2;136  c->right=c->left+%d*SLIDER_SPACING+%d;137  c->top=c->win_task->pix_height/2-(SLIDER_SPACING*2+SLIDER_RANGE)/2;138  c->bottom=c->top+SLIDER_SPACING*2+SLIDER_RANGE;139",m->num_sliders+1,m->num_sliders);140 141  tmps=m->next_slider;142  while (tmps!=&m->next_slider) {143    DocPrint(doc,"  s->%s=ClampI64(s->%s,0,SLIDER_RANGE-1);\n",144        tmps->name,tmps->name);145    tmps=tmps->next;146  }147  DocPrint(doc,148"}149 150U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool down)151{152  no_warn down;153  CSliderState *s=c->state;154");155 156  tmps=m->next_slider;157  while (tmps!=&m->next_slider) {158    DocPrint(doc,"  ");159    if (tmps!=m->next_slider)160      DocPrint(doc,"else ");161    if (tmps->next==&m->next_slider)162      DocPrint(doc,"\n");163    else164      DocPrint(doc,"if (x<c->left+%d*SLIDER_SPACING+%d+SLIDER_SPACING/2)\n",165        tmps->num+1,tmps->num);166    DocPrint(doc,"    s->%s=SLIDER_RANGE-1-(y-(c->top+SLIDER_SPACING));\n",167       tmps->name);168    tmps=tmps->next;169  }170 171  DocPrint(doc,172"  if (c->update_derived_vals)173    (*c->update_derived_vals)(c);174}175 176CCtrl *SliderNew()177{178  CCtrl *c=CAlloc(sizeof(CCtrl));179  c->win_task=Fs;180  c->flags=CTRLF_SHOW|CTRLF_CAPTURE_LEFT_MS;181  c->type=CTRLT_GENERIC;182");183  if (*m->glbl_name)184    DocPrint(doc,"  c->state=&%s;\n"185        "  MemSet(&%s,0,sizeof(CSliderState));\n",m->glbl_name,m->glbl_name);186  else187    DocPrint(doc,       "  c->state=CAlloc(sizeof(CSliderState));\n");188  DocPrint(doc,189"  c->draw_it=&DrawCtrlSlider;190  c->left_click=&LeftClickSlider;191  c->update_derived_vals=&UpdateDerivedCtrlSlider;192  QueIns(c,Fs->last_ctrl);193  TaskDerivedValsUpdate;194  return c;195}196 197U0 SliderDel(CCtrl *c)198{199  QueRem(c);200");201  if (!*m->glbl_name)202    DocPrint(doc,"  Free(c->state);\n");203  DocPrint(doc,204"  Free(c);205}206");207 208  Kill(task);  //This frees memory.209 210  RegOneTimePopUp(ARf_MANAGE_SLIDER,211    "Modify the code to your heart's content.\n"212    "The code is no longer managed.\n");213 214  DocLock(doc);215}216