Beispiel #1
0
/*
 * Function    : libaroma_window_measure
 * Return Value: byte
 * Descriptions: measure control size
 */
byte libaroma_window_measure(LIBAROMA_WINDOWP win, LIBAROMA_CONTROLP ctl){
  if (win&&ctl){
    if (_libaroma_window_measurement_dp){
      ctl->x = libaroma_dp(ctl->rx);
      ctl->y = libaroma_dp(ctl->ry);
      ctl->w = libaroma_dp(ctl->rw);
      ctl->h = libaroma_dp(ctl->rh);
    }
    else{
      ctl->x = ctl->rx;
      ctl->y = ctl->ry;
      ctl->w = ctl->rw;
      ctl->h = ctl->rh;
    }
    
    ctl->x=libaroma_window_measure_calculate(
      ctl->x, ctl->rx, win->w, 0, 0
    );
    ctl->y=libaroma_window_measure_calculate(
      ctl->y, ctl->ry, win->h, 0, 0
    );
    ctl->w=libaroma_window_measure_calculate(
      ctl->w,ctl->rw, win->w, 1, ctl->x
    );
    ctl->h=libaroma_window_measure_calculate(
      ctl->h,ctl->rh, win->h, 1, ctl->y
    );
    
    if (ctl->w+ctl->x>win->w){
      ctl->w = win->w-ctl->x;
    }
    if (ctl->h+ctl->y>win->h){
      ctl->h = win->h-ctl->y;
    }
    if (ctl->w<ctl->minw){
      ctl->w=ctl->minw;
    }
    if (ctl->h<ctl->minh){
      ctl->h=ctl->minh;
    }
    _libaroma_window_measure_save(NULL,ctl);
    if (ctl->handler->message){
      LIBAROMA_MSG _msg;
      ctl->handler->message(ctl, libaroma_wm_compose(
        &_msg, LIBAROMA_MSG_WIN_MEASURED, NULL, 0, 0)
      );
      return 1;
    }
  }
  return 0;
} /* End of libaroma_window_measure */
Beispiel #2
0
/*
 * Function    : libaroma_window_measure_size
 * Return Value: byte
 * Descriptions: measure window size
 */
byte libaroma_window_measure_size(LIBAROMA_WINDOWP win){
  if (win){
    if (win->parent!=NULL){
      ALOGW("window_resize cannot be used for child window");
      return 0;
    }
    if (_libaroma_window_measurement_dp){
      win->x = libaroma_dp(win->rx);
      win->y = libaroma_dp(win->ry);
      win->w = libaroma_dp(win->rw);
      win->h = libaroma_dp(win->rh);
    }
    else{
      win->x = win->rx;
      win->y = win->ry;
      win->w = win->rw;
      win->h = win->rh;
    }
    win->ax=win->x;
    win->ay=win->y;
    
    win->x=libaroma_window_measure_calculate(
      win->x, win->rx, libaroma_wm()->w, 0, 0
    );
    win->y=libaroma_window_measure_calculate(
      win->y, win->ry, libaroma_wm()->h, 0, 0
    );
    win->w=libaroma_window_measure_calculate(
      win->w, win->rw, libaroma_wm()->w, 1, win->x
    );
    win->h=libaroma_window_measure_calculate(
      win->h, win->rh, libaroma_wm()->h, 1, win->y
    );
    
    if (win->w+win->x>libaroma_wm()->w){
      win->w = libaroma_wm()->w-win->x;
    }
    if (win->h+win->y>libaroma_wm()->h){
      win->h = libaroma_wm()->h-win->y;
    }
    _libaroma_window_measure_save(win,NULL);
    LIBAROMA_MSG _msg;
    libaroma_window_process_event(win,libaroma_wm_compose(
      &_msg, LIBAROMA_MSG_WIN_MEASURED, NULL, 0, 0)
    );
    return 1;
  }
  return 0;
} /* End of libaroma_window_measure */