예제 #1
0
Rectangle Rectangle::quadrant( int q ) const
{

    q %= 4;

    int qWidth = getwidth() / 2 - (getwidth() % 2 ? 0 : 1);
    int qHeight = getheight() / 2 - (getheight() % 2 ? 0 : 1);

    switch (q)
    {

        case 0:
            return Rectangle( a.get_x(), a.get_y(), a.get_x() + qWidth, a.get_y() + qHeight );

        case 1:
            return Rectangle( b.get_x() - qWidth, a.get_y(), b.get_x(), a.get_y() + qHeight );

        case 2:
            return Rectangle( a.get_x(), b.get_y() - qHeight, a.get_x() + qWidth, b.get_y() );

        case 3:
            return Rectangle( b.get_x() - qWidth, b.get_y() - qHeight, b.get_x(), b.get_y() );
        default:
            break;
    }

    // Error getting rectangle quadrant:
    assert(0);
    return Rectangle();

}
예제 #2
0
HelpWin::HelpWin(int rows, int cols) : NGroup(NRect(rows, cols, getmaxy(stdscr)/2-rows/2,getmaxx(stdscr)/2-cols/2))
{
    caption = strdup(" Hot keys list ");
    modalflag = true;
    resize(17,60);
    wattrset(win,getcolorpair(COLOR_WHITE, COLOR_BLACK) | A_BOLD);
    if(asciilinedraw == 1)
	wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
    else
	box(win,0,0);
    mvwprintw(win,0,getwidth()/2-(strlen(caption)/2),caption);
    text1 = new NStaticText(NRect(getheight()-2,getwidth()-2,/*rect.begrow+*/1,/*rect.begcol+*/1));
    int attr1 = getcolorpair(COLOR_YELLOW, COLOR_BLACK) | A_BOLD;
    int attr2 = getcolorpair(COLOR_WHITE, COLOR_BLACK) | A_BOLD;
    text1->setstring(attr1,   "\n   Common Controls:\n");
    text1->appendstring(attr2,"       \"N\"           - Toogle between BOINC hosts\n");
    text1->appendstring(attr2,"       \"C\"           - Edit configuration\n");
    text1->appendstring(attr2,"       \"Q\"           - Quit boinctui\n");
    text1->appendstring(attr2,"       \"F9\"          - Toogle main menu\n");
    text1->appendstring(attr2,"       \"PgUp\"/\"PgDn\" - Scroll Messages Window\n");
    text1->appendstring(attr2,"\n");
    text1->appendstring(attr1,"   Task Controls:\n");
    text1->appendstring(attr2,"       \"Up\"/\"Dn\"     - Select task\n");
    text1->appendstring(attr2,"       \"S\"           - Suspend selected running task\n");
    text1->appendstring(attr2,"       \"R\"           - Resume selected suspended task\n");
    text1->appendstring(attr2,"       \"A\"           - Abort selected task\n");
    text1->appendstring(attr2,"       \"Enter\"       - View selected task raw info\n");
    insert(text1);
}
예제 #3
0
파일: scene2.c 프로젝트: stroucki/bb
static void dvojprujezd2(int starttime, char *text1, char *text2)
{
    int pos = (getwidth(2) * strlen(text1) + 1);
    centerprint(-pos / 2 + (aa_imgwidth(context) + pos * 1.2) * STATE / (endtime - starttime), aa_imgheight(context) / 3, 2, 255, text1, 0);
    pos = (getwidth(2) * strlen(text2) + 1);
    centerprint(aa_imgwidth(context) + pos / 2 - (aa_imgwidth(context) + pos * 1.2) * STATE / (endtime - starttime), 2 * aa_imgheight(context) / 3, 2, 255, text2, 0);
}
예제 #4
0
void getwidth(struct node* root,int con[],int level)
{
    if(root)
    {
     con[level]++;
     getwidth(root->left,con,level+1);
     getwidth(root->right,con,level+1);
    }
}
예제 #5
0
파일: mainwin.cpp 프로젝트: skybon/boinctui
MainWin::MainWin(NRect rect/*, Config* cfg*/) : NGroup(rect)
{
    //читаем опции из конфига если нет то создаем
    wtaskheightpercent = 5000;
    if (gCfg != NULL)
    {
	Item* rootcfg = gCfg->getcfgptr();
	if (rootcfg != NULL)
	{
	    Item* wtask_height_percent = rootcfg->findItem("wtask_height_percent");
	    if (wtask_height_percent == NULL) //создать
	    {
		wtask_height_percent = new Item("wtask_height_percent");
		wtask_height_percent->setivalue(wtaskheightpercent);
		rootcfg->addsubitem(wtask_height_percent);
	    }
	    wtaskheightpercent = wtask_height_percent->getivalue();
	}
    }
    colname.push_back("  #  ");
    colname.push_back("state ");
    colname.push_back("   done%%");
    colname.push_back("  project             ");
    colname.push_back("  est");
    colname.push_back("  d/l");
    colname.push_back("  application                   ");
    colname.push_back("  task");
    tablheader = new NStaticText(NRect(1, rect.cols -2-(INFPANWIDTH)-1, 1, 1));
    tablheader->setstring(getcolorpair(COLOR_CYAN,COLOR_BLACK) | A_BOLD,"  #  state    done%%  project               est d/l   task");
    int wtaskheight = getheight() * wtaskheightpercent / 10000.0;
    if (wtaskheight < 5)
	wtaskheight = 5;
    if (wtaskheight > getheight() - 10)
	wtaskheight = getheight() - 10;
    wtask = new TaskWin(NRect(wtaskheight/*getheight()/2*/, getwidth()-2-(INFPANWIDTH)-1, 2, 1)); //создаем окно процессов внутри wmain
    setcoltitle();
    taskscrollbar = new NScrollBar(NRect(wtask->getheight()+2,1, wtask->getbegrow()-2, getwidth()-INFPANWIDTH-2), ACS_TTEE | A_BOLD, 0, ACS_VLINE | A_BOLD); //скроллбар панели задач
    wtask->setscrollbar(taskscrollbar);
    wmsg = new MsgWin(NRect(getheight()-wtask->getheight()-4, getwidth()-2-(INFPANWIDTH+1), wtask->getheight()+3, 1)); //создаем окно евентов
    hline = new NHLine(NRect(1, getwidth()-2-(INFPANWIDTH+1), wtask->getheight()+2, 1), NULL); //горизонтальная линия
//    vline = new NVLine(NRect(wtask->getheight()+1/*getheight()-2*/, 1, 1, getwidth()-INFPANWIDTH-2), NULL); //вертикальная линия
    msgscrollbar = new NScrollBar(NRect(wmsg->getheight()+2,1, wmsg->getbegrow()-1, getwidth()-INFPANWIDTH-2/*vline->getbegcol()*/),/*ACS_RTEE*/ACS_VLINE | A_BOLD,ACS_BTEE | A_BOLD, ACS_VLINE | A_BOLD); //скроллбар панели сообщений
    wmsg->setscrollbar(msgscrollbar);
    panel1 = new InfoPanel(NRect(getheight()-2,INFPANWIDTH,1,getwidth()-INFPANWIDTH-1));
    caption = new NColorString(0,"");
    insert(tablheader);
    insert(wtask);
    insert(wmsg);
    insert(hline);
//    insert(vline);
    insert(taskscrollbar);
    insert(msgscrollbar);
    insert(panel1);
}
예제 #6
0
파일: tabs.c 프로젝트: 99years/plan9
static
int
tablewidth(Table *t, int tw, int sep)
{
	Tablecell *c;
	int i, w, tmin, tmax, d;
	int *maxw, *minw;
	int totw;

	maxw = emalloc(sizeof(int)*t->ncol);
	minw = emalloc(sizeof(int)*t->ncol);
	for(c=t->cells; c!=nil; c=c->next){
		if(dimenkind(c->wspec) != Dnone){
			d = c->minw;
			c->minw = c->maxw = max(dimwidth(c->wspec, tw), c->minw);
			c->minw = d;
		}
		if(c->colspan != 1)
			continue;
		maxw[c->col] = max(maxw[c->col], c->maxw);
		minw[c->col] = max(minw[c->col], c->minw);
	}
	totw = 0;
	fixcols(t, maxw, sep, TRUE);
	tmax = getwidth(maxw, t->ncol);
	if(tmax <= tw){
		d = 0;
		if(tw>tmax && dimenkind(t->width)!=Dnone && t->availw!=Tablemax)
			d = (tw-tmax)/t->ncol;
		for(i=0; i<t->ncol; i++){
			t->cols[i].width = maxw[i] + d;
			totw += t->cols[i].width;
		}
	}else{
		fixcols(t, minw, sep, FALSE);
		tmin = getwidth(minw, t->ncol);
		w = tw - tmin;
		d = tmax - tmin;
		for(i=0; i<t->ncol; i++){
			if(w<=0 || d<=0)
				t->cols[i].width = minw[i];
			else
				t->cols[i].width = minw[i] + (maxw[i] - minw[i])*w/d;
			totw += t->cols[i].width;
		}
	}
	free(minw);
	free(maxw);

	return totw;
}
예제 #7
0
bool Rectangle2D::contains(const Rectangle2D &r)
{
    //if the specified rectangle is inside this rectangle
    if ( ( x - getwidth()/2) < ( r.x - r.getwidth()/2 ) &&
         ( x + getwidth()/2) > ( r.x + r.getwidth()/2 ) &&
         ( y - getheight()/2) > ( r.y - r.getheight()/2 ) &&
         ( y + getheight()/2) < ( r.y + r.getheight()/2 ) )
    {
        return true;
    }
    else
    {
        return false;
    }
}
예제 #8
0
파일: out.c 프로젝트: blacRose/bsfliterm
/* PROTO */
void
get_screen_size(void)
{
#if defined(__MINGW32__) || defined(__DJGPP__) || defined(PLAN9)
#ifdef __MINGW32__
	CONSOLE_SCREEN_BUFFER_INFO p;

	GetConsoleScreenBufferInfo(hOut, &p);

	screen_cols = (int) p.dwSize.X;
	screen_lines = (int) p.dwSize.Y;
#endif

#ifdef PLAN9
	screen_cols = getwidth();
	screen_lines = 25;
#endif

#ifdef __DJGPP__
	struct text_info ti;

	gettextinfo(&ti);

	screen_cols = ti.screenwidth;
	screen_lines = ti.screenheight;
#endif
#else
	struct winsize  scrsize;

	ioctl(fileno(stdin), TIOCGWINSZ, &scrsize);
	screen_cols = scrsize.ws_col;
	screen_lines = scrsize.ws_row;
#endif
}
예제 #9
0
void init(){

	int i;
	int hei,wid,col;

	C = H = W = 0;

	for(i = 0 ;i < N; i++){
		if(seq[i]){
			Color[C++] = -1;
			Width[W++] = -1;
			Height[H++] = -1;
		}else{
			col = getcolor();
			wid = getwidth();
			hei = getheight();
			colcount[col] += (hei*2) + (wid*4) -3;
		}
	}

	i = -1;
	S = 0;
	while(++i < MCOL && colcount[i]) S += colcount[i];

	K = i;

}
예제 #10
0
int		getprecision(const char **str)
{
	int	rslt;
	(*str)++;
	rslt = getwidth(str);
	return (rslt);
}
예제 #11
0
void MessageDialog::on_dialog_init()
{
	Gobang::set_font(font_family_.c_str(), font_size_, false, false, dialog_image_);
	putimage_withalpha(dialog_image_, dialog_icon_,
										 icon_margin_,
										 (height_ - button_area_height_ - getheight(dialog_icon_)) / 2);

	setcolor(BLACK, dialog_image_);
	static UINT text_format = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_WORDBREAK | DT_WORD_ELLIPSIS;
	text_rect_.left = icon_margin_ + getwidth(dialog_icon_) + text_margin_;
	text_rect_.top = text_margin_;
	text_rect_.right = width_ - text_margin_;
	text_rect_.bottom = height_ - button_area_height_ - text_margin_;
	//rectangle(text_rect_.left, text_rect_.top, text_rect_.right, text_rect_.bottom, dialog_image_);
	//计算文本高度
	int text_height = DrawText(dialog_dc_, text_.c_str(), -1, &text_rect_, text_format | DT_CALCRECT);
	text_rect_.top = (height_ - button_area_height_ - text_height) / 2;
	text_rect_.bottom = height_ - button_area_height_ - text_margin_;
	DrawText(dialog_dc_, text_.c_str(), -1, &text_rect_, text_format);

	setfillcolor(EGERGB(230, 230, 230), dialog_image_);
	bar(0, height_ - button_area_height_, width_, height_, dialog_image_);

	ok_listener_ = OkButtonListener(dialog_handle_);
	ok_button_->set_on_click_listener(&ok_listener_);

}
예제 #12
0
int main()
{
	initgraph(640, 480);

	//设置视口矩形区域为(200,100) - (330, 130)
	//最后一个参数为1表示出了这个区域的图形会被裁剪
	//后面所绘画的图形的原点坐标(0,0),会映射到(200,100)
	setviewport(200, 100, 330, 130, 1);

	//画一些文字,注意文字会因区域被裁剪的效果
	setcolor(EGERGB(0x0, 0xFF, 0x0));
	setfontbkcolor(RGB(0x80, 0x00, 0x80));
	setfont(18, 0, "宋体");
	outtextxy(0, 0, "Hello EGE Graphics");

	setbkmode(TRANSPARENT);
	outtextxy(0, 20, "Hello EGE Graphics");

	//还原视口
	setviewport(0, 0, getwidth(), getheight(), 1);
	outtextxy(0, 0, "Hello EGE Graphics");

	getch();

	closegraph();
	return 0;
}
예제 #13
0
int main()
{
	Bitree T=NULL;
	Bitree AVL=NULL;
	int taller;
	int BST_height=0;
	int AVL_height=0;
	int BST_width=0;
	int AVL_width=0;
	srand(time(0));
	printf("please input treenode number:\n");
    int n,i;
	scanf("%d",&n);
	for(i=0;i<=n;i++)
	{
		insertBST(&T,rand()%1000);
	}
	for(i=0;i<=n;i++){
		insertAVL(&AVL,rand()%1000,&taller);
	}
	printf("average binary tree:\n");
	midordertraverse(AVL);
	printf("\n");
	printf("preordertraverse,root->lchild->rchild.:\n");
	preordertraverse(T);
	printf("\n");
	printf("midordertraverse,lchild->root->rchild.:\n");
	midordertraverse(T);
	printf("\n");
	printf("postordertraverse,visit leaves firstly.lchild->rchild.:\n");
	postordertraverse(T);
	printf("\n");
	printf("delete element of tree...\n");
	if(DeleteBST(&T,99)>0){
       midordertraverse(T);
	   printf("\n");
	}
	else 
		printf("element does not in this tree\n");
	BST_height=getHeight(T);
	AVL_height=getHeight(AVL);
	printf("BST_height:%d\nAVL_height:%d\n",BST_height,AVL_height);
	BST_width=getwidth(T);
	AVL_width=getwidth(AVL);
	printf("BST_height:%d\nAVL_height:%d\n",BST_width,AVL_width);

}
예제 #14
0
void init() {
    int g = TRUECOLORSIZE, m = (g_height<<16) | g_width;
    //initgraph(&g, &m, "碧波荡漾");
    //setinitmode(3);
    initgraph(640, 480);
    g_width  = getwidth();
    g_height = getheight();
}
예제 #15
0
void clearx(int y, int offset) {
	int start = 0, end = getwidth();
	if(offset < 0) {
		// from 0 to WIDTH-ABS(OFFSET)
		start = 0;
		end = getwidth() + offset;
	} else if(offset > 0) {
		// from OFFSET to WIDTH
		start = offset;
		end = getwidth();
	}

	for(int x = start; x <= end; x++) {
		gotoxy(x, y);
		printf(" ");
	}
}
예제 #16
0
// 主函数
int main( int argc, char* argv[] ) {
    int i, ms_x = -1024, ms_y = -1024, exitflag = 0;
    int fps = 60;
    double dtime;

    int mode = preinit( argc, argv ); // 记录初始化模式
    if ( mode < 0 ) return 0;

    randomize(); // 初始化随机种子
    initgraph( -1, -1 ); // 打开图形窗口,以全屏模式

    showmouse( mode );
    sc_width = getwidth();
    sc_heigh = getheight();

    // 初始化所有星星
    for ( i = 0; i < g_max; i++ ) {
        InitStar( i );
        star[i].x = randomf();
    }
    // 绘制星空,按任意键或移动鼠标退出
    setfont( 12, 6, "宋体" );
    setrendermode( RENDER_MANUAL );
    dtime = fclock();
    while ( kbmsg() ) getkey();

    for ( ; !exitflag && is_run() && kbmsg() == 0; delay_fps( fps ) ) { //每秒画120帧,kbhit(1)是获取键盘任意键的消息,详见pdf
        // 如果有鼠标消息
        while ( mousemsg() ) {
            mouse_msg msg = getmouse();
            if ( ms_x <= -1024 ) {
                ms_x = msg.x;
                ms_y = msg.y;
            }
            // 处理鼠标,移动超出范围就退出
            if ( mode == 0 ) { // 仅全屏模式才处理鼠标
                int x = msg.x, y = msg.y;
                x -= ms_x;
                y -= ms_y;
                if ( x * x + y * y > 400 ) exitflag = 1;
            }
        }
        // 显示星星
        double dt = 1.0 / fps; //fclock() - dtime;
        dtime += dt;
        for ( int i = 0; i < g_max; i++ ) {
            MoveStar( i, dt );
        }
        // 显示FPS
        {
            char str[60];
            sprintf( str, "%8.2f FPS", getfps());
            outtextxy( 0, 0, str ); //显示fps
        }
    }
    closegraph(); // 关闭图形窗口
    return 0;
}
예제 #17
0
파일: mainwin.cpp 프로젝트: skybon/boinctui
void MainWin::resize(int rows, int cols)
{
    NGroup::resize(rows, cols);
    tablheader->resize(1, getwidth()-2-(INFPANWIDTH)-1);

    int wtaskheight = getheight() * wtaskheightpercent / 10000.0;
    if (wtaskheight < 5)
	wtaskheight = 5;
    if (wtaskheight > getheight() - 10)
	wtaskheight = getheight() - 10;
    wtask->resize(wtaskheight/*getheight()/2*/, getwidth()-2-(INFPANWIDTH)-1); //размер окна задач

    wmsg->resize(getheight()-wtask->getheight()-4, getwidth()-2-(INFPANWIDTH+1));
    wmsg->move(wtask->getheight()+3, 1);
    hline->resize(1, getwidth()-2-(INFPANWIDTH+1)); //горизонтальная линия
    hline->move(wtask->getheight()+2, 1);
//    vline->resize(wtask->getheight()+1/*getheight()-2*/, 1);
//    vline->move(1 , getwidth()-INFPANWIDTH-2);
    msgscrollbar->resize(wmsg->getheight()+2,1);
    msgscrollbar->move(wmsg->getbegrow()-1, getwidth()-INFPANWIDTH-2/*vline->getbegcol()*/);
    taskscrollbar->resize(wtask->getheight()+2,1);
    taskscrollbar->move(wtask->getbegrow()-2, getwidth()-INFPANWIDTH-2);
    panel1->resize(getheight()-2,INFPANWIDTH);
    panel1->move(1,getwidth()-INFPANWIDTH-1);
}
예제 #18
0
파일: mainwin.cpp 프로젝트: skybon/boinctui
void MainWin::eventhandle(NEvent* ev) 	//обработчик событий
{
    NGroup::eventhandle(ev); //предок

    if ( ev->done )
	return;
    if (ev->type == NEvent::evKB) //клавиатурные
    {
        switch(ev->keycode)
	{
	    case '-': //меняем размер окна логов
	    case '+': //меняем размер окна логов
	    {
		int wtaskheight = getheight() * wtaskheightpercent / 10000.0; //высота в строках
		//игнорировать событие если дошли до ограничителей
		if ((ev->keycode == '+')&&(wtaskheight < 5))
		    break;
		if ((ev->keycode == '-')&&(wtaskheight > getheight() -10))
		    break;
		//расчитать новый процентный размер окна
		int delta = 10000.0/getheight();
		if (ev->keycode == '+')
		    delta*=-1;
		wtaskheightpercent+=delta;
		if (wtaskheightpercent > 10000)
		    wtaskheightpercent = 10000;
		wtaskheightpercent-=10;
		if (wtaskheightpercent < 0)
		    wtaskheightpercent = 0;
		//сохранить новое значение в конфиге
		saveopttoconfig();
		//ресайз и перерисовка
		resize(getheight(),getwidth());
		refresh();
		break;
	    }
	}
    }
    if (ev->type == NEvent::evPROG) //прграммные
    {
	switch(ev->cmdcode)
	{
	    case evCOLVIEWCH: //изменился набор колонок
	    {
		setcoltitle();
		tablheader->refresh();
		wtask->refresh();
	    }
	} //switch
    }
    //событие таймера
    if (ev->type == NEvent::evTIMER) //таймер
    {
	updatecaption();
    }
}
예제 #19
0
NMessageBox::NMessageBox(const char* text) : NGroup(NRect(3, 40, 1, 1))
{
    //расчитать сколько строк нужно для отображения контента
    int contentheight = 0;
    int bsize = strlen(text); //количество байт
    int result = 0; //подсчитанное кол-во символов
    int nbytes = 0; //просмотренное кол-во байтов
    int nlines = 0; //количество экранных строк
    int col = getwidth() - 4;
    const char* p = text;
    do
    {
	col++;
	if ((col >= getwidth() - 4)||(*p == '\n'))
	{
	    if (*p == '\n')
		col = 0;
	    else
		col = 1;
	    contentheight++; //след строка
	}
	int symlen = mblen(p,bsize-nbytes);
	nbytes = nbytes + symlen;
	result++;
	p = p + symlen; //адрес начала след символа
    }
    while ( (*p != 0)&&(nbytes < bsize) ); //дошли до конца
    //заполняем содержимое
    content = new NStaticText(NRect(contentheight, getwidth()-4, 2, 2));
    content->setbgcolor(getcolorpair(COLOR_WHITE, COLOR_BLACK));
    insert(content);
    content->appendstring(getcolorpair(COLOR_WHITE, COLOR_BLACK) | A_BOLD, text);
    modalflag = true;
    resize(contentheight + 6,getwidth());
    wattrset(win,getcolorpair(COLOR_WHITE, COLOR_BLACK) | A_BOLD);
    if(asciilinedraw == 1)
	wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
    else
	box(win,0,0);
    //content->setalign(1);
    move(getmaxy(stdscr)/2-getheight()/2,getmaxx(stdscr)/2-getwidth()/2); //центрируем

}
예제 #20
0
int maxwidth(struct node *root)
{
    if(root)
    {
        int h=hight(root);
        int *con=(int *)calloc(sizeof(int),h);
        int level=0;
        getwidth(root,con,level);
      return ma(con,h);
    }
}
예제 #21
0
FloatImage *FloatImage::normalize()
{
  int count = getwidth() * getheight();

  FloatImage *newimage = new FloatImage(getwidth(), getheight());

  /* find minimum and maximum values */

  float min,max;
  get_extrema (min, max);
  if (max == min)
    min = max - 1;

  float scale = 255 * (max - min);
  float trans = -min;

  for (int i = 0; i < count; i++)
    newimage->pixel(i) = (pixel(i) - min) / (max - min);

  return (newimage);
}
예제 #22
0
AddProjectForm::AddProjectForm(int rows, int cols,  Srv* srv, const char* projname, bool userexist) : NForm(rows,cols)
{
    this->srv = srv;
    settitle(projname);
    this->projname = projname;
    this->userexist = userexist;
    Item* project = NULL;
    if (srv !=NULL)
	project = srv->findprojectbynamefromall(projname);
    int row = 1;
    //поля
    genfields(row,project);
    //пересчитываем высоту формы, чтобы влезли все поля и центрируем
    resize(row + 2,getwidth());
    move(getmaxy(stdscr)/2-getheight()/2,getmaxx(stdscr)/2-getwidth()/2);

    set_form_fields(frm, fields);
    set_current_field(frm, fields[0]); //фокус на поле

    post_form(frm);
    this->refresh();
}
예제 #23
0
파일: hud.cpp 프로젝트: DannyArends/Other
void hud::render(void){
  glMatrixMode(GL_PROJECTION);							// Select The Projection Matrix
	glLoadIdentity();										      // Reset The Projection Matrix
	glOrtho(0.0f,(GLfloat)getwidth(),(GLfloat)getheight(),0.0f,-1.0f,1.0f);
	glMatrixMode(GL_MODELVIEW);								// Select The Modelview Matrix
	glLoadIdentity();										      // Reset The Modelview Matrix
  for(uint c=0;c<this->getchildren().size();c++){
    widget* w = this->getchildren()[c];
    w->render();
  }
  printinputline();
  glFlush();
}
예제 #24
0
QuestionDialog::QuestionDialog(int width, int height, QuestionDialog::IconType type) : Dialog(width, height),
yes_button_listener_(NULL, NULL, response_none), no_button_listener_(NULL, NULL, response_none)
{
	if (!icon_question_)
	{
		icon_question_ = newimage();
		getimage_mem(icon_question_, binary_dialog_icon_question_png, sizeof(binary_dialog_icon_question_png));
	}
	if (!icon_warning_)
	{
		icon_warning_ = newimage();
		getimage_mem(icon_warning_, binary_dialog_icon_warning_png, sizeof(binary_dialog_icon_warning_png));
	}
	switch (type)
	{
		case QuestionDialog::icon_question:
			dialog_icon_ = icon_question_;
			break;
		case QuestionDialog::icon_warning:
			dialog_icon_ = icon_warning_;
			break;
	}

	if (!yes_button_)
	{
		yes_button_ = new Button(button_width_, button_height_);
		yes_button_->set_text("确定");
		static PIMAGE icon_ok = newimage();
		getimage_mem(icon_ok, binary_dialog_button_ok_png, sizeof(binary_dialog_button_ok_png));
		yes_button_->set_icon(icon_ok);
	}
	if (!no_button_)
	{
		no_button_ = new Button(button_width_, button_height_);
		no_button_->set_text("取消");
		static PIMAGE icon_cancel = newimage();
		getimage_mem(icon_cancel, binary_dialog_button_cancel_png, sizeof(binary_dialog_button_cancel_png));
		no_button_->set_icon(icon_cancel);
	}

	no_button_->set_position(width_ - button_margin_ - button_width_, height_ - button_margin_ - button_height_);
	yes_button_->set_position(width_ - button_margin_ * 2 - button_width_ * 2, height_ - button_margin_ - button_height_);

	text_rect_.left = icon_margin_ + getwidth(dialog_icon_) + text_margin_;
	text_rect_.top = text_margin_;
	text_rect_.right = width - text_margin_;
	text_rect_.bottom = height_ - button_area_height_ - text_margin_;
	text_ = "A question message.";
}
예제 #25
0
파일: mc.c 프로젝트: mkhl/plan9port
void
threadmain(int argc, char *argv[])
{
	int i;
	int lineset;
	int ifd;

	lineset = 0;
	Binit(&bout, 1, OWRITE);
	while(argc > 1 && argv[1][0] == '-'){
		--argc; argv++;
		switch(argv[0][1]){
		case '\0':
			colonflag = 1;
			break;
		case 't':
			tabflag = 0;
			break;
		default:
			linewidth = atoi(&argv[0][1]);
			if(linewidth <= 1)
				linewidth = WIDTH;
			lineset = 1;
			break;
		}
	}
	if(lineset == 0)
		getwidth();
	cbuf = cbufp = malloc(ALLOC_QUANTA*(sizeof *cbuf));
	word = malloc(WORD_ALLOC_QUANTA*(sizeof *word));
	if(word == 0 || cbuf == 0)
		error("out of memory");
	if(argc == 1)
		readbuf(0);
	else{
		for(i = 1; i < argc; i++){
			if((ifd = open(*++argv, OREAD)) == -1)
				fprint(2, "mc: can't open %s (%r)\n", *argv);
			else{
				readbuf(ifd);
				Bflush(&bin);
				close(ifd);
			}
		}
	}
	columnate();
	Bflush(&bout);
	threadexitsall(0);
}
예제 #26
0
void
_xgetwidth(void)
{
	eucwidth_t	_eucwidth;

	*_cswidth = 1; /* set to 1 when called */
	getwidth(&_eucwidth);

	if (_eucwidth._eucw1 <= 4)
		_cswidth[1] = _eucwidth._eucw1;
	if (_eucwidth._eucw2 <= 4)
		_cswidth[2] = _eucwidth._eucw2;
	if (_eucwidth._eucw3 <= 4)
		_cswidth[3] = _eucwidth._eucw3;
}
예제 #27
0
int main(int argc, char *argv[]){

	int xcoord;
	int ycoord; 
	xcoord= atoi(argv[3]);
	ycoord= atoi(argv[4]);
    ip= fopen(argv[1], "rb");
      if(!ip){ goto error;
      }
	op= fopen(argv[2], "wb");
      if(!op){ goto error;
      }
    pinsimp= (simple*) malloc(sizeof(simple));
   	poutsimp= (simple*) malloc(sizeof(simple));

	pinsimp->w=getwidth(ip);
	pinsimp->h=getheight(ip);	
	poutsimp->w = atoi(argv[5]);
	poutsimp->h = atoi(argv[6]);	
	if(xcoord+poutsimp->w>pinsimp->w||ycoord+poutsimp->h>pinsimp->h){
		goto error; }
	pinsimp= (simple*) realloc( pinsimp, sizeof(simple) * sizeof(unsigned char) * pinsimp->w * pinsimp->h);
	poutsimp= (simple*) realloc(poutsimp, sizeof(simple) * sizeof(unsigned char) * poutsimp->w * poutsimp->w);

	pinsimp->matrix= (pixel**) malloc(pinsimp->w*sizeof(pixel*));
		for(i=0; i<pinsimp->w; i++){
			pinsimp->matrix[i]= (pixel*) malloc(pinsimp->h * sizeof(pixel));
			}
	poutsimp->matrix= (pixel**) malloc(poutsimp->w*sizeof(pixel*));
		for(i=0; i<poutsimp->w; i++){
			poutsimp->matrix[i]= (pixel*) malloc(poutsimp->h * sizeof(pixel));
			}	
		
	converttopixels(ip);	
	
		for(j=0;j<poutsimp->h;j++){
			for(i=0;i<poutsimp->w;i++){
				poutsimp->matrix[i][j]=pinsimp->matrix[i+xcoord][j+ycoord];
			}
		}
	convertfromoutsimp(poutsimp);
	free(pinsimp);
	free(poutsimp);
		
		
	return 0; 
		error: printf("there was a problem opening the file or with the dimensions used as arguments, the process was not completed as intended! :(");
}
예제 #28
0
파일: label.c 프로젝트: DaviWei/uGFX
static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) {
	coord_t				w, h;
	(void)				param;

	w = (gw->g.flags & GLABEL_FLG_WAUTO) ? getwidth(gw->text, gw->g.font, gdispGetWidth() - gw->g.x) : gw->g.width;
	h = (gw->g.flags & GLABEL_FLG_HAUTO) ? getheight(gw->text, gw->g.font, gdispGetWidth() - gw->g.x) : gw->g.height;

	if (gw->g.width != w || gw->g.height != h) {
		gwinResize(&gw->g, w, h);
		return;
	}

	gdispFillStringBox(gw->g.x, gw->g.y, gw->g.width, gw->g.height, gw->text, gw->g.font,
			(gw->g.flags & GWIN_FLG_ENABLED) ? gw->pstyle->enabled.text : gw->pstyle->disabled.text, gw->pstyle->background,
			justifyLeft);
}
예제 #29
0
void FloatImage::get_extrema(float& min, float& max)
{
  int count = getwidth() * getheight();

  /* find minimum and maximum values */

  min = pixel(0);
  max = pixel(0);

  for (int i = 0; i < count; i++) {
    if (pixel(i) < min)
      min = pixel(i);
    if (pixel(i) > max)
      max = pixel(i);
  }
}
예제 #30
0
파일: editor.c 프로젝트: cyy0523xc/r-source
static void editorprint(control m)
{
    printer lpr;
    font f;
    textbox t = getdata(m);
    const char *contents = gettext(t);
    char msg[LF_FACESIZE + 128];
    char *linebuf = NULL;
    int cc, rr, fh, page, linep, i, j, istartline;
    int top, left;

    if (!(lpr = newprinter(0.0, 0.0, ""))) return;
    f = gnewfont(lpr, strcmp(fontname, "FixedFont") ? fontname : "Courier New",
		 fontsty, pointsize, 0.0, 1);
    top = devicepixelsy(lpr) / 5;
    left = devicepixelsx(lpr) / 5;
    fh = fontheight(f);
    rr = getheight(lpr) - top;
    cc = getwidth(lpr) - 2*left;

    linep = rr; /* line in printer page */
    page = 1;
    i = 0;
    while (i < strlen(contents)) {
	if ( linep + fh >= rr ) { /* new page */
	    if (page > 1) nextpage(lpr);
	    snprintf(msg, LF_FACESIZE + 128, "Page %d", page++);
	    gdrawstr(lpr, f, Black, pt(cc - gstrwidth(lpr, f, msg) - 1, top),
		     msg);
	    linep = top + 2*fh;
	}
	j = 0;
	istartline = i;
	while (contents[i] != '\n' && contents[i] != '\0') {
	    ++i; ++j;
	}
	linebuf = realloc(linebuf, (j+1)*sizeof(char));
	strncpy(linebuf, &contents[istartline], j);
	linebuf[j] = '\0';
	gdrawstr(lpr, f, Black, pt(left, linep), linebuf);
	linep += fh;
	++i;
    }
    free(linebuf);
    if (f != FixedFont) del(f);
    del(lpr);
}