Exemplo n.º 1
0
static void
create_box_control(entity_state_t *entity_state, float x, float y, float z)
{
    rig_selection_tool_t *tool = entity_state->tool;
    cg_texture_t *tex =
        rut_load_texture_from_data_file(tool->shell, "dot.png", NULL);
    control_point_t *point;

    point = c_slice_new0(control_point_t);
    point->entity_state = entity_state;
    point->x = x;
    point->y = y;
    point->z = z;

    point->transform = rut_transform_new(tool->shell);
    rut_graphable_add_child(tool->tool_overlay, point->transform);
    rut_object_unref(point->transform);

    point->marker = rut_nine_slice_new(tool->shell, tex, 0, 0, 0, 0, 10, 10);
    rut_graphable_add_child(point->transform, point->marker);
    rut_object_unref(point->marker);

    point->input_region =
        rut_input_region_new_circle(0, 0, 5, control_point_input_cb, point);
    rut_graphable_add_child(tool->tool_overlay, point->input_region);
    rut_object_unref(point->input_region);
    entity_state->control_points =
        c_llist_prepend(entity_state->control_points, point);

    cg_object_unref(tex);
}
Exemplo n.º 2
0
static void
create_dummy_control_points (EntityState *entity_state)
{
  RigSelectionTool *tool = entity_state->tool;
  CoglTexture *tex = rut_load_texture_from_data_file (tool->ctx, "dot.png", NULL);
  ControlPoint *point;

  point = g_slice_new0 (ControlPoint);
  point->entity_state = entity_state;
  point->x = 0;
  point->y = 0;
  point->z = 0;

  point->transform = rut_transform_new (tool->ctx);
  rut_graphable_add_child (tool->tool_overlay, point->transform);
  rut_refable_unref (point->transform);

  point->marker = rut_nine_slice_new (tool->ctx, tex, 0, 0, 0, 0, 10, 10);
  rut_graphable_add_child (point->transform, point->marker);
  rut_refable_unref (point->marker);

  point->input_region =
    rut_input_region_new_circle (0, 0, 5,
                                 control_point_input_cb,
                                 point);
  rut_graphable_add_child (tool->tool_overlay, point->input_region);
  rut_refable_unref (point->input_region);
  entity_state->control_points =
    g_list_prepend (entity_state->control_points, point);


  point = g_slice_new0 (ControlPoint);
  point->entity_state = entity_state;
  point->x = 100;
  point->y = 0;
  point->z = 0;

  point->transform = rut_transform_new (tool->ctx);
  rut_graphable_add_child (tool->tool_overlay, point->transform);
  rut_refable_unref (point->transform);

  point->marker = rut_nine_slice_new (tool->ctx, tex, 0, 0, 0, 0, 10, 10);
  rut_graphable_add_child (point->transform, point->marker);
  rut_refable_unref (point->marker);

  point->input_region =
    rut_input_region_new_circle (0, 0, 5,
                                 control_point_input_cb,
                                 point);
  rut_graphable_add_child (tool->tool_overlay, point->input_region);
  rut_refable_unref (point->input_region);
  entity_state->control_points =
    g_list_prepend (entity_state->control_points, point);

  cogl_object_unref (tex);
}
Exemplo n.º 3
0
RutButton *
rut_button_new (RutContext *ctx,
                const char *label)
{
  RutButton *button = g_slice_new0 (RutButton);
  GError *error = NULL;
  float text_width, text_height;
  static CoglBool initialized = FALSE;

  if (initialized == FALSE)
    {
      _rut_button_init_type ();
      initialized = TRUE;
    }

  rut_object_init (RUT_OBJECT (button), &rut_button_type);

  button->ref_count = 1;

  rut_list_init (&button->on_click_cb_list);

  rut_graphable_init (RUT_OBJECT (button));
  rut_paintable_init (RUT_OBJECT (button));

  button->ctx = ctx;

  button->state = BUTTON_STATE_NORMAL;

  button->normal_texture =
    rut_load_texture_from_data_file (ctx, "button.png", &error);
  if (button->normal_texture)
    {
      button->background_normal =
        rut_nine_slice_new (ctx, button->normal_texture, 11, 5, 13, 5,
                            button->width,
                            button->height);
    }
  else
    {
      g_warning ("Failed to load button texture: %s", error->message);
      g_error_free (error);
    }

  button->hover_texture =
    rut_load_texture_from_data_file (ctx, "button-hover.png", &error);
  if (button->hover_texture)
    {
      button->background_hover =
        rut_nine_slice_new (ctx, button->hover_texture, 11, 5, 13, 5,
                            button->width,
                            button->height);
    }
  else
    {
      g_warning ("Failed to load button-hover texture: %s", error->message);
      g_error_free (error);
    }

  button->active_texture =
    rut_load_texture_from_data_file (ctx, "button-active.png", &error);
  if (button->active_texture)
    {
      button->background_active =
        rut_nine_slice_new (ctx, button->active_texture, 11, 5, 13, 5,
                            button->width,
                            button->height);
    }
  else
    {
      g_warning ("Failed to load button-active texture: %s", error->message);
      g_error_free (error);
    }

  button->disabled_texture =
    rut_load_texture_from_data_file (ctx, "button-disabled.png", &error);
  if (button->disabled_texture)
    {
      button->background_disabled =
        rut_nine_slice_new (ctx, button->disabled_texture, 11, 5, 13, 5,
                            button->width,
                            button->height);
    }
  else
    {
      g_warning ("Failed to load button-disabled texture: %s", error->message);
      g_error_free (error);
    }

  button->text = rut_text_new_with_text (ctx, NULL, label);
  button->text_transform = rut_transform_new (ctx);
  rut_graphable_add_child (button, button->text_transform);
  rut_graphable_add_child (button->text_transform, button->text);

  rut_sizable_get_size (button->text, &text_width, &text_height);
  button->width = text_width + BUTTON_HPAD;
  button->height = text_height + BUTTON_VPAD;

  cogl_color_init_from_4f (&button->text_color, 0, 0, 0, 1);

  button->input_region =
    rut_input_region_new_rectangle (0, 0, button->width, button->height,
                                    _rut_button_input_cb,
                                    button);

  //rut_input_region_set_graphable (button->input_region, button);
  rut_graphable_add_child (button, button->input_region);

  queue_allocation (button);

  return button;
}
Exemplo n.º 4
0
rut_fold_t *
rut_fold_new(rut_shell_t *shell, const char *label)
{
    rut_fold_t *fold =
        rut_object_alloc0(rut_fold_t, &rut_fold_type, _rut_fold_init_type);
    rut_box_layout_t *header_hbox;
    rut_stack_t *left_header_stack;
    rut_box_layout_t *left_header_hbox;
    rut_bin_t *label_bin;
    rut_bin_t *fold_icon_align;
    cg_texture_t *texture;
    cg_color_t black;

    fold->shell = shell;

    rut_graphable_init(fold);

    rig_introspectable_init(fold, _rut_fold_prop_specs, fold->properties);

    fold->vbox = rut_box_layout_new(shell,
                                    RUT_BOX_LAYOUT_PACKING_TOP_TO_BOTTOM);

    header_hbox = rut_box_layout_new(shell,
                                     RUT_BOX_LAYOUT_PACKING_LEFT_TO_RIGHT);
    rut_box_layout_add(fold->vbox, false, header_hbox);
    rut_object_unref(header_hbox);

    left_header_stack = rut_stack_new(shell, 0, 0);
    rut_box_layout_add(header_hbox, true, left_header_stack);
    rut_object_unref(left_header_stack);

    left_header_hbox =
        rut_box_layout_new(shell, RUT_BOX_LAYOUT_PACKING_LEFT_TO_RIGHT);
    rut_stack_add(left_header_stack, left_header_hbox);
    rut_object_unref(left_header_hbox);

    fold_icon_align = rut_bin_new(shell);
    rut_bin_set_x_position(fold_icon_align, RUT_BIN_POSITION_BEGIN);
    rut_bin_set_y_position(fold_icon_align, RUT_BIN_POSITION_CENTER);
    rut_bin_set_right_padding(fold_icon_align, 10);
    rut_box_layout_add(left_header_hbox, false, fold_icon_align);
    rut_object_unref(fold_icon_align);

    texture = rut_load_texture_from_data_file(shell, "tri-fold-up.png", NULL);
    fold->fold_up_icon = rut_nine_slice_new(shell,
                                            texture,
                                            0,
                                            0,
                                            0,
                                            0,
                                            cg_texture_get_width(texture),
                                            cg_texture_get_height(texture));
    cg_object_unref(texture);

    texture = rut_load_texture_from_data_file(shell, "tri-fold-down.png",
                                              NULL);
    fold->fold_down_icon = rut_nine_slice_new(shell,
                                              texture,
                                              0,
                                              0,
                                              0,
                                              0,
                                              cg_texture_get_width(texture),
                                              cg_texture_get_height(texture));
    cg_object_unref(texture);

    fold->fold_icon_shim = rut_fixed_new(shell, cg_texture_get_width(texture),
                                         cg_texture_get_height(texture));
    rut_bin_set_child(fold_icon_align, fold->fold_icon_shim);
    rut_object_unref(fold->fold_icon_shim);

    rut_graphable_add_child(fold->fold_icon_shim, fold->fold_down_icon);

    /* NB: we keep references to the icons so they can be swapped
     * without getting disposed. */

    label_bin = rut_bin_new(shell);
    rut_bin_set_y_position(label_bin, RUT_BIN_POSITION_CENTER);
    rut_box_layout_add(left_header_hbox, false, label_bin);
    rut_object_unref(label_bin);

    fold->label = rut_text_new_with_text(shell, NULL, label);
    rut_bin_set_child(label_bin, fold->label);
    rut_object_unref(fold->label);

    fold->header_hbox_right =
        rut_box_layout_new(shell, RUT_BOX_LAYOUT_PACKING_RIGHT_TO_LEFT);
    rut_box_layout_add(header_hbox, true, fold->header_hbox_right);
    rut_object_unref(fold->header_hbox_right);

    cg_color_init_from_4f(&black, 0, 0, 0, 1);
    rut_fold_set_folder_color(fold, &black);
    rut_fold_set_label_color(fold, &black);

    rut_graphable_add_child(fold, fold->vbox);
    rut_object_unref(fold->vbox);

    fold->input_region =
        rut_input_region_new_rectangle(0, 0, 0, 0, input_cb, fold);
    rut_stack_add(left_header_stack, fold->input_region);
    rut_object_unref(fold->input_region);

    fold->folded = false;

    return fold;
}
Exemplo n.º 5
0
Arquivo: rut-fold.c Projeto: cee1/rig
RutFold *
rut_fold_new (RutContext *ctx,
              const char *label)
{
  RutFold *fold = g_slice_new0 (RutFold);
  static CoglBool initialized = FALSE;
  RutBoxLayout *header_hbox;
  RutStack *left_header_stack;
  RutBoxLayout *left_header_hbox;
  RutBin *label_bin;
  RutBin *fold_icon_align;
  CoglTexture *texture;
  CoglColor black;

  if (initialized == FALSE)
    {
      _rut_fold_init_type ();

      initialized = TRUE;
    }

  fold->ref_count = 1;
  fold->context = ctx;

  rut_object_init (&fold->_parent, &rut_fold_type);

  rut_graphable_init (fold);

  rut_simple_introspectable_init (fold,
                                  _rut_fold_prop_specs,
                                  fold->properties);

  fold->vbox = rut_box_layout_new (ctx, RUT_BOX_LAYOUT_PACKING_TOP_TO_BOTTOM);

  header_hbox =
    rut_box_layout_new (ctx, RUT_BOX_LAYOUT_PACKING_LEFT_TO_RIGHT);
  rut_box_layout_add (fold->vbox, FALSE, header_hbox);
  rut_refable_unref (header_hbox);

  left_header_stack = rut_stack_new (ctx, 0, 0);
  rut_box_layout_add (header_hbox, TRUE, left_header_stack);
  rut_refable_unref (left_header_stack);

  left_header_hbox =
    rut_box_layout_new (ctx, RUT_BOX_LAYOUT_PACKING_LEFT_TO_RIGHT);
  rut_stack_add (left_header_stack, left_header_hbox);
  rut_refable_unref (left_header_hbox);

  fold_icon_align = rut_bin_new (ctx);
  rut_bin_set_x_position (fold_icon_align, RUT_BIN_POSITION_BEGIN);
  rut_bin_set_y_position (fold_icon_align, RUT_BIN_POSITION_CENTER);
  rut_bin_set_right_padding (fold_icon_align, 10);
  rut_box_layout_add (left_header_hbox, FALSE, fold_icon_align);
  rut_refable_unref (fold_icon_align);

  texture = rut_load_texture_from_data_file (ctx, "tri-fold-up.png", NULL);
  fold->fold_up_icon = rut_nine_slice_new (ctx, texture,
                                           0, 0, 0, 0,
                                           cogl_texture_get_width (texture),
                                           cogl_texture_get_height (texture));
  cogl_object_unref (texture);

  texture = rut_load_texture_from_data_file (ctx, "tri-fold-down.png", NULL);
  fold->fold_down_icon = rut_nine_slice_new (ctx, texture,
                                             0, 0, 0, 0,
                                             cogl_texture_get_width (texture),
                                             cogl_texture_get_height (texture));
  cogl_object_unref (texture);

  fold->fold_icon_shim = rut_fixed_new (ctx,
                                        cogl_texture_get_width (texture),
                                        cogl_texture_get_height (texture));
  rut_bin_set_child (fold_icon_align, fold->fold_icon_shim);
  rut_refable_unref (fold->fold_icon_shim);

  rut_graphable_add_child (fold->fold_icon_shim, fold->fold_down_icon);

  /* NB: we keep references to the icons so they can be swapped
   * without getting disposed. */

  label_bin = rut_bin_new (ctx);
  rut_bin_set_y_position (label_bin, RUT_BIN_POSITION_CENTER);
  rut_box_layout_add (left_header_hbox, FALSE, label_bin);
  rut_refable_unref (label_bin);

  fold->label = rut_text_new_with_text (ctx, NULL, label);
  rut_bin_set_child (label_bin, fold->label);
  rut_refable_unref (fold->label);

  fold->header_hbox_right =
    rut_box_layout_new (ctx, RUT_BOX_LAYOUT_PACKING_RIGHT_TO_LEFT);
  rut_box_layout_add (header_hbox, TRUE, fold->header_hbox_right);
  rut_refable_unref (fold->header_hbox_right);

  cogl_color_init_from_4f (&black, 0, 0, 0, 1);
  rut_fold_set_folder_color (fold, &black);
  rut_fold_set_label_color (fold, &black);

  rut_graphable_add_child (fold, fold->vbox);
  rut_refable_unref (fold->vbox);

  fold->input_region = rut_input_region_new_rectangle (0, 0, 0, 0,
                                                       input_cb,
                                                       fold);
  rut_stack_add (left_header_stack, fold->input_region);
  rut_refable_unref (fold->input_region);

  fold->folded = FALSE;

  return fold;
}