<1>/* Graphics Not Rendered in HTML */

#define MAP_HEIGHT      2048
#define MAP_WIDTH       2048

#define TREES_NUM       256

I64 tree_x[TREES_NUM],tree_y[TREES_NUM];

U0 DrawIt(CTask *task,CDC *dc)
{
  I64 i,h,v;

  task->horz_scroll.min=0;
  task->horz_scroll.max=MAP_WIDTH-task->pix_width;
  task->vert_scroll.min=0;
  task->vert_scroll.max=MAP_HEIGHT-task->pix_height;
  TaskDerivedValsUpdate(task);

  h=task->horz_scroll.pos;
  v=task->vert_scroll.pos;

  dc->color=BROWN;
  dc->thick=4;
  GrLine3(dc,2-h,2-v,0,MAP_WIDTH-3-h,2-v,0);
  GrLine3(dc,2-h,MAP_HEIGHT-3-v,0,MAP_WIDTH-3-h,MAP_HEIGHT-3-v,0);
  GrLine3(dc,2-h,2-v,0,2-h,MAP_HEIGHT-3-v,0);
  GrLine3(dc,MAP_WIDTH-3-h,2-v,0,MAP_WIDTH-3-h,MAP_HEIGHT-3-v,0);

  //Check bounds if you wish better performance.
  for (i=0;i<TREES_NUM;i++)
    Sprite3(dc,tree_x[i]-h,tree_y[i]-v,0,<Tree>);
}

U0 Init()
{
  I64 i;
  for (i=0;i<TREES_NUM;i++) {
    tree_x[i]=RandU16%MAP_WIDTH;
    tree_y[i]=RandU16%MAP_HEIGHT;
  }
}

U0 ScrollBars()
{
  SettingsPush; //See SettingsPush
  Init;
  Fs->draw_it=&DrawIt;
  WinBorder(ON);
  DocCursor;
  DocClear;
  DocScroll;

  Fs->horz_scroll.pos=0;
  Fs->vert_scroll.pos=0;
  GetChar(,FALSE);
  SettingsPop;
//If you care, you might want to
  //save the original state of the
  //scroll bars.
}

ScrollBars;