Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
GrInitB.txt211 linesDownload Raw Back to Gr
1 2#help_index "Graphics/Scrn"3 4U0 GrSetUpTables()5{6  CDC *dc;7  I64 i,j,k,l,m,x,y,rr;8  U8 *dst;9 10  k=0;11  for (i=0;i<256;i++)12    for (j=0;j<8;j++)13      if (Bt(&i,j))14        gr.to_8_bits(U8 *)[k++]=0xFF;15      else16        gr.to_8_bits(U8 *)[k++]=0x00;17  k=0;18  for (i=0;i<256;i++)19    for (j=0;j<8;j++)20      gr.to_8_colors(U8 *)[k++]=i;21 22  for (i=0;i<GR_PEN_BRUSHES_NUM;i++) {23    k=i+1;24 25    rr=k*k;26    for (y=1;y<k;y++)27      for (x=1;x<k;x++)28        if (SqrI64(y*2-k)+SqrI64(x*2-k)<rr) {29          if (x-1-i>>1<gr.circle_lo[i][i-y])30            gr.circle_lo[i][i-y]=x-1-i>>1;31          if (x-1-i>>1>gr.circle_hi[i][i-y])32            gr.circle_hi[i][i-y]=x-1-i>>1;33        }34 35    dc=DCNew(i,i);36    gr.pen_brushes[i]=dc;37    dc->color=COLOR_MONO;38    rr=k*k;39    for (y=1;y<k;y++)40      for (x=1;x<k;x++)41        if (SqrI64(y*2-k)+SqrI64(x*2-k)<rr)42          GrPlot0(dc,x-1,y-1);43 44    dc=DCNew(i,i);45    gr.collision_pen_brushes[i]=dc;46    dc->color=COLOR_INVALID;//Want color that never occurs.47    rr=k*k;48    for (y=1;y<k;y++)49      for (x=1;x<k;x++)50        if (SqrI64(y*2-k)+SqrI64(x*2-k)<rr)51          GrPlot0(dc,x-1,y-1);52 53    dc=DCNew(i,i);54    gr.even_pen_brushes[i]=dc;55    dc->color=COLOR_MONO;56    rr=k*k;57    for (y=1;y<k;y++)58      for (x=1;x<k;x++)59        if (!(((x-1)^(y-1))&1) && SqrI64(y*2-k)+SqrI64(x*2-k)<rr)60          GrPlot0(dc,x-1,y-1);61 62    dc=DCNew(i,i);63    gr.odd_pen_brushes[i]=dc;64    dc->color=COLOR_MONO;65    rr=k*k;66    for (y=1;y<k;y++)67      for (x=1;x<k;x++)68        if (((x-1)^(y-1))&1 && SqrI64(y*2-k)+SqrI64(x*2-k)<rr)69          GrPlot0(dc,x-1,y-1);70  }71  if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode72    MemSet(text.vga_text_alias,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));73    MemSet(gr.vga_text_cache,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));74  } else {75    OutU8(VGAP_IDX,VGAR_MAP_MASK);76    OutU8(VGAP_DATA,0x0F);77//Virtual Box crashes on the following for some reason.78    //    MemSet(text.vga_alias,0,GR_HEIGHT*GR_WIDTH>>3);79    MemSet(gr.scrn_image->body,0,GR_WIDTH*GR_HEIGHT>>1);80  }81  for (i=1;i<=GR_SCRN_ZOOM_MAX;i++) {82    dst=gr.scrn_zoom_tables[i]=MAlloc(256*i);83    for (j=0;j<256;j++) {84      m=0;85      for (k=0;k<8;k++) {86        if (Bt(&j,k)) {87          for (l=0;l<i;l++)88            Bts(&m,l+k*i);89        }90      }91      for (l=0;l<i;l++)92        dst[j+l*256]=m.u8[l];93    }94  }95}96 97#help_index "Graphics/Scrn;Windows"98 99U0 WinZBufFill(CTask *task)100{//Not public101  I64 y,t,b,l,r,w;102  if (!Bt(&task->display_flags,DISPLAYf_NO_BORDER)) {103    if (task->win_top-1>0)104      t=task->win_top-1;105    else106      t=0;107    if (task->win_bottom+1<TEXT_ROWS)108      b=task->win_bottom+1;109    else110      b=TEXT_ROWS-1;111    if (task->win_left-1>0)112      l=task->win_left-1;113    else114      l=0;115    if (task->win_right+1<TEXT_COLS)116      r=task->win_right+1;117    else118      r=TEXT_COLS-1;119  } else {120    if (task->win_top>0)121      t=task->win_top;122    else123      t=0;124    if (task->win_bottom<TEXT_ROWS)125      b=task->win_bottom;126    else127      b=TEXT_ROWS-1;128    if (task->win_left>0)129      l=task->win_left;130    else131      l=0;132    if (task->win_right<TEXT_COLS)133      r=task->win_right;134    else135      r=TEXT_COLS-1;136  }137  t=ClampI64(t,0,TEXT_ROWS-1);138  b=ClampI64(b,t,TEXT_ROWS-1);139  l=ClampI64(l,0,TEXT_COLS-1);140  r=ClampI64(r,l,TEXT_COLS-1);141  if (w=r-l+1)142    for (y=t;y<=b;y++)143      MemSetU16(gr.win_z_buf(U8 *)+(y*TEXT_COLS+l)*sizeof(U16),144            task->win_z_num,w);145}146 147public U0 WinZBufUpdate()148{//Might have to call if doing graphics outside winmgr callback routines.149//Call it if, for example, when a pop-up window closes and you need to refresh150  //before graphics.151  I64 i,z=1;152  U16 *ptr;153  CTask *task,*task1;154  if (gr.win_z_buf) {155    LBtr(&sys_semas[SEMA_UPDATE_WIN_Z_BUF],0);156    task1=task=sys_winmgr_task;157    do {158      if (!TaskValidate(task)) break;159      if (Bt(&task->display_flags,DISPLAYf_SHOW)) {160        task->win_z_num=z++;161        WinZBufFill(task);162      }163      task=task->next_task;164    } while (task!=task1 && z<0x10000);165 166    MemSet(gr.win_uncovered_bitmap,0,(gr.highest_uncovered+7)>>3+1);167    gr.highest_uncovered=z-1;168    for (ptr=gr.win_z_buf,i=TEXT_ROWS*TEXT_COLS;i;i--)169      Bts(gr.win_uncovered_bitmap,*ptr++);170  }171}172 173#help_index "Graphics"174U0 GrInit2()175{176  MemSet(&gr,0,sizeof(CGrGlbls));177  gr.sprite_hash=HashTableNew(512);178  HashDefineLstAdd("ST_SPRITE_ELEM_CODES",SPHT_ELEM_CODE,gr.sprite_hash);179  gr.scrn_zoom=1;180 181  PaletteSetStd;182  fp_set_std_palette=&PaletteSetStd;183  GrPaletteIndicesSet;184 185  gr.to_8_bits  =MAlloc(256*sizeof(I64));186  gr.to_8_colors=MAlloc(256*sizeof(I64));187 188  gr.text_base=CAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U32));189  gr.vga_text_cache=MAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U16));190  gr.win_uncovered_bitmap=CAlloc(65536/8);191  gr.highest_uncovered=0;192  gr.win_z_buf=MAlloc(TEXT_ROWS*TEXT_COLS*sizeof(U16));193 194  gr.dc2=DCNew(GR_WIDTH,GR_HEIGHT);195  gr.dc2->flags|=DCF_SCRN_BITMAP;196  gr.dc_cache=DCNew(GR_WIDTH,GR_HEIGHT);197 198  gr.dc=DCNew(GR_WIDTH,GR_HEIGHT);199  gr.dc->flags|=DCF_SCRN_BITMAP|DCF_ON_TOP;200  DCFill;201 202  gr.dc1=DCNew(GR_WIDTH,GR_HEIGHT);203  gr.dc1->flags|=DCF_SCRN_BITMAP;204 205  gr.scrn_image=DCNew(GR_WIDTH,GR_HEIGHT); //4-bit206  gr.zoomed_dc   =DCNew(GR_WIDTH,GR_HEIGHT); //4-bit207  gr.zoomed_dc->flags|=DCF_SCRN_BITMAP;208}209 210GrInit2;211