ACONTROLP accb( AWINDOWP win, int x, int y, int w, int h, char * textv, byte checked ){ //-- Validate Minimum Size if (h<agdp()*16) h=agdp()*16; if (w<agdp()*16) w=agdp()*16; //-- Limit Title Length char title[128]; snprintf(title,128,"%s",textv); //-- Initializing Button Data ACCBDP d = (ACCBDP) malloc(sizeof(ACCBD)); memset(d,0,sizeof(ACCBD)); //-- Save Touch Message & Set Stats d->checked = checked; d->focused = 0; d->pushed = 0; //-- Initializing Canvas ag_canvas(&d->control,w,h); //-- Draw Control Background ag_draw_ex(&d->control,&win->c,0,0,x,y,w,h); //-- Calculate Position & Size int minpad = 5*agdp(); d->chkS = (agdp()*10); int txtW = w - ((d->chkS+6)+(agdp()*4)); int txtX = (d->chkS+(agdp()*4)); int txtH = ag_txtheight(txtW,title,0); int txtY = ((h-txtH) / 2); if (txtY<1) txtY = 1; ag_textf(&d->control,txtW,minpad+txtX,txtY,title,acfg()->textbg,0); ag_text(&d->control,txtW,minpad+txtX-1,txtY-1,title,acfg()->textfg,0); //-- Initializing Control ACONTROLP ctl = malloc(sizeof(ACONTROL)); ctl->ondestroy= &accb_ondestroy; ctl->oninput = &accb_oninput; ctl->ondraw = &accb_ondraw; ctl->onblur = &accb_onblur; ctl->onfocus = &accb_onfocus; ctl->win = win; ctl->x = x; ctl->y = y; ctl->w = w; ctl->h = h; ctl->forceNS = 0; ctl->d = (void *) d; aw_add(win,ctl); return ctl; }
void aclabel_ondraw(void * x){ ACONTROLP ctl= (ACONTROLP) x; ACLABELDP d = (ACLABELDP) ctl->d; CANVAS * pc = &ctl->win->c; if (!d->drawed){ ag_draw_ex(&d->control,ctl->win->bg,0,0,ctl->x,ctl->y,ctl->w,ctl->h); int h = 0; int y = 0; int x = 0; if (d->vpos!=0){ if (d->sigleAligment==0) h=ag_txtheight(ctl->w,d->text,d->isbig); else{ h = ag_fontheight(d->isbig); int w = ag_txtwidth(d->text,d->isbig); if (d->sigleAligment==2){ //-- Center x = (ctl->w/2) - (w/2); } else if (d->sigleAligment==3){ //-- Right x = ctl->w - w; } } } if (d->vpos==1){ y = (ctl->h / 2) - (h / 2); } else if(d->vpos==2){ y = ctl->h - h; } if (d->sigleAligment==0) ag_text(&d->control,ctl->w,x,y,d->text,d->cl,d->isbig); else ag_texts(&d->control,ctl->w,x,y,d->text,d->cl,d->isbig); d->drawed=1; } ag_draw(pc, &d->control, ctl->x, ctl->y); }
void aw_textdialog(AWINDOWP parent,char * title,char * text,char * ok_text){ CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); int elmP = agdp()*4; int winP = agdp()*4; int winW = agw() - (winP*2); int winH = (agh() / 2) + (winP*4); int winX = winP; int winY = (agh() / 2) - (winH/2); int titW = ag_txtwidth(title,1); int capH = ag_fontheight(1) + (elmP*2); int btnH = agdp()*20; int txtH = winH - (btnH + capH + (elmP*3)); int txtY = winY + capH + elmP; int btnY = txtY + txtH + elmP; int btnW = (winW/2) - elmP; int btnX = winX + ((winW/2) - (btnW/2)); int txtX = winX + elmP; int txtW = winW - (elmP*2); CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.border,acfg_var.border_g,acfg_var.roundsz*agdp()); ag_roundgrad(&alertbg,winX+1,winY+1,winW-2,winH-2,acfg_var.winbg,acfg_var.winbg_g,(acfg_var.roundsz*agdp())-1); ag_roundgrad_ex(&alertbg,winX+1,winY+1,winW-2,capH-1,acfg_var.titlebg,acfg_var.titlebg_g,(acfg_var.roundsz*agdp())-1,1,1,0,0); ag_textf(&alertbg,titW,((agw()/2)-(titW/2))+1,winY+elmP+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,(agw()/2)-(titW/2),winY+elmP,title,acfg_var.titlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
void accheck_redrawitem(ACONTROLP ctl, int index){ ACCHECKDP d = (ACCHECKDP) ctl->d; if (d->acheck_signature != 133) return; //-- Not Valid Signature if ((index>=d->itemn)||(index<0)) return; //-- Not Valid Index ACCHECKIP p = d->items[index]; CANVAS * c = &d->client; //-- Cleanup Background ag_rect(c,0,p->y,d->clientWidth,p->h,acfg()->textbg); if (p->isTitle){ ag_roundgrad(c,0,p->y,d->clientWidth,p->h,acfg()->titlebg,acfg()->titlebg_g,0); ag_textf(c,d->clientTextW+(agdp()*14),(d->clientTextX-(agdp()*14))+1,p->y+p->ty,p->title,acfg()->titlebg_g,0); ag_text(c,d->clientTextW+(agdp()*14),d->clientTextX-(agdp()*14),p->y+p->ty-1,p->title,acfg()->titlefg,0); } else{ color txtcolor = acfg()->textfg; color graycolor= acfg()->textfg_gray; byte isselectcolor=0; if (index==d->touchedItem){ if (!atheme_draw("img.selection.push", c,0,p->y+agdp(),d->clientWidth,p->h-(agdp()*2))){ color pshad = ag_calpushad(acfg()->selectbg_g); dword hl1 = ag_calcpushlight(acfg()->selectbg,pshad); ag_roundgrad(c,0,p->y+agdp(),d->clientWidth,p->h-(agdp()*2),acfg()->selectbg,pshad,(agdp()*acfg()->roundsz)); ag_roundgrad(c,0,p->y+agdp(),d->clientWidth,(p->h-(agdp()*2))/2,LOWORD(hl1),HIWORD(hl1),(agdp()*acfg()->roundsz)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor=1; } else if ((index==d->focusedItem)&&(d->focused)){ if (!atheme_draw("img.selection", c,0,p->y+agdp(),d->clientWidth,p->h-(agdp()*2))){ dword hl1 = ag_calchighlight(acfg()->selectbg,acfg()->selectbg_g); ag_roundgrad(c,0,p->y+agdp(),d->clientWidth,p->h-(agdp()*2),acfg()->selectbg,acfg()->selectbg_g,(agdp()*acfg()->roundsz)); ag_roundgrad(c,0,p->y+agdp(),d->clientWidth,(p->h-(agdp()*2))/2,LOWORD(hl1),HIWORD(hl1),(agdp()*acfg()->roundsz)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor=1; } if (index<d->itemn-1){ //-- Not Last... Add Separator color sepcl = ag_calculatealpha(acfg()->textbg,acfg()->textfg_gray,80); ag_rect(c,0,p->y+p->h-1,d->clientWidth,1,sepcl); } //-- Now Draw The Text if (isselectcolor){ ag_textf(c,d->clientTextW,d->clientTextX,p->y+p->ty,p->title,acfg()->selectbg_g,0); ag_textf(c,d->clientTextW,d->clientTextX,p->y+p->dy,p->desc,acfg()->selectbg_g,0); } ag_text(c,d->clientTextW,d->clientTextX-1,p->y+p->ty-1,p->title,txtcolor,0); ag_text(c,d->clientTextW,d->clientTextX-1,p->y+p->dy-1,p->desc,graycolor,0); //-- Now Draw The Checkbox int halfdp = ceil(((float) agdp())/2); int halfdp2 = halfdp*2; int chkbox_s = (agdp()*10); int chkbox_x = round((d->clientTextX/2)- ((chkbox_s+2)/2)); int chkbox_y = p->y + round((p->h/2) - (chkbox_s/2)); byte drawed = 0; int minpad = 3*agdp(); int addpad = 6*agdp(); if (p->checked){ if (index==d->touchedItem) drawed=atheme_draw("img.checkbox.on.push", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else if ((index==d->focusedItem)&&(d->focused)) drawed=atheme_draw("img.checkbox.on.focus", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else drawed=atheme_draw("img.checkbox.on", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); } else{ if (index==d->touchedItem) drawed=atheme_draw("img.checkbox.push", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else if ((index==d->focusedItem)&&(d->focused)) drawed=atheme_draw("img.checkbox.focus", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else drawed=atheme_draw("img.checkbox", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); } if (!drawed){ ag_roundgrad(c, chkbox_x, chkbox_y, chkbox_s, chkbox_s, acfg()->controlbg_g, acfg()->controlbg, 0); ag_roundgrad(c, chkbox_x+halfdp, chkbox_y+halfdp, chkbox_s-halfdp2, chkbox_s-halfdp2, acfg()->textbg, acfg()->textbg, 0); if (p->checked){ ag_roundgrad(c, chkbox_x+halfdp2, chkbox_y+halfdp2, chkbox_s-(halfdp2*2), chkbox_s-(halfdp2*2), acfg()->selectbg, acfg()->selectbg_g, 0); } } } }
void acopt_redrawitem(ACONTROLP ctl, int index) { ACOPTDP d = (ACOPTDP) ctl->d; if (d->acheck_signature != 136) { return; //-- Not Valid Signature } if ((index >= d->itemn) || (index < 0)) { return; //-- Not Valid Index } ACOPTIP p = d->items[index]; CANVAS * c = &d->client; //-- Cleanup Background ag_rect(c, 0, p->y, d->clientWidth, p->h, acfg()->textbg); if (p->isTitle) { ag_roundgrad(c, 0, p->y, d->clientWidth, p->h, acfg()->controlbg, acfg()->controlbg_g, 0); ag_rect(c, 0, p->y + p->h - 1, d->clientWidth, 1, acfg()->border); ag_rect(c, 0, p->y + p->h - 2, d->clientWidth, 1, acfg()->controlbg); char ntitle[256]; snprintf(ntitle, 256, "<b>%s</b>", p->title); ag_textf(c, d->clientTextW + (agdp() * 14), (d->clientTextX - (agdp() * 14)) + 1, p->y + p->ty, ntitle, acfg()->controlbg, 0); ag_text(c, d->clientTextW + (agdp() * 14), d->clientTextX - (agdp() * 14), p->y + p->ty - 1, ntitle, acfg()->controlfg, 0); } else { color txtcolor = acfg()->textfg; color graycolor = acfg()->textfg_gray; byte isselectcolor = 0; if (index == d->touchedItem) { if (!atheme_draw("img.selection.push", c, 0, p->y + agdp(), d->clientWidth, p->h - (agdp() * 2))) { color pshad = ag_calpushad(acfg()->selectbg_g); dword hl1 = ag_calcpushlight(acfg()->selectbg, pshad); ag_roundgrad(c, 0, p->y + agdp(), d->clientWidth, p->h - (agdp() * 2), acfg()->selectbg, pshad, (agdp()*acfg()->roundsz)); ag_roundgrad(c, 0, p->y + agdp(), d->clientWidth, (p->h - (agdp() * 2)) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->roundsz)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor = 1; } else if ((index == d->focusedItem) && (d->focused)) { if (!atheme_draw("img.selection", c, 0, p->y + agdp(), d->clientWidth, p->h - (agdp() * 2))) { dword hl1 = ag_calchighlight(acfg()->selectbg, acfg()->selectbg_g); ag_roundgrad(c, 0, p->y + agdp(), d->clientWidth, p->h - (agdp() * 2), acfg()->selectbg, acfg()->selectbg_g, (agdp()*acfg()->roundsz)); ag_roundgrad(c, 0, p->y + agdp(), d->clientWidth, (p->h - (agdp() * 2)) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->roundsz)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor = 1; } if (index < d->itemn - 1) { //-- Not Last... Add Separator color sepcl = ag_calculatealpha(acfg()->textbg, acfg()->textfg_gray, 80); ag_rect(c, 0, p->y + p->h - 1, d->clientWidth, 1, sepcl); } //-- Now Draw The Text if (isselectcolor) { ag_textf(c, d->clientTextW, d->clientTextX, p->y + p->ty, p->title, acfg()->selectbg_g, 1); ag_textf(c, d->clientTextW, d->clientTextX, p->y + p->dy, p->desc, acfg()->selectbg_g, 0); } ag_text(c, d->clientTextW, d->clientTextX - 1, p->y + p->ty - 1, p->title, txtcolor, 1); ag_text(c, d->clientTextW, d->clientTextX - 1, p->y + p->dy - 1, p->desc, graycolor, 0); //-- Now Draw The Checkbox int halfdp = ceil(((float) agdp()) / 2); int halfdp2 = halfdp * 2; int optbox_s = (agdp() * 10); int optbox_r = floor(optbox_s / 2); int optbox_x = round((d->clientTextX / 2) - (optbox_s / 2)); int optbox_y = p->y + round((p->h / 2) - (optbox_s / 2)); byte drawed = 0; int minpad = 3 * agdp(); int addpad = 6 * agdp(); if (p->id == d->selectedIndexs[p->group]) { if (index == d->touchedItem) { drawed = atheme_draw("img.radio.on.push", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } else if ((index == d->focusedItem) && (d->focused)) { drawed = atheme_draw("img.radio.on.focus", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } else { drawed = atheme_draw("img.radio.on", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } } else { if (index == d->touchedItem) { drawed = atheme_draw("img.radio.push", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } else if ((index == d->focusedItem) && (d->focused)) { drawed = atheme_draw("img.radio.focus", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } else { drawed = atheme_draw("img.radio", c, optbox_x - minpad, optbox_y - minpad, optbox_s + addpad, optbox_s + addpad); } } if (!drawed) { ag_roundgrad(c, optbox_x, optbox_y, optbox_s, optbox_s, acfg()->controlbg_g, acfg()->controlbg, optbox_r ); ag_roundgrad(c, optbox_x + halfdp, optbox_y + halfdp, optbox_s - halfdp2, optbox_s - halfdp2, acfg()->textbg, acfg()->textbg, optbox_r - halfdp); if (p->id == d->selectedIndexs[p->group]) { ag_roundgrad(c, optbox_x + halfdp2, optbox_y + halfdp2, optbox_s - (halfdp2 * 2), optbox_s - (halfdp2 * 2), acfg()->selectbg, acfg()->selectbg_g, optbox_r - halfdp2); } } } }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; char text[512]; snprintf(title,64,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = -1; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); if (vpadB!=-1){ winH = titH + infH + btnH + (pad*2) + vpadB; } int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX-1,winY-1,winW+2,winH+2)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,vimgX,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.dialogbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.dialogfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?acfg_var.text_yes:yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?acfg_var.text_no:no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
void aw_textdialog(AWINDOWP parent,char * titlev,char * text,char * ok_text){ // actext(hWin,txtX,txtY,txtW,txtH,text,0); CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; snprintf(title,64,"%s",titlev); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = pad; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } byte imgE = 0; int imgW = 0; int imgH = 0; int txtH = agh()/2; int infH = txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*2) + vpadB; int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY; //-- Calculate Button Size & Position int btnW = winW / 2; int btnY = infY+infH+pad; int btnX = (agw()/2) - (btnW/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX,winY,winW,winH)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); ACONTROLP okbtn=acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); aw_setfocus(hWin,okbtn); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
ACONTROLP actext( AWINDOWP win, int x, int y, int w, int h, char * text, byte isbig ){ //-- Validate Minimum Size if (h<agdp()*16) h=agdp()*16; if (w<agdp()*16) w=agdp()*16; //-- Initializing Client Area int minpadding = max(acfg()->roundsz,4); int cw = w-(agdp()*(minpadding*2)); int ch = 0; if (text!=NULL) ch = ag_txtheight(cw,text,isbig)+(agdp()*(minpadding*2)); else ch = h-(agdp()*2); //-- Initializing Text Data ACTEXTDP d = (ACTEXTDP) malloc(sizeof(ACTEXTD)); memset(d,0,sizeof(ACTEXTD)); //-- Initializing Canvas ag_canvas(&d->control,w,h); ag_canvas(&d->control_focused,w,h); ag_canvas(&d->client,cw,ch); //-- Draw Control ag_draw_ex(&d->control,&win->c,0,0,x,y,w,h); ag_roundgrad(&d->control,0,0,w,h,acfg()->border,acfg()->border_g,(agdp()*acfg()->roundsz)); ag_roundgrad(&d->control,1,1,w-2,h-2,acfg()->textbg,acfg()->textbg,(agdp()*acfg()->roundsz)-1); //-- Draw Focused Control ag_draw_ex(&d->control_focused,&win->c,0,0,x,y,w,h); ag_roundgrad(&d->control_focused,0,0,w,h,acfg()->selectbg,acfg()->selectbg_g,(agdp()*acfg()->roundsz)); ag_roundgrad(&d->control_focused,agdp(),agdp(),w-(agdp()*2),h-(agdp()*2),acfg()->textbg,acfg()->textbg,(agdp()*(acfg()->roundsz-1))); //-- Draw Client ag_rect(&d->client,0,0,cw,ch,acfg()->textbg); if (text!=NULL) ag_text(&d->client,cw,0,agdp()*minpadding,text,acfg()->textfg,isbig); d->isbigtxt = isbig; d->targetY = 0; d->focused = 0; d->scrollY = 0; d->appendPos = agdp()*minpadding; d->forceGlowTop= 0; d->isFixedText = 0; if (text!=NULL) d->maxScrollY = ch-(h-(agdp()*minpadding)); else{ d->maxScrollY = 0; d->isFixedText = 1; } if (d->maxScrollY<0) d->maxScrollY=0; ACONTROLP ctl = malloc(sizeof(ACONTROL)); ctl->ondestroy= &actext_ondestroy; ctl->oninput = &actext_oninput; ctl->ondraw = &actext_ondraw; ctl->onblur = actext_onblur; ctl->onfocus = actext_onfocus; ctl->win = win; ctl->x = x; ctl->y = y; ctl->w = w; ctl->h = h; ctl->forceNS = 0; ctl->d = (void *) d; aw_add(win,ctl); return ctl; }
void actext_rebuild( ACONTROLP ctl, int x, int y, int w, int h, char * text, byte isbig, byte toBottom ){ ACTEXTDP d = (ACTEXTDP) ctl->d; int minpadding = max(acfg()->roundsz,4); //-- Cleanup ag_ccanvas(&d->control); ag_ccanvas(&d->control_focused); ag_ccanvas(&d->client); memset(d,0,sizeof(ACTEXTD)); //-- Rebuild //-- Validate Minimum Size if (h<agdp()*16) h=agdp()*16; if (w<agdp()*16) w=agdp()*16; //-- Initializing Client Area int cw = w-(agdp()*(minpadding*2)); int ch = 0; if (text!=NULL) ch = ag_txtheight(cw,text,isbig)+(agdp()*(minpadding*2)); else ch = h-(agdp()*2); //-- Initializing Canvas ag_canvas(&d->control,w,h); ag_canvas(&d->control_focused,w,h); ag_canvas(&d->client,cw,ch); //-- Draw Control ag_draw_ex(&d->control,ctl->win->bg,0,0,x,y,w,h); ag_roundgrad(&d->control,0,0,w,h,acfg()->border,acfg()->border_g,(agdp()*acfg()->roundsz)); ag_roundgrad(&d->control,1,1,w-2,h-2,acfg()->textbg,acfg()->textbg,(agdp()*acfg()->roundsz)-1); //-- Draw Focused Control ag_draw_ex(&d->control_focused,ctl->win->bg,0,0,x,y,w,h); ag_roundgrad(&d->control_focused,0,0,w,h,acfg()->selectbg,acfg()->selectbg_g,(agdp()*acfg()->roundsz)); ag_roundgrad(&d->control_focused,agdp(),agdp(),w-(agdp()*2),h-(agdp()*2),acfg()->textbg,acfg()->textbg,(agdp()*(acfg()->roundsz-1))); //-- Draw Client ag_rect(&d->client,0,0,cw,ch,acfg()->textbg); if (text!=NULL) ag_text(&d->client,cw,0,agdp()*minpadding,text,acfg()->textfg,isbig); d->isbigtxt = isbig; d->targetY = 0; d->focused = 0; d->scrollY = 0; d->appendPos = agdp()*minpadding; d->forceGlowTop= 0; d->isFixedText = 0; if (text!=NULL) d->maxScrollY = ch-(h-(agdp()*minpadding)); else{ d->maxScrollY = 0; d->isFixedText = 1; } if (d->maxScrollY<0) d->maxScrollY=0; ctl->x = x; ctl->y = y; ctl->w = w; ctl->h = h; ctl->forceNS = 0; if (toBottom){ d->scrollY = d->maxScrollY; } ctl->ondraw(ctl); aw_draw(ctl->win); }
void actext_appendtxt(ACONTROLP ctl,char * txt){ ACTEXTDP d = (ACTEXTDP) ctl->d; int ch = ag_txtheight(d->client.w,txt,d->isbigtxt); int canvas_h = d->client.h; if ((d->appendPos+ch)>=canvas_h){ int step_up = (d->appendPos+ch) - canvas_h; int y; int ynew=0; for (y=step_up; y<canvas_h; y++){ color * rowdest = agxy(&d->client,0,ynew++); color * rowsrc = agxy(&d->client,0,y); memcpy(rowdest,rowsrc,sizeof(color)*d->client.w); } d->appendPos -= step_up; } ag_rect(&d->client,0,d->appendPos,d->client.w,ch,acfg()->textbg); ag_text(&d->client, d->client.w, 0,d->appendPos, txt, acfg()->textfg, d->isbigtxt); d->appendPos+=ch; /* int minpadding = max(acfg()->roundsz,4); int ch = ag_txtheight(d->client.w,txt,d->isbigtxt); int my = d->client.h-(agdp()*2); // -(agdp()*(minpadding*2)); if ((d->appendPos+ch)>=my){ if (d->appendPos<my){ ch-=(my-d->appendPos); } int y; int ynew=0; for (y=ch;y<d->client.h;y++){ color * rowdest = agxy(&d->client,0,ynew++); color * rowsrc = agxy(&d->client,0,y); memcpy(rowdest,rowsrc,sizeof(color)*d->client.w); } int ypos = my-ch; ag_rect(&d->client,0,ypos,d->client.w,ch,acfg()->textbg); ag_text(&d->client, d->client.w, 0,ypos, txt, acfg()->textfg, d->isbigtxt); d->forceGlowTop=1; d->appendPos=my; } else{ ag_text(&d->client, d->client.w, 0,d->appendPos, txt, acfg()->textfg, d->isbigtxt); d->appendPos+=ch; } */ ctl->ondraw(ctl); aw_draw(ctl->win); }
byte aw_calibdraw(CANVAS * c, int id,int * xpos,int * ypos,int * xtch,int * ytch){ ag_draw(agc(),c,0,0); usleep(500000); int sz = agdp()*10; if (id!=-1){ int x = xpos[id]; int y = ypos[id]; int rx = x-(sz/2); int ry = y-(sz/2); ag_roundgrad( agc(),rx,ry,sz,sz, 0xffff, ag_rgb(200,200,200), sz/2); } if (id!=-1){ char txt[128]; snprintf(txt,127,"Step %i: Tap The Circle To Calibrate",id+1); char * txt2 = "Press Back Key or Other Keys To Cancel"; int tw = ag_txtwidth(txt,0); int tw2 = ag_txtwidth(txt2,0); int tx = (agw()/2) - (tw/2); int tx2= (agw()/2) - (tw2/2); int ty = (agh()/2) + (sz*2); int ty2= (ty +ag_fontheight(0)+agdp()); ag_text(agc(),tw,tx+1,ty+1,txt,0x0000,0); ag_text(agc(),tw,tx,ty,txt,0xffff,0); ag_text(agc(),tw2,tx2+1,ty2+1,txt2,0x0000,0); ag_text(agc(),tw2,tx2,ty2,txt2,0xffff,0); } else{ char * txt = "Tap The Screen to Test Calibrated Data"; char * txt2 = "Press Back or Other Keys To Continue"; int tw = ag_txtwidth(txt,0); int tw2 = ag_txtwidth(txt2,0); int tx = (agw()/2) - (tw/2); int tx2= (agw()/2) - (tw2/2); int ty = (agh()/2) + (sz*2); int ty2= (ty +ag_fontheight(0)+agdp()); ag_text(agc(),tw,tx+1,ty+1,txt,0x0000,0); ag_text(agc(),tw,tx,ty,txt,0xffff,0); ag_text(agc(),tw2,tx2+1,ty2+1,txt2,0x0000,0); ag_text(agc(),tw2,tx2,ty2,txt2,0xffff,0); } CANVAS bg; ag_canvas(&bg,agw(),agh()); ag_draw(&bg,agc(),0,0); ag_sync(); byte res=1; byte ond=1; byte onp=0; ui_clear_key_queue(); while (ond){ ATEV atev; ui_clear_key_queue(); int action=atouch_wait_ex(&atev,1); switch (action){ case ATEV_MOUSEDN:{ onp=1; if (id==-1){ ag_draw(agc(),&bg,0,0); int vz = agdp()*40; int vx = atev.x-(vz/2); int vy = atev.y-(vz/2); ag_roundgrad(agc(),vx,vy,vz,vz,0xffff,ag_rgb(180,180,180),(vz/2)); ag_sync(); } } break; case ATEV_MOUSEMV:{ if (onp){ if (id!=-1){ xtch[id]=atev.x; ytch[id]=atev.y; } else{ ag_draw(agc(),&bg,0,0); int vz = agdp()*40; int vx = atev.x-(vz/2); int vy = atev.y-(vz/2); ag_roundgrad(agc(),vx,vy,vz,vz,0xffff,ag_rgb(180,180,180),(vz/2)); ag_sync(); } } } break; case ATEV_MOUSEUP:{ if (id!=-1){ if (onp){ if ((xtch[id]>0)&&(ytch[id]>0)){ ond=0; } onp=0; } } } break; case ATEV_SELECT: case ATEV_BACK: case ATEV_MENU:{ if (atev.d==0){ ond=0; res=0; } } break; } } ag_ccanvas(&bg); return res; }
//* //* SHOW TIPS //* void aui_showtips(AUI_VARSP v) { if (aui_is_show_tips) { aui_is_show_tips = 0; CANVAS * tmpc = aw_muteparent(v->hWin); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); CANVAS alertbg; ag_canvas(&alertbg, agw(), agh()); ag_draw(&alertbg, agc(), 0, 0); //-- Load Tips Font ag_loadbigfont("fonts/HTC Hand/HTCHand.otf", 18, AROMA_DIR "/"); PNGCANVAS ap; int imS = agdp() * 12; int bHH = v->btnH / 2; int w75 = round(agw() * 0.6); if (apng_load(&ap, "common/tips1")) { apng_stretch(&alertbg, &ap, v->pad + v->btnH, v->boxY - bHH, imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, v->pad + v->btnH + imS, v->boxY - bHH, "Here is the path of the current working directory", 0xffff, 1); if (apng_load(&ap, "common/tips2")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS), v->boxY + (v->btnH * 4.5), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS + w75), v->boxY + (v->btnH * 4.5), "<@right>Tap the checkbox to select multiple files</@>", 0xffff, 1); if (apng_load(&ap, "common/tips3")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS * 3), v->btnY - (v->pad + v->btnFH + imS), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS * 3 + w75), v->btnY - (v->pad + v->btnFH + (imS * 2)), "<@right>All functions you need is on this toolbar</@>", 0xffff, 1); //-- Revert Font aui_cfg_reloadfonts(); //-- Create Window AWINDOWP hWin = aw(&alertbg); aw_show(hWin); byte ondispatch = 1; while (ondispatch) { dword msg = aw_dispatch_ex(hWin, agh()); byte msgm = aw_gm(msg); if (msgm == 5) { ondispatch = 0; } } aw_destroy(hWin); ag_ccanvas(&alertbg); aw_set_on_dialog(0); aw_unmuteparent(v->hWin, tmpc); } }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[32]; char text[513]; snprintf(title,31,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.winbg,acfg_var.winbg_g,acfg_var.roundsz*agdp()); //-- Draw Title ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.titlebg,acfg_var.titlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.titlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,pad*2,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.textbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.textfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?"Yes":yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?"No":no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
ACONTROLP imgbtn_reinit( AWINDOWP win, ACONTROLP ctl, int x, int y, int w, int h, PNGCANVAS * img, char * text, byte isflat, byte touchmsg ) { if ((ctl != NULL) && (x == 0) && (y == 0) && (h == 0) && (w == 0)) { x = ctl->x; y = ctl->y; w = ctl->w; h = ctl->h; } int txtw = 0; int txth = 0; int txtx = 0; int txty = 0; if (w < agdp() * 20) { w = agdp() * 20; } if (h < agdp() * 20) { h = agdp() * 20; } if (text != NULL) { //-- Initializing Text Metrics if ((isflat == 3) || (isflat == 4)) { txtw = ag_txtwidth(text, 0); txth = ag_fontheight(0); if (w < ((agdp() * 22) + txtw)) { w = ((agdp() * 22) + txtw); } txtx = round(w / 2) - round(((agdp() * 20) + txtw) / 2); txty = round(h / 2) - round(txth / 2); } else { txtw = ag_txtwidth(text, 0); txth = ag_fontheight(0); if (h < ((agdp() * 20) + txth)) { h = ((agdp() * 20) + txth); } txtx = round(w / 2) - round(txtw / 2); txty = (agdp() * 16); } } int imgS = agdp() * 16; int imgX = round(w / 2) - round(imgS / 2); int imgY = 0; // agdp()*2; int contentH = (agdp() * 16) + txth; int contentY = (h / 2) - (contentH / 2); if ((isflat == 3) || (isflat == 4)) { imgY = round(h / 2) - round(imgS / 2); imgX = txtx + (agdp() * 2); txtx += agdp() * 20; } else { imgY += contentY; txty += contentY; } if (isflat == 3) { isflat = 0; } //-- Initializing Button Data IMGBTNDP d = NULL; if (ctl != NULL) { d = ctl->d; win = ctl->win; } else { d = (IMGBTNDP) malloc(sizeof(IMGBTND)); memset(d, 0, sizeof(IMGBTND)); //-- Save Touch Message & Set Stats d->focused = 0; d->pushed = 0; //-- Initializing Canvas ag_canvas(&d->control, w, h); ag_canvas(&d->control_pushed, w, h); ag_canvas(&d->control_focused, w, h); } d->touchmsg = touchmsg; //-- Draw Rest Control dword hl1 = ag_calchighlight(acfg()->controlbg, acfg()->controlbg_g); ag_draw_ex(&d->control, win->bg, 0, 0, x, y, w, h); if (!isflat) { if (!atheme_draw("img.button", &d->control, 0, 0, w, h)) { ag_roundgrad(&d->control, 0, 0, w, h, acfg()->border, acfg()->border_g, (agdp()*acfg()->btnroundsz)); ag_roundgrad(&d->control, 1, 1, w - 2, h - 2, ag_calculatealpha(acfg()->controlbg, acfg()->winbg, 180), ag_calculatealpha(acfg()->controlbg_g, acfg()->winbg, 160), (agdp()*acfg()->btnroundsz) - 1 ); ag_roundgrad(&d->control, 2, 2, w - 4, h - 4, acfg()->controlbg, acfg()->controlbg_g, (agdp()*acfg()->btnroundsz) - 2); ag_roundgrad_ex(&d->control, 2, 2, w - 4, (h - 4) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->btnroundsz) - 2, 1, 1, 0, 0); } } ag_textf(&d->control, txtw, txtx + 1, txty + 1, text, acfg()->controlbg, 0); ag_text(&d->control, txtw, txtx, txty, text, acfg()->controlfg, 0); color pshad = ag_calpushad(acfg()->selectbg_g); ag_draw_ex(&d->control_pushed, win->bg, 0, 0, x, y, w, h); int wadd = (isflat == 2) ? 2 : 0; int wdel = wadd * 2; //-- Draw Pushed Control if (!isflat) { hl1 = ag_calcpushlight(acfg()->selectbg, pshad); if (!atheme_draw("img.button.push", &d->control_pushed, 0, 0, w, h)) { ag_roundgrad(&d->control_pushed, 0, 0, w, h, acfg()->border, acfg()->border_g, (agdp()*acfg()->btnroundsz)); //ag_roundgrad(&d->control_pushed,1,1,w-2,h-2,acfg()->controlbg,acfg()->controlbg_g,(agdp()*acfg()->btnroundsz)-1); ag_roundgrad(&d->control_pushed, 1, 1, w - 2, h - 2, acfg()->selectbg, pshad, (agdp()*acfg()->btnroundsz) - 1); ag_roundgrad_ex(&d->control_pushed, 1, 1, w - 2, (h - 2) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->btnroundsz) - 1, 1, 1, 0, 0); } ag_textf(&d->control_pushed, txtw, txtx + 1, txty + 1, text, acfg()->selectbg_g, 0); ag_text(&d->control_pushed, txtw, txtx, txty, text, acfg()->selectfg, 0); } else { hl1 = ag_calchighlight(acfg()->controlbg, acfg()->controlbg_g); if (!atheme_draw("img.button", &d->control_pushed, 0, 0, w, h)) { ag_roundgrad(&d->control_pushed, wadd, wadd, w - wdel, h - wdel, acfg()->border, acfg()->border_g, (agdp()*acfg()->btnroundsz)); /*ag_roundgrad(&d->control_pushed,wadd+1,wadd+1,w-(2+wdel),h-(2+wdel), ag_calculatealpha(acfg()->controlbg,acfg()->winbg,180), ag_calculatealpha(acfg()->controlbg_g,acfg()->winbg,160), (agdp()*acfg()->btnroundsz)-1 );*/ ag_roundgrad(&d->control_pushed, wadd + 1, wadd + 1, w - (2 + wdel), h - (2 + wdel), acfg()->controlbg, acfg()->controlbg_g, (agdp()*acfg()->btnroundsz) - 1); ag_roundgrad_ex(&d->control_pushed, wadd + 1, wadd + 1, w - (2 + wdel), (h - (1 + wdel)) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->btnroundsz) - 1, 1, 1, 0, 0); } ag_textf(&d->control_pushed, txtw, txtx + 1, txty + 1, text, acfg()->controlbg, 0); ag_text(&d->control_pushed, txtw, txtx, txty, text, acfg()->controlfg, 0); } //-- Draw Focused Control hl1 = ag_calchighlight(acfg()->selectbg, acfg()->selectbg_g); ag_draw_ex(&d->control_focused, win->bg, 0, 0, x, y, w, h); if (!atheme_draw("img.button.focus", &d->control_focused, 0, 0, w, h)) { ag_roundgrad(&d->control_focused, wadd, wadd, w - wdel, h - wdel, acfg()->border, acfg()->border_g, (agdp()*acfg()->btnroundsz)); //ag_roundgrad(&d->control_focused,wadd+1,wadd+1,w-(wdel+2),h-(wdel+2),acfg()->controlbg,acfg()->controlbg_g,(agdp()*acfg()->btnroundsz)-1); ag_roundgrad(&d->control_focused, wadd + 1, wadd + 1, w - (wdel + 2), h - (wdel + 2), acfg()->selectbg, acfg()->selectbg_g, (agdp()*acfg()->btnroundsz) - 1); ag_roundgrad_ex(&d->control_focused, wadd + 1, wadd + 1, w - (wdel + 2), (h - (wdel + 2)) / 2, LOWORD(hl1), HIWORD(hl1), (agdp()*acfg()->btnroundsz) - 1, 1, 1, 0, 0); } ag_textf(&d->control_focused, txtw, txtx + 1, txty + 1, text, acfg()->selectbg_g, 0); ag_text(&d->control_focused, txtw, txtx, txty, text, acfg()->selectfg, 0); if (img != NULL) { apng_stretch(&d->control, img, imgX, imgY, imgS, imgS, 0, 0, img->w, img->h); apng_stretch(&d->control_pushed, img, imgX, imgY, imgS, imgS, 0, 0, img->w, img->h); apng_stretch(&d->control_focused, img, imgX, imgY, imgS, imgS, 0, 0, img->w, img->h); } //-- Initializing Control if (ctl == NULL) { ctl = malloc(sizeof(ACONTROL)); ctl->ondestroy = &imgbtn_ondestroy; ctl->oninput = &imgbtn_oninput; ctl->ondraw = &imgbtn_ondraw; ctl->onblur = &imgbtn_onblur; ctl->onfocus = &imgbtn_onfocus; ctl->win = win; ctl->forceNS = 0; ctl->d = (void *) d; ctl->x = x; ctl->y = y; ctl->w = w; ctl->h = h; aw_add(win, ctl); } else { ctl->x = x; ctl->y = y; ctl->w = w; ctl->h = h; imgbtn_ondraw(ctl); } return ctl; }
void afbox_redrawitem_ex(ACONTROLP ctl, int index){ AFBOXDP d = (AFBOXDP) ctl->d; if (d->acheck_signature != 177) return; //-- Not Valid Signature if ((index>=d->itemn)||(index<0)) return; //-- Not Valid Index AFBOXIP p = d->items[index]; CANVAS * c = &d->client; //-- Cleanup Background ag_rect(c,0,p->y,d->clientWidth,p->h,acfg()->textbg); if (p->isTitle){ ag_roundgrad(c,0,p->y,d->clientWidth,p->h,acfg()->titlebg,acfg()->titlebg_g,0); ag_textf(c,d->clientTextW+(agdp()*14),(d->clientTextX-(agdp()*14))+1,p->y+p->ty,p->title,acfg()->titlebg_g,0); ag_text(c,d->clientTextW+(agdp()*14),d->clientTextX-(agdp()*14),p->y+p->ty-1,p->title,acfg()->titlefg,0); } else{ color txtcolor = acfg()->textfg; color graycolor= acfg()->textfg_gray; byte isselectcolor=0; if (index==d->touchedItem){ if (!atheme_draw("img.selection.push", c,0,p->y+1,d->clientWidth,p->h-2)){ color pshad = ag_calpushad(acfg()->selectbg_g); dword hl1 = ag_calcpushlight(acfg()->selectbg,pshad); ag_roundgrad(c,0,p->y+1,d->clientWidth,p->h-3,acfg()->selectbg,pshad,(agdp()*2)); ag_roundgrad(c,0,p->y+1,d->clientWidth,(p->h-3)/2,LOWORD(hl1),HIWORD(hl1),(agdp()*2)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor=1; } else if ((index==d->focusedItem)&&(d->focused)){ if (!atheme_draw("img.selection", c,0,p->y+1,d->clientWidth,p->h-2)){ dword hl1 = ag_calchighlight(acfg()->selectbg,acfg()->selectbg_g); ag_roundgrad(c,0,p->y+1,d->clientWidth,p->h-3,acfg()->selectbg,acfg()->selectbg_g,(agdp()*2)); ag_roundgrad(c,0,p->y+1,d->clientWidth,(p->h-3)/2,LOWORD(hl1),HIWORD(hl1),(agdp()*2)); } graycolor = txtcolor = acfg()->selectfg; isselectcolor=1; } if (index<d->itemn-1){ //-- Not Last... Add Separator color sepcl = ag_calculatealpha(acfg()->textbg,acfg()->textfg_gray,80); ag_rect(c,0,p->y+p->h-1,d->clientWidth,1,sepcl); } //-- Now Draw The Checkbox int imgS = agdp()*24; if (p->img!=NULL){ apng_stretch(c,p->img,agdp(),p->y+agdp(),imgS,imgS,0,0,p->img->w,p->img->h); } int txt_h = p->th+p->dh; int tit_y = (p->h / 2) - (txt_h / 2); int des_y = tit_y+p->th; int des_add = 0; if (d->boxtype!=0){ des_add = (agdp()*16); } char permstr[64]; snprintf(permstr,64,"%s",p->d_perm); //-- Now Draw The Text if (isselectcolor){ ag_textf(c,d->clientTextW,d->clientTextX,p->y+tit_y,p->title,acfg()->selectbg_g,1); ag_textf(c,d->clientTextW+des_add,d->clientTextX,p->y+des_y,p->desc,acfg()->selectbg_g,0); ag_textf(c,d->clientTextW+des_add,d->clientTextX-1,p->y+des_y-1,p->desc,graycolor,0); ag_textf(c,d->clientTextW+des_add,d->clientTextX,p->y+des_y,permstr,acfg()->selectbg_g,0); ag_textf(c,d->clientTextW+des_add,d->clientTextX-1,p->y+des_y-1,permstr,graycolor,0); } else{ ag_text(c,d->clientTextW+des_add,d->clientTextX-1,p->y+des_y-1,p->desc,graycolor,0); ag_text(c,d->clientTextW+des_add,d->clientTextX-1,p->y+des_y-1,permstr,graycolor,0); } ag_textf(c,d->clientTextW,d->clientTextX-1,p->y+tit_y-1,p->title,txtcolor,1); // img //-- Now Draw The Checkbox int halfdp = ceil(((float) agdp())/2); int halfdp2 = halfdp*2; int chkbox_s = (agdp()*10); int chkbox_x = (d->clientTextX+d->clientTextW+(agdp()*9)) - ((chkbox_s+2)/2); int chkbox_y = p->y + round((p->h/2) - (chkbox_s/2)); byte drawed = 0; int minpad = 3*agdp(); int addpad = 6*agdp(); if (d->boxtype==0){ if (p->checked){ if (index==d->touchedItem) drawed=atheme_draw("img.checkbox.on.push", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else if ((index==d->focusedItem)&&(d->focused)) drawed=atheme_draw("img.checkbox.on.focus", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else drawed=atheme_draw("img.checkbox.on", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); } else{ if (index==d->touchedItem) drawed=atheme_draw("img.checkbox.push", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else if ((index==d->focusedItem)&&(d->focused)) drawed=atheme_draw("img.checkbox.focus", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); else drawed=atheme_draw("img.checkbox", c,chkbox_x-minpad,chkbox_y-minpad,chkbox_s+addpad,chkbox_s+addpad); } if (!drawed){ ag_roundgrad(c, chkbox_x, chkbox_y, chkbox_s, chkbox_s, acfg()->controlbg_g, acfg()->controlbg, 0); ag_roundgrad(c, chkbox_x+halfdp, chkbox_y+halfdp, chkbox_s-halfdp2, chkbox_s-halfdp2, acfg()->textbg, acfg()->textbg, 0); if (p->checked){ ag_roundgrad(c, chkbox_x+halfdp2, chkbox_y+halfdp2, chkbox_s-(halfdp2*2), chkbox_s-(halfdp2*2), acfg()->selectbg, acfg()->selectbg_g, 0); } } } } }