Exemplo n.º 1
0
static void
glw_update_sizes(glw_root_t *gr)
{
  int val;
  int base_size = gr->gr_height / 35; // 35 is just something

  val = GLW_CLAMP(base_size + glw_settings.gs_size, 14, 40);
  
  if(gr->gr_current_size != val) {
    gr->gr_current_size = val;
    prop_set(gr->gr_prop_ui, "size", PROP_SET_INT, val);
    glw_text_flush(gr);
    glw_icon_flush(gr);
    TRACE(TRACE_DEBUG, "GLW", "UI size scale changed to %d", val);
  }

  val = GLW_CLAMP(gr->gr_base_underscan_h + glw_settings.gs_underscan_h,
		  0, 100);

  if(gr->gr_underscan_h != val) {
    prop_set(gr->gr_prop_ui, "underscan_h", PROP_SET_INT, val);
    gr->gr_underscan_h = val;
  }


  val = GLW_CLAMP(gr->gr_base_underscan_v + glw_settings.gs_underscan_v,
		  0, 100);

  if(gr->gr_underscan_v != val) {
    prop_set(gr->gr_prop_ui, "underscan_v", PROP_SET_INT, val);
    gr->gr_underscan_v = val;
  }
}
Exemplo n.º 2
0
void
glw_scroll_layout(glw_scroll_control_t *gsc, glw_t *w, int height)
{
  const int max_value =
    MAX(0, gsc->total_size - gsc->page_size + gsc->scroll_threshold_post);

  if(w->glw_root->gr_pointer_grab == w) {

    gsc->filtered_pos = gsc->target_pos;

    gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value);

  } else if(gsc->kinetic_scroll) {

    gsc->filtered_pos += gsc->kinetic_scroll;
    gsc->target_pos = gsc->filtered_pos;
    gsc->kinetic_scroll *= 0.95;

    gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value);

  } else {

    gsc->target_pos = GLW_CLAMP(gsc->target_pos, 0, max_value);

    if(fabsf(gsc->target_pos - gsc->filtered_pos) > height * 2) {
      gsc->filtered_pos = gsc->target_pos;
    } else {
      glw_lp(&gsc->filtered_pos, w->glw_root, gsc->target_pos, 0.25);
    }
  }

  gsc->rounded_pos = gsc->filtered_pos;
}
Exemplo n.º 3
0
static void
set_color2(glw_t *w, const float *rgb)
{
  glw_gradient_t *gg = (glw_gradient_t *)w;
  gg->gg_col2[0] = GLW_CLAMP(rgb[0], 0, 1);
  gg->gg_col2[1] = GLW_CLAMP(rgb[1], 0, 1);
  gg->gg_col2[2] = GLW_CLAMP(rgb[2], 0, 1);
  gg->gg_repaint = 1;
}
Exemplo n.º 4
0
void
glw_scroll_layout(glw_scroll_control_t *gsc, glw_t *w, int height)
{
  const int max_value =
    MAX(0, gsc->total_size - gsc->page_size + gsc->scroll_threshold_post);

  if(w->glw_root->gr_pointer_grab_scroll == w) {

    gsc->filtered_pos = gsc->target_pos;

    gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value);

  } else if(fabsf(gsc->kinetic_scroll) > 0.5) {

    gsc->filtered_pos += gsc->kinetic_scroll;
    if(gsc->target_pos != gsc->filtered_pos) {
      gsc->target_pos = gsc->filtered_pos;
      glw_need_refresh(w->glw_root, 0);
    }
    gsc->kinetic_scroll *= 0.95;
    gsc->bottom_anchored = 0;
    gsc->filtered_pos = GLW_CLAMP(gsc->filtered_pos, 0, max_value);

  } else {
    gsc->kinetic_scroll = 0;

    if(gsc->bottom_gravity) {

      if(gsc->target_pos == max_value) {
        gsc->bottom_anchored = 1;
      }
      if(gsc->bottom_anchored) {
        if(gsc->target_pos != max_value) {
          w->glw_flags |= GLW_UPDATE_METRICS;
        }
        gsc->target_pos = max_value;
      }
    }

    gsc->target_pos = GLW_CLAMP(gsc->target_pos, 0, max_value);

    if(fabsf(gsc->target_pos - gsc->filtered_pos) > height * 2) {
      gsc->filtered_pos = gsc->target_pos;
    } else {
      glw_lp(&gsc->filtered_pos, w->glw_root, gsc->target_pos, 0.25);
    }
  }

  gsc->rounded_pos = rintf(gsc->filtered_pos * 5.0f) / 5.0f;
}
Exemplo n.º 5
0
static void
set_blur(glw_t *w, float v)
{
  v = GLW_CLAMP(1 - v, 0, 1);

  if(w->glw_sharpness == v)
    return;
  w->glw_sharpness = v;
  glw_need_refresh(w->glw_root, 0);
}
Exemplo n.º 6
0
static void
glw_change_underscan_v(void *opaque, int v)
{
  glw_root_t *gr = opaque;

  v += gr->gr_base_underscan_v;
  v = GLW_CLAMP(v, 0, 100);
  prop_set_int(gr->gr_prop_underscan_v, v);
  gr->gr_underscan_v = v;
}
Exemplo n.º 7
0
static void
glw_change_size(void *opaque, int v)
{
  glw_root_t *gr = opaque;

  v += gr->gr_base_size;
  v = GLW_CLAMP(v, 14, 40);
  prop_set_int(gr->gr_prop_size, v);
  TRACE(TRACE_DEBUG, "GLW", "UI size scale changed to %d", v);
  glw_font_change_size(gr, v);
}
Exemplo n.º 8
0
Arquivo: glw.c Projeto: Allba/showtime
void
glw_update_size(glw_root_t *gr)
{
  int v = gr->gr_base_size + gr->gr_user_size;
  v = GLW_CLAMP(v, 14, 40);

  if(gr->gr_current_size == v)
    return;
  gr->gr_current_size = v;

  prop_set_int(gr->gr_prop_size, v);
  glw_text_flush(gr);
  glw_icon_flush(gr);
  TRACE(TRACE_DEBUG, "GLW", "UI size scale changed to %d", v);
}
Exemplo n.º 9
0
static void
set_blur(glw_t *w, float v)
{
  w->glw_blur = GLW_CLAMP(1 - v, 0, 1);
}
Exemplo n.º 10
0
int
glw_scroll_handle_pointer_event(glw_scroll_control_t *gs,
                                glw_t *w,
                                const glw_pointer_event_t *gpe)
{
  glw_root_t *gr = w->glw_root;
  int64_t dt;
  const int grabbed = gr->gr_pointer_grab_scroll == w;
  float v;
  switch(gpe->type) {

  case GLW_POINTER_SCROLL:
    gs->bottom_anchored = 0;
    gs->target_pos += gs->page_size * gpe->delta_y;
    w->glw_flags |= GLW_UPDATE_METRICS;
    glw_schedule_refresh(w->glw_root, 0);
    return 1;

  case GLW_POINTER_FINE_SCROLL:
    gs->bottom_anchored = 0;
    gs->target_pos += gpe->delta_y;
    w->glw_flags |= GLW_UPDATE_METRICS;
    glw_schedule_refresh(w->glw_root, 0);
    return 1;

  case GLW_POINTER_TOUCH_CANCEL:
    if(grabbed)
      gr->gr_pointer_grab_scroll = NULL;
    return 1;

  case GLW_POINTER_FOCUS_MOTION:
    if(!grabbed)
      return 0;

    gs->bottom_anchored = 0;
    gs->target_pos = (gpe->local_y - gs->initial_touch_y) *
        gs->page_size * 0.5 + gs->initial_pos;

    const int max_value =
      MAX(0, gs->total_size - gs->page_size + gs->scroll_threshold_post);
    gs->target_pos = GLW_CLAMP(gs->target_pos, 0, max_value);

    if(abs(gs->target_pos - gs->initial_pos) > 15) {
      if(gr->gr_pointer_press != NULL) {
        glw_path_modify(gr->gr_pointer_press, 0, GLW_IN_PRESSED_PATH, NULL);
        gr->gr_pointer_press = NULL;
      }
    }

    dt = gpe->ts - gs->last_touch_time;
    if(dt > 100) {
      v = 1000000.0 * (gpe->local_y - gs->last_touch_y) / dt;
      gs->touch_velocity = v * 10;
    }
    gs->last_touch_time = gpe->ts;
    gs->last_touch_x = gpe->local_x;
    gs->last_touch_y = gpe->local_y;
    w->glw_flags |= GLW_UPDATE_METRICS;
    glw_schedule_refresh(w->glw_root, 0);
    break;

  default:
    return 0;
  }
  return 0;
}