void gb_set_pal(int i) { grey[0]=COL32_TO_16(conf.pal[i][0]); //0xc618; // ffe6ce grey[1]=COL32_TO_16(conf.pal[i][1]); //0x8410; // bfad9a grey[2]=COL32_TO_16(conf.pal[i][2]); //0x4208; // 7f7367 grey[3]=COL32_TO_16(conf.pal[i][3]); //0x0000; // 3f3933 }
void draw_border_label(SDL_Surface *s,SDL_Surface *font,int type,SDL_Rect *r,char *label) { int lw=(font->w/(float)95)*strlen(label); int lh=font->h; int dt=(lh-2)/(float)2; SDL_Rect wrect={r->x+dt,r->y+dt,r->w-dt*2,r->h-dt*2}; SDL_Rect lrect={r->x+14,r->y,lw+2,lh}; SDL_FillRect(s,r,COL32_TO_16(0xd6d6d6)); inter_draw_border(s,type,&wrect); SDL_FillRect(s,&lrect,COL32_TO_16(0xd6d6d6)); draw_string(s,font,r->x+15,r->y,label); }
/* draw a preview of a pal */ void menu_draw_pal(MENU_ITEM *self,int menu_pos) { SDL_Rect b; int i; int pal=(int)self->user_data; b.x=100; b.y=MENUY+menu_pos*hl+3; b.w=22; b.h=7; SDL_FillRect(back,&b,COL32_TO_16(0x000000)); b.w=5; b.h=5; b.y+=1; for(i=0;i<4;i++) { b.x=101+i*5; SDL_FillRect(back,&b,COL32_TO_16(conf.pal[pal][3-i])); } }
void display_menu(MENU *m) { SDL_Rect b; int i; MENU_ITEM *item=m->item; b.x=MENUX-2; b.y=MENUY-2; b.w=wl*21+3; b.h=hl*10+3; draw_border(back,SHADOW_OUT,&b); b.x=MENUX; b.y=MENUY+hl*2-hl/2; b.w=wl*21-2; b.h=hl*8; draw_border(back,SHADOW_ETCHED_IN,&b); if (!item) return; for(i=0;i<m->begin;i++) item=item->next; draw_message(MENUX,MENUY,m->title); for(i=m->begin;i<=m->end;i++) { if (i==m->id) { b.x=MENUX+3; b.y=MENUY+(i-m->begin+2)*hl; b.w=wl*21-8; b.h=hl; SDL_FillRect(back,&b,COL32_TO_16(0xeaeaea)); if (item->draw_info && item->draw_type==DRAW_WHEN_ACTIVE) item->draw_info(item,i-m->begin+2); } if (item->type==TOGGLE) { b.x=135; b.y=MENUY+(i-m->begin+2)*hl+2; SDL_BlitSurface((item->state?toggle_on:toggle_off),NULL,back,&b); } if (item->type==RADIO) { b.x=135; b.y=MENUY+(i-m->begin+2)*hl+2; SDL_BlitSurface((item->radio==radio_group[item->group]?radio_on:radio_off),NULL,back,&b); } draw_message(MENUX+wl,MENUY+(i-m->begin+2)*hl,item->name); if (item->draw_info && item->draw_type==DRAW_ALWAYS) item->draw_info(item,i-m->begin+2); item=item->next; } if (m->end!=m->size-1) { b.x=75; b.y=MENUY+(MAX_ITEM+1)*hl+hl/2+24; b.w=b.h=9; SDL_BlitSurface(arrow_down,NULL,back,&b); } if (m->begin!=0) { b.x=75; b.y=22; SDL_BlitSurface(arrow_up,NULL,back,&b); } }
void draw_border(SDL_Surface *s,int type,SDL_Rect *r) { SDL_FillRect(s,r,COL32_TO_16(0xd6d6d6)); switch(type) { case SHADOW_OUT: draw_h_line(s,r->x,r->y,r->w,COL32_TO_16(0xFFFFFF)); draw_h_line(s,r->x+1,r->y+1,r->w-1,COL32_TO_16(0xd6d6d6)); draw_h_line(s,r->x,r->y+r->h,r->w+1,COL32_TO_16(0x000000)); draw_h_line(s,r->x+2,r->y+r->h-1,r->w-2,COL32_TO_16(0x969696)); draw_v_line(s,r->x,r->y,r->h,COL32_TO_16(0xFFFFFF)); draw_v_line(s,r->x+1,r->y+1,r->h-1,COL32_TO_16(0xd6d6d6)); draw_v_line(s,r->x+r->w,r->y,r->h,COL32_TO_16(0x000000)); draw_v_line(s,r->x+r->w-1,r->y+1,r->h-1,COL32_TO_16(0x969696)); break; case SHADOW_ETCHED_IN: draw_h_line(s,r->x,r->y,r->w,COL32_TO_16(0x969696)); draw_h_line(s,r->x+1,r->y+1,r->w-1,COL32_TO_16(0xFFFFFF)); draw_h_line(s,r->x,r->y+r->h-1,r->w-1,COL32_TO_16(0x969696)); draw_h_line(s,r->x,r->y+r->h,r->w,COL32_TO_16(0xFFFFFF)); draw_v_line(s,r->x,r->y,r->h-1,COL32_TO_16(0x969696)); draw_v_line(s,r->x+1,r->y+1,r->h-2,COL32_TO_16(0xFFFFFF)); draw_v_line(s,r->x+r->w-1,r->y+2,r->h-2,COL32_TO_16(0x969696)); draw_v_line(s,r->x+r->w,r->y+1,r->h,COL32_TO_16(0xFFFFFF)); break; default: break; } }
void draw_border_color(SDL_Surface *s,int type,SDL_Rect *r,Uint32 col) { SDL_FillRect(s,r,COL32_TO_16(col)); inter_draw_border(s,type,r); }
void draw_border(SDL_Surface *s,int type,SDL_Rect *r) { SDL_FillRect(s,r,COL32_TO_16(0xd6d6d6)); inter_draw_border(s,type,r); }