Ejemplo n.º 1
0
int Text::expose(XEvent *ev)
{
    drawclr(this);
    if(text)
    {
        if(activated_flag) drawtxt(this,gtfgnd(),xpos,ypos,text);
        else drawtxt(this,getgc("8x13","Dim Grey"),xpos,ypos,text);
    }
    return 0;
}
Ejemplo n.º 2
0
void Field::draw(int new_x,int new_y,int new_w,int new_h)
  {
  drawclr();
  repos();
  if(!buf.size())
    { // Display title
    if(title.size()>=gtwidth()) drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,title.substr(0,gtwidth()));
    else drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,title);
    }
  else
    { // Display edif buffer
    if(buf.size()-ofst>=gtwidth()) drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,buf.substr(ofst,gtwidth()));
    else drawtxt(gtfgnd(),0,gtheight()/2-txth(gtfgnd())/2,buf.substr(ofst,buf.size()-ofst));
    }
  }
Ejemplo n.º 3
0
void
drawpages(char *pagelist)
{
    int page, spage, epage;
    char *spec, *dash;

    if (!src)
        drawusage();

    spec = strsep(&pagelist, ",");
    while (spec)
    {
        dash = strchr(spec, '-');

        if (dash == spec)
            spage = epage = 1;
        else
            spage = epage = atoi(spec);

        if (dash)
        {
            if (strlen(dash) > 1)
                epage = atoi(dash + 1);
            else
                epage = pdf_getpagecount(srcpages);
        }

        if (spage > epage)
            page = spage, spage = epage, epage = page;

        for (page = spage; page <= epage; page++)
        {
            if (page < 1 || page > pdf_getpagecount(srcpages))
                continue;
            switch (drawmode)
            {
            case DRAWPNM: drawpnm(page); break;
            case DRAWTXT: drawtxt(page); break;
            case DRAWXML: drawxml(page); break;
            }
        }

        spec = strsep(&pagelist, ",");
    }
}
Ejemplo n.º 4
0
Archivo: pdfdraw.c Proyecto: Limsik/e17
static void drawpages(char *pagelist)
{
	int page, spage, epage;
	char *spec, *dash;
	struct benchmark loadtimes, drawtimes;

	if (!xref)
		drawusage();

	if (benchmark)
	{
		memset(&loadtimes, 0x00, sizeof (loadtimes));
		loadtimes.min = LONG_MAX;
		memset(&drawtimes, 0x00, sizeof (drawtimes));
		drawtimes.min = LONG_MAX;
	}

	spec = strsep(&pagelist, ",");
	while (spec)
	{
		dash = strchr(spec, '-');

		if (dash == spec)
			spage = epage = 1;
		else
			spage = epage = atoi(spec);

		if (dash)
		{
			if (strlen(dash) > 1)
				epage = atoi(dash + 1);
			else
				epage = pagecount;
		}

		if (spage > epage)
			page = spage, spage = epage, epage = page;

		if (spage < 1)
			spage = 1;
		if (epage > pagecount)
			epage = pagecount;

		printf("Drawing pages %d-%d...\n", spage, epage);
		for (page = spage; page <= epage; page++)
		{
			switch (drawmode)
			{
			case DRAWPNM: drawpnm(page, &loadtimes, &drawtimes); break;
			case DRAWTXT: drawtxt(page); break;
			case DRAWXML: drawxml(page); break;
			}
		}

		spec = strsep(&pagelist, ",");
	}

	if (benchmark)
	{
		if (loadtimes.pages > 0)
		{
			loadtimes.avg /= loadtimes.pages;
			drawtimes.avg /= drawtimes.pages;

			printf("benchmark[load]: min: %6.3fs (page % 4d), avg: %6.3fs, max: %6.3fs (page % 4d)\n",
				loadtimes.min / 1000000.0, loadtimes.minpage,
				loadtimes.avg / 1000000.0,
				loadtimes.max / 1000000.0, loadtimes.maxpage);
			printf("benchmark[draw]: min: %6.3fs (page % 4d), avg: %6.3fs, max: %6.3fs (page % 4d)\n",
				drawtimes.min / 1000000.0, drawtimes.minpage,
				drawtimes.avg / 1000000.0,
				drawtimes.max / 1000000.0, drawtimes.maxpage);
		}
	}
}
Ejemplo n.º 5
0
void Edit::draw(int new_x,int new_y,int new_w,int new_h)
  {
  // Check for cursor position change
  repos();
  if(!buf.eof->byte)
    { // Buffer is empty, so just display title
    drawclr();
    drawtxt(gtfgnd(),0,0,title);
    }
  else
    { // Display edit buffer
    int y;
    String bf(new_w);
    Pointer *p=top->clone();
    for(y=0;y!=gtheight();++y)
      if(y>=new_y && y<new_y+new_h)
        { // We need to draw this line
        long col;
        int c;
        drawclr(new_x,y,new_w,1);
        col=0;

        while(col<new_x+new_w+loffset)
          {
          c=p->getc();
          if(c==-1) break;
          if(c=='\n') break;
          if(c=='\t')
            {
            do
              {
              if(col>=new_x+loffset && col<new_x+new_w+loffset)
                bf[col-loffset-new_x]=' ';
              ++col;
              }
              while(col&7);
            }
          else
            {
            if(col>=new_x+loffset && col<new_x+new_w+loffset)
              bf[col-loffset-new_x]=c;
            ++col;
            }
          }

        while(col<loffset+new_x+new_w)
          {
          if(col>=loffset+new_x) bf[col-loffset-new_x]=' ';
          ++col;
          }

        // Draw the buffer
        drawtxt(gtfgnd(),new_x,y,bf);

        // Move to next line if we're not already there
        if(c==-1 || (c!='\n' && !p->nextl()))
          {
          ++y;
          break;
          }
        }
      else if(!p->nextl())
        {
        ++y;
        break;
        }
    for(;y!=gtheight();++y)
      if(y>=new_y && y<new_y+new_h)
        { // We need to erase this line
        drawclr(new_x,y,new_w,1);
        }
    p->rm();
    }
  }