Beispiel #1
0
/* statusbar */
void recovery_statusbar_update(){
  word bgcolor = libaroma_alpha(
    _recovery.status_bgcolor,
    0,51+recovery_statusbar_side_opa
  );
  byte isdark = libaroma_color_isdark(bgcolor);
  word text_color = isdark?0xffff:0;
  
  libaroma_canvas_fillcolor(
    _recovery.status_canvas,
    bgcolor
  );
  
  if (recovery_statusbar_side_w){
    if (recovery_statusbar_overlay_canvas){
      libaroma_draw_rect(
        _recovery.status_canvas,
        0, 0, recovery_statusbar_side_w, _recovery.status_canvas->h,
        0, 0xff
      );
      libaroma_draw_ex(
        _recovery.status_canvas,
        recovery_statusbar_overlay_canvas,
        0, 0,
        recovery_statusbar_overlay_canvas->w-recovery_statusbar_side_w, 0,
        recovery_statusbar_side_w, recovery_statusbar_overlay_canvas->h,
        0, 0xcc
      );
    }
    else{
      libaroma_draw_rect(
        _recovery.status_canvas,
        0, 0, recovery_statusbar_side_w, _recovery.status_canvas->h,
        RGB(cccccc), 0xff
      );
    }
  }
    
  libaroma_draw_text(
    _recovery.status_canvas,
    "AROMA Recovery",
    0,0,text_color,_recovery.status_canvas->w,
    LIBAROMA_FONT(0,3)|
    LIBAROMA_TEXT_SINGLELINE|
    LIBAROMA_TEXT_CENTER,
    140
  );
  libaroma_wm_updatesync(0,0,0,0,1);
}
Beispiel #2
0
/*
 * Function    : _libaroma_ctl_list_draw
 * Return Value: void
 * Descriptions: draw routine
 */
void _libaroma_ctl_list_draw(
    LIBAROMA_CONTROLP ctl,
    LIBAROMA_CTL_SCROLL_CLIENTP client,
    LIBAROMA_CANVASP cv,
    int x, int y, int w, int h){
  if (client->handler!=&_libaroma_ctl_list_handler){
    return;
  }
  LIBAROMA_CTL_SCROLLP mi = (LIBAROMA_CTL_SCROLLP) client->internal;
  if (y<mi->vpad){
    libaroma_draw_rect(
      cv, 0, 0, w, mi->vpad-y,
      libaroma_ctl_scroll_get_bg_color(ctl),
      0xff
    );
  }
  if (y+h>mi->h-mi->vpad){
    int dh=(y+h)-(mi->h-mi->vpad);
    libaroma_draw_rect(
      cv, 0, h-dh, w, dh,
      libaroma_ctl_scroll_get_bg_color(ctl),
      0xff
    );
  }
  
  libaroma_mutex_lock(mi->imutex);
  /* find first item */
  int current_index = 0;
  LIBAROMA_CTL_LIST_ITEMP f = mi->first;
  while(f){
    if (f->y+f->h>y){
      break;
    }
    f = f->next;
    current_index++;
  }
  
  word bgcolor = libaroma_ctl_scroll_get_bg_color(ctl);
  
  /* draw routine */
  LIBAROMA_CTL_LIST_ITEMP item = f;
  while(item){
    if (item->y>=y+h){
      break;
    }
    LIBAROMA_CANVASP canvas=NULL;
    byte is_area=0;
    if ((item->y>=y)&&(item->y+item->h<y+cv->h)){
      canvas = libaroma_canvas_area(cv,0,item->y-y,w,item->h);
      is_area=1;
    }
    else{
      canvas = libaroma_canvas(w,item->h);
    }
    if (canvas!=NULL){
      _libaroma_ctl_list_draw_item(
        ctl, item, canvas, bgcolor
      );
      
      /* blit into working canvas */
      if (!is_area){
        libaroma_draw(cv,canvas,0,item->y-y,0);
      }
      libaroma_canvas_free(canvas);
    }
    item=item->next;
    current_index++;
  }
  libaroma_mutex_unlock(mi->imutex);
} /* End of _libaroma_ctl_list_draw */