void show_message (void) { ClutterActor *stage, *label; ClutterColor black = { 0, 0, 0, 255 }; ClutterColor white = { 255, 255, 255, 255 }; clutter_init (NULL, NULL); stage = clutter_stage_get_default (); clutter_stage_set_color (CLUTTER_STAGE (stage), &black); clutter_stage_set_fullscreen (CLUTTER_STAGE (stage), TRUE); label = clutter_text_new_with_text ("Sans 20", "Cannot find suitable screen mode\n" "Media Explorer requires a 720p screen"); clutter_text_set_line_wrap (CLUTTER_TEXT (label), TRUE); clutter_text_set_color (CLUTTER_TEXT (label), &white); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); /* Put the label in the middle */ clutter_actor_add_constraint (label, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, 0.5)); clutter_actor_add_constraint (label, clutter_align_constraint_new (stage, CLUTTER_ALIGN_Y_AXIS, 0.5)); clutter_actor_show (stage); clutter_main (); }
static VALUE rbclt_text_initialize (int argc, VALUE *argv, VALUE self) { VALUE font_name, text, color; gchar *font_name_s = NULL, *text_s = NULL; ClutterColor *color_s = NULL; ClutterActor *actor; rb_scan_args (argc, argv, "03", &font_name, &text, &color); if (!NIL_P (font_name)) font_name_s = StringValuePtr (font_name); if (!NIL_P (text)) text_s = StringValuePtr (text); if (!NIL_P (color)) color_s = (ClutterColor *) RVAL2BOXED (color, CLUTTER_TYPE_COLOR); actor = clutter_text_new (); if (font_name_s) clutter_text_set_font_name (CLUTTER_TEXT (actor), font_name_s); if (text_s) clutter_text_set_text (CLUTTER_TEXT (actor), text_s); if (color_s) clutter_text_set_color (CLUTTER_TEXT (actor), color_s); rbclt_initialize_unowned (self, actor); return Qnil; }
static void draw_marker (ChamplainMarker *marker) { BixiMarkerPrivate *priv = BIXI_MARKER (marker)->priv; ClutterText *label; gfloat width = 0, height = 0; gint radius = 10 + priv->value / 3; g_free (priv->text); priv->text = g_strdup_printf ("%u", priv->value); if (priv->text_actor == NULL) { priv->text_actor = clutter_text_new_with_text ("Sans 11", priv->text); g_object_ref (priv->text_actor); } label = CLUTTER_TEXT (priv->text_actor); clutter_text_set_font_name (label, "Sans 11"); clutter_text_set_text (label, priv->text); clutter_actor_get_size (CLUTTER_ACTOR (label), &width, &height); clutter_actor_set_position (CLUTTER_ACTOR (label), radius - width / 2, radius - height / 2); clutter_text_set_color (CLUTTER_TEXT (priv->text_actor), &default_text_color); if (clutter_actor_get_parent (priv->text_actor) == NULL) clutter_container_add_actor (CLUTTER_CONTAINER (marker), priv->text_actor); draw_shadow (BIXI_MARKER (marker), radius); draw_background (BIXI_MARKER (marker), radius); clutter_actor_raise (priv->text_actor, priv->background); clutter_actor_set_anchor_point (CLUTTER_ACTOR (marker), radius, radius); }
ClutterActor * make_source (void) { ClutterActor *source, *actor; GError *error = NULL; gchar *file; ClutterColor yellow = {0xff, 0xff, 0x00, 0xff}; source = clutter_group_new (); file = g_build_filename (TESTS_DATADIR, "redhand.png", NULL); actor = clutter_texture_new_from_file (file, &error); if (!actor) g_error("pixbuf load failed: %s", error ? error->message : "Unknown"); g_free (file); clutter_group_add (source, actor); actor = clutter_text_new_with_text ("Sans Bold 50px", "Clutter"); clutter_text_set_color (CLUTTER_TEXT (actor), &yellow); clutter_actor_set_y (actor, clutter_actor_get_height(source) + 5); clutter_group_add (source, actor); return source; }
static void st_entry_style_changed (StWidget *self) { StEntryPrivate *priv = ST_ENTRY_PRIV (self); StThemeNode *theme_node; ClutterColor color; const PangoFontDescription *font; gchar *font_string; gdouble size; theme_node = st_widget_get_theme_node (self); st_theme_node_get_foreground_color (theme_node, &color); clutter_text_set_color (CLUTTER_TEXT (priv->entry), &color); if (st_theme_node_lookup_length (theme_node, "caret-size", TRUE, &size)) clutter_text_set_cursor_size (CLUTTER_TEXT (priv->entry), (int)(.5 + size)); if (st_theme_node_lookup_color (theme_node, "caret-color", TRUE, &color)) clutter_text_set_cursor_color (CLUTTER_TEXT (priv->entry), &color); if (st_theme_node_lookup_color (theme_node, "selection-background-color", TRUE, &color)) clutter_text_set_selection_color (CLUTTER_TEXT (priv->entry), &color); if (st_theme_node_lookup_color (theme_node, "selected-color", TRUE, &color)) clutter_text_set_selected_text_color (CLUTTER_TEXT (priv->entry), &color); font = st_theme_node_get_font (theme_node); font_string = pango_font_description_to_string (font); clutter_text_set_font_name (CLUTTER_TEXT (priv->entry), font_string); g_free (font_string); ST_WIDGET_CLASS (st_entry_parent_class)->style_changed (self); }
/** * cb_button_set_text_color: * @self: a #CbButton * @color: the #ClutterColor to use as the color for the button text * * Set the color of the text on the button */ void cb_button_set_text_color (CbButton *self, const ClutterColor *color) { g_return_if_fail (CB_IS_BUTTON (self)); clutter_text_set_color (CLUTTER_TEXT (self->priv->label), color); }
/** * _st_set_text_from_style: * @text: Target #ClutterText * @theme_node: Source #StThemeNode * * Set various GObject properties of the @text object using * CSS information from @theme_node. */ void _st_set_text_from_style (ClutterText *text, StThemeNode *theme_node) { ClutterColor color; StTextDecoration decoration; PangoAttrList *attribs = NULL; const PangoFontDescription *font; StTextAlign align; st_theme_node_get_foreground_color (theme_node, &color); clutter_text_set_color (text, &color); font = st_theme_node_get_font (theme_node); clutter_text_set_font_description (text, (PangoFontDescription *) font); decoration = st_theme_node_get_text_decoration (theme_node); if (decoration) { attribs = pango_attr_list_new (); if (decoration & ST_TEXT_DECORATION_UNDERLINE) { PangoAttribute *underline = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE); pango_attr_list_insert (attribs, underline); } if (decoration & ST_TEXT_DECORATION_LINE_THROUGH) { PangoAttribute *strikethrough = pango_attr_strikethrough_new (TRUE); pango_attr_list_insert (attribs, strikethrough); } /* Pango doesn't have an equivalent attribute for _OVERLINE, and we deliberately * skip BLINK (for now...) */ } clutter_text_set_attributes (text, attribs); if (attribs) pango_attr_list_unref (attribs); align = st_theme_node_get_text_align (theme_node); if (align == ST_TEXT_ALIGN_JUSTIFY) { clutter_text_set_justify (text, TRUE); clutter_text_set_line_alignment (text, PANGO_ALIGN_LEFT); } else { clutter_text_set_justify (text, FALSE); clutter_text_set_line_alignment (text, (PangoAlignment) align); } }
static ClutterActor * create_label (const ClutterColor *color, const gchar *text) { ClutterActor *retval = clutter_text_new (); clutter_text_set_color (CLUTTER_TEXT (retval), color); clutter_text_set_markup (CLUTTER_TEXT (retval), text); clutter_text_set_editable (CLUTTER_TEXT (retval), FALSE); clutter_text_set_selectable (CLUTTER_TEXT (retval), FALSE); clutter_text_set_single_line_mode (CLUTTER_TEXT (retval), TRUE); clutter_text_set_ellipsize (CLUTTER_TEXT (retval), PANGO_ELLIPSIZE_END); return retval; }
OptShow* opt_show_new (void) { OptShow *show; ClutterColor col = { 0, 0, 0, 0xff }; show = g_object_new (OPT_TYPE_SHOW, NULL); show->priv->bullet_texture = clutter_text_new_with_text (show->priv->bullet_font, "•"); clutter_text_set_color (CLUTTER_TEXT(show->priv->bullet_texture), &col); show->priv->bg = g_object_new (CLUTTER_TYPE_TEXTURE, NULL); show->priv->menu = opt_menu_new (show); g_object_ref (G_OBJECT (show->priv->menu)); return show; }
static gboolean gmc_button_leave_event (ClutterActor *actor, ClutterCrossingEvent *event) { GmcButton *self; GmcButtonPrivate *priv; ClutterColor *color; self = GMC_BUTTON (actor); priv = GMC_BUTTON_GET_PRIVATE (self); if (priv->label) { color = clutter_color_new (0x80, 0x80, 0x80, 0xff); clutter_text_set_color (CLUTTER_TEXT (priv->label), color); clutter_color_free (color); } priv->is_hover = FALSE; return TRUE; }
void xfdashboard_text_box_set_hint_text_color(XfdashboardTextBox *self, const ClutterColor *inColor) { XfdashboardTextBoxPrivate *priv; g_return_if_fail(XFDASHBOARD_IS_TEXT_BOX(self)); g_return_if_fail(inColor); priv=self->priv; /* Set value if changed */ if(!priv->hintTextColor || !clutter_color_equal(inColor, priv->hintTextColor)) { if(priv->hintTextColor) clutter_color_free(priv->hintTextColor); priv->hintTextColor=clutter_color_copy(inColor); clutter_text_set_color(CLUTTER_TEXT(priv->actorHintLabel), priv->hintTextColor); clutter_actor_queue_redraw(CLUTTER_ACTOR(self)); /* Notify about property change */ g_object_notify_by_pspec(G_OBJECT(self), XfdashboardTextBoxProperties[PROP_HINT_TEXT_COLOR]); } }
void xfdashboard_text_box_set_text_color(XfdashboardTextBox *self, const ClutterColor *inColor) { XfdashboardTextBoxPrivate *priv; ClutterColor selectionColor; g_return_if_fail(XFDASHBOARD_IS_TEXT_BOX(self)); g_return_if_fail(inColor); priv=self->priv; /* Set value if changed */ if(!priv->textColor || !clutter_color_equal(inColor, priv->textColor)) { if(priv->textColor) clutter_color_free(priv->textColor); priv->textColor=clutter_color_copy(inColor); clutter_text_set_color(CLUTTER_TEXT(priv->actorTextBox), priv->textColor); /* Selection text and background color is inverted text color if not set */ if(!priv->selectionColorSet) { selectionColor.red=0xff-priv->textColor->red; selectionColor.green=0xff-priv->textColor->green; selectionColor.blue=0xff-priv->textColor->blue; selectionColor.alpha=priv->textColor->alpha; clutter_text_set_selected_text_color(CLUTTER_TEXT(priv->actorTextBox), &selectionColor); /* Selection color is the same as text color */ clutter_text_set_selection_color(CLUTTER_TEXT(priv->actorTextBox), priv->textColor); } /* Redraw actor in new color */ clutter_actor_queue_redraw(CLUTTER_ACTOR(self)); /* Notify about property change */ g_object_notify_by_pspec(G_OBJECT(self), XfdashboardTextBoxProperties[PROP_TEXT_COLOR]); } }
static ClutterActor * create_label (void) { ClutterColor label_color = { 0xff, 0xff, 0xff, 0xff }; ClutterActor *label; char *font_name; GString *str; int i; font_name = g_strdup_printf ("Monospace %dpx", font_size); str = g_string_new (NULL); for (i = 0; i < n_chars; i++) g_string_append_unichar (str, get_character (i)); label = clutter_text_new_with_text (font_name, str->str); clutter_text_set_color (CLUTTER_TEXT (label), &label_color); g_free (font_name); g_string_free (str, TRUE); return label; }
static void make_window_content (MplPanelClutter *panel) { ClutterActor *stage = mpl_panel_clutter_get_stage (panel); ClutterActor *label; ClutterColor black = {0, 0, 0, 0xff}; ClutterColor red = {0xff, 0, 0, 0xff}; #if 0 label = clutter_text_new_with_text ("Sans 16pt", "This is a clutter panel"); clutter_text_set_color (CLUTTER_TEXT (label), &black); clutter_text_set_editable (CLUTTER_TEXT (label), TRUE); clutter_stage_set_key_focus (CLUTTER_STAGE (stage), label); #else label = clutter_rectangle_new_with_color (&black); clutter_actor_set_size (label, 50.0,50.0); clutter_actor_show (label); #endif mpl_panel_clutter_set_child (panel, label); clutter_stage_set_color (CLUTTER_STAGE (stage), &red); }
void opt_show_toggle_position (OptShow *show) { OptShowPrivate *priv; ClutterActor *stage; ClutterGeometry stage_geom; g_return_if_fail (OPT_IS_SHOW (show)); priv = show->priv; stage = clutter_stage_get_default (); clutter_actor_get_geometry (stage, &stage_geom); if (!priv->position_label) { ClutterActor *rect; ClutterActor *label; ClutterColor rect_color = { 0x00, 0x00, 0x00, 0x33 }; ClutterColor label_color = { 0xff, 0xff, 0xff, 0xee }; ClutterGeometry rect_geom; rect = clutter_rectangle_new (); clutter_rectangle_set_color (CLUTTER_RECTANGLE (rect), &rect_color); rect_geom.width = 102; rect_geom.height = 77; rect_geom.x = stage_geom.width / 2 - rect_geom.width / 2; rect_geom.y = stage_geom.height - rect_geom.height - 20; clutter_actor_set_geometry (rect, &rect_geom); label = clutter_text_new_with_text ("Sans Bold 20", "0/0"); clutter_text_set_color (CLUTTER_TEXT (label), &label_color); clutter_actor_set_position (label, rect_geom.x + 10, rect_geom.y + 10); clutter_group_add_many (CLUTTER_GROUP (stage), rect, label, NULL); priv->position_label = label; priv->position_rect = rect; priv->position_label_visible = FALSE; } if (!priv->position_label_visible) { priv->position_label_visible = TRUE; opt_show_update_position_label (show); clutter_actor_show (priv->position_rect); clutter_actor_show (priv->position_label); } else { clutter_actor_hide (priv->position_label); clutter_actor_hide (priv->position_rect); priv->position_label_visible = FALSE; } }
static void render_logo (void) { ClutterActor *image; ClutterActor *text, *text_shadow; ClutterActor *desc, *desc_shadow; ClutterColor actor_color = {0xff,0xff,0xff,0xff}; ClutterColor shadow_color = {0x00, 0x00, 0x00, 0x88}; ClutterActor *text_group; static gint width, height; gint size; gfloat stage_w, stage_h; PangoFontDescription *pfd; PangoLayout *layout; PangoContext *context; gchar *nibbles = _("Nibbles"); /* Translators: This string will be included in the intro screen, so don't make sure it fits! */ gchar *description = _("A worm game for MATE."); logo = clutter_group_new (); text_group = clutter_group_new (); if (!logo_pixmap) gnibbles_load_logo (properties->tilesize); image = gtk_clutter_texture_new_from_pixbuf (logo_pixmap); stage_w = board->width * properties->tilesize; stage_h = board->height * properties->tilesize; clutter_actor_set_size (CLUTTER_ACTOR (image), stage_w, stage_h); clutter_actor_set_position (CLUTTER_ACTOR (image), 0, 0); clutter_actor_show (image); text = clutter_text_new (); clutter_text_set_color (CLUTTER_TEXT (text), &actor_color); context = gdk_pango_context_get (); layout = clutter_text_get_layout (CLUTTER_TEXT (text)); pfd = pango_context_get_font_description (context); size = pango_font_description_get_size (pfd); pango_font_description_set_size (pfd, (size * stage_w) / 100); pango_font_description_set_family (pfd, "Sans"); pango_font_description_set_weight(pfd, PANGO_WEIGHT_BOLD); pango_layout_set_font_description (layout, pfd); pango_layout_set_text (layout, nibbles, -1); pango_layout_get_pixel_size (layout, &width, &height); text_shadow = clutter_text_new (); clutter_text_set_color (CLUTTER_TEXT (text_shadow), &shadow_color); layout = clutter_text_get_layout (CLUTTER_TEXT (text_shadow)); pango_layout_set_font_description (layout, pfd); pango_layout_set_text (layout, nibbles, -1); clutter_actor_set_position (CLUTTER_ACTOR (text), (stage_w - width) * 0.5 , stage_h * .72); clutter_actor_set_position (CLUTTER_ACTOR (text_shadow), (stage_w - width) * 0.5 + 5, stage_h * .72 + 5); desc = clutter_text_new (); layout = clutter_text_get_layout (CLUTTER_TEXT (desc)); clutter_text_set_color (CLUTTER_TEXT (desc), &actor_color); pango_font_description_set_size (pfd, (size * stage_w) / 400); pango_layout_set_font_description (layout, pfd); pango_layout_set_text (layout, description, -1); pango_layout_get_pixel_size(layout, &width, &height); desc_shadow = clutter_text_new (); layout = clutter_text_get_layout (CLUTTER_TEXT (desc_shadow)); clutter_text_set_color (CLUTTER_TEXT (desc_shadow), &shadow_color); pango_font_description_set_size (pfd, (size * stage_w) / 400); pango_layout_set_font_description (layout, pfd); pango_layout_set_text (layout, description, -1); clutter_actor_set_position (CLUTTER_ACTOR (desc), (stage_w - width) * 0.5, stage_h* .93); clutter_actor_set_position (CLUTTER_ACTOR (desc_shadow), (stage_w - width) * 0.5 + 3, stage_h * .93 + 3); clutter_container_add (CLUTTER_CONTAINER (text_group), CLUTTER_ACTOR (text_shadow), CLUTTER_ACTOR (text), CLUTTER_ACTOR (desc_shadow), CLUTTER_ACTOR (desc), NULL); clutter_container_add (CLUTTER_CONTAINER (logo), CLUTTER_ACTOR (image), CLUTTER_ACTOR (text_group), NULL); clutter_actor_set_opacity (CLUTTER_ACTOR (text_group), 0); clutter_actor_set_scale (CLUTTER_ACTOR (text_group), 0.0, 0.0); clutter_actor_animate (text_group, CLUTTER_EASE_OUT_CIRC, 800, "opacity", 0xff, "scale-x", 1.0, "scale-y", 1.0, "fixed::scale-center-y", stage_w / 2, "fixed::scale-center-x", stage_h / 2, NULL); clutter_container_add_actor (CLUTTER_CONTAINER (stage), CLUTTER_ACTOR (logo)); }
static gboolean do_tests (CallbackData *data) { PangoFontDescription *fd; static const ClutterColor red = { 0xff, 0x00, 0x00, 0xff }; PangoAttrList *attr_list, *attr_list_copy; PangoAttribute *attr; /* TEST 1: change the text */ clutter_text_set_text (CLUTTER_TEXT (data->label), "Counter 0"); pango_layout_set_text (data->test_layout, "Counter 0", -1); g_assert (check_result (data, "Change text", TRUE) == FALSE); /* TEST 2: change a single character */ clutter_text_set_text (CLUTTER_TEXT (data->label), "Counter 1"); pango_layout_set_text (data->test_layout, "Counter 1", -1); g_assert (check_result (data, "Change a single character", TRUE) == FALSE); /* TEST 3: move the label */ clutter_actor_set_position (data->label, 10, 0); g_assert (check_result (data, "Move the label", FALSE) == FALSE); /* TEST 4: change the font */ clutter_text_set_font_name (CLUTTER_TEXT (data->label), "Serif 15"); fd = pango_font_description_from_string ("Serif 15"); pango_layout_set_font_description (data->test_layout, fd); pango_font_description_free (fd); g_assert (check_result (data, "Change the font", TRUE) == FALSE); /* TEST 5: change the color */ clutter_text_set_color (CLUTTER_TEXT (data->label), &red); g_assert (check_result (data, "Change the color", FALSE) == FALSE); /* TEST 6: change the attributes */ attr = pango_attr_weight_new (PANGO_WEIGHT_BOLD); attr->start_index = 0; attr->end_index = 2; attr_list = pango_attr_list_new (); pango_attr_list_insert (attr_list, attr); attr_list_copy = pango_attr_list_copy (attr_list); clutter_text_set_attributes (CLUTTER_TEXT (data->label), attr_list); pango_layout_set_attributes (data->test_layout, attr_list_copy); pango_attr_list_unref (attr_list_copy); pango_attr_list_unref (attr_list); g_assert (check_result (data, "Change the attributes", TRUE) == FALSE); /* TEST 7: change the text again */ clutter_text_set_attributes (CLUTTER_TEXT (data->label), NULL); clutter_text_set_text (CLUTTER_TEXT (data->label), long_text); pango_layout_set_attributes (data->test_layout, NULL); pango_layout_set_text (data->test_layout, long_text, -1); g_assert (check_result (data, "Change the text again", TRUE) == FALSE); /* TEST 8: enable markup */ clutter_text_set_use_markup (CLUTTER_TEXT (data->label), TRUE); pango_layout_set_markup (data->test_layout, long_text, -1); g_assert (check_result (data, "Enable markup", TRUE) == FALSE); /* This part can't be a test because Clutter won't restrict the width if wrapping and ellipsizing is disabled so the extents will be different, but we still want to do it for the later tests */ clutter_actor_set_width (data->label, 200); pango_layout_set_width (data->test_layout, 200 * PANGO_SCALE); /* Force a redraw so that changing the width won't affect the results */ force_redraw (data); /* TEST 9: enable ellipsize */ clutter_text_set_ellipsize (CLUTTER_TEXT (data->label), PANGO_ELLIPSIZE_END); pango_layout_set_ellipsize (data->test_layout, PANGO_ELLIPSIZE_END); g_assert (check_result (data, "Enable ellipsize", TRUE) == FALSE); clutter_text_set_ellipsize (CLUTTER_TEXT (data->label), PANGO_ELLIPSIZE_NONE); pango_layout_set_ellipsize (data->test_layout, PANGO_ELLIPSIZE_NONE); force_redraw (data); /* TEST 10: enable line wrap */ clutter_text_set_line_wrap (CLUTTER_TEXT (data->label), TRUE); pango_layout_set_wrap (data->test_layout, PANGO_WRAP_WORD); g_assert (check_result (data, "Enable line wrap", TRUE) == FALSE); /* TEST 11: change wrap mode * FIXME - broken */ clutter_text_set_line_wrap_mode (CLUTTER_TEXT (data->label), PANGO_WRAP_CHAR); pango_layout_set_wrap (data->test_layout, PANGO_WRAP_CHAR); g_assert (check_result (data, "Change wrap mode", TRUE) == FALSE); /* TEST 12: enable justify */ clutter_text_set_justify (CLUTTER_TEXT (data->label), TRUE); pango_layout_set_justify (data->test_layout, TRUE); /* Pango appears to have a bug which means that you can't change the justification after setting the text but this fixes it. See http://bugzilla.gnome.org/show_bug.cgi?id=551865 */ pango_layout_context_changed (data->test_layout); g_assert (check_result (data, "Enable justify", TRUE) == FALSE); /* TEST 13: change alignment */ clutter_text_set_line_alignment (CLUTTER_TEXT (data->label), PANGO_ALIGN_RIGHT); pango_layout_set_alignment (data->test_layout, PANGO_ALIGN_RIGHT); g_assert (check_result (data, "Change alignment", TRUE) == FALSE); clutter_main_quit (); return FALSE; }
G_MODULE_EXPORT int test_scale_main (int argc, char *argv[]) { ClutterActor *stage, *rect; ClutterColor rect_color = { 0xff, 0xff, 0xff, 0x99 }; ClutterTimeline *timeline; ClutterAlpha *alpha; ClutterBehaviour *behave; if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return 1; stage = clutter_stage_new (); clutter_stage_set_title (CLUTTER_STAGE (stage), "Scaling"); clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black); clutter_actor_set_size (stage, 300, 300); g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); rect = clutter_rectangle_new_with_color (&rect_color); clutter_actor_set_size (rect, 100, 100); clutter_actor_set_position (rect, 100, 100); clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect); label = clutter_text_new_with_text ("Sans 20px", ""); clutter_text_set_color (CLUTTER_TEXT (label), CLUTTER_COLOR_White); clutter_actor_set_position (label, clutter_actor_get_x (rect), clutter_actor_get_y (rect) + clutter_actor_get_height (rect)); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); rect_color.alpha = 0xff; rect = clutter_rectangle_new_with_color (&rect_color); clutter_actor_set_position (rect, 100, 100); clutter_actor_set_size (rect, 100, 100); set_next_gravity (rect); clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect); timeline = clutter_timeline_new (750); alpha = clutter_alpha_new_with_func (timeline, my_ramp_func, NULL, NULL); behave = clutter_behaviour_scale_new (alpha, 0.0, 0.0, /* scale start */ 1.0, 1.0); /* scale end */ clutter_behaviour_apply (behave, rect); clutter_timeline_set_repeat_count (timeline, -1); g_signal_connect_swapped (timeline, "completed", G_CALLBACK (set_next_gravity), rect); clutter_timeline_start (timeline); clutter_actor_show_all (stage); clutter_main(); g_object_unref (timeline); g_object_unref (behave); return EXIT_SUCCESS; }
static void mx_tooltip_style_changed (MxWidget *self) { ClutterColor *color = NULL; MxTooltipPrivate *priv; gchar *font_name; gchar *font_string; gint font_size; MxBorderImage *border_image; priv = MX_TOOLTIP (self)->priv; mx_stylable_get (MX_STYLABLE (self), "color", &color, "font-family", &font_name, "font-size", &font_size, "border-image", &border_image, NULL); if (color) { clutter_text_set_color (CLUTTER_TEXT (priv->label), color); clutter_color_free (color); } if (font_name || font_size) { if (font_name && font_size) { font_string = g_strdup_printf ("%s %dpx", font_name, font_size); g_free (font_name); } else if (font_size) font_string = g_strdup_printf ("%dpx", font_size); else font_string = font_name; clutter_text_set_font_name (CLUTTER_TEXT (priv->label), font_string); g_free (font_string); } /* remove existing border image */ if (priv->border_image) { g_boxed_free (MX_TYPE_BORDER_IMAGE, priv->border_image); priv->border_image = NULL; } if (priv->border_image_texture) { cogl_handle_unref (priv->border_image_texture); priv->border_image_texture = NULL; } if (border_image) { priv->border_image_texture = mx_texture_cache_get_cogl_texture (mx_texture_cache_get_default (), border_image->uri); priv->border_image = border_image; } clutter_actor_queue_relayout (CLUTTER_ACTOR (self)); }
static void _add_app(MetaSwitcher* self, MetaWindow* app, gint* x, gint* y) { MetaSwitcherPrivate* priv = self->priv; if (!priv->icons) priv->icons = g_hash_table_new(NULL, NULL); // container ClutterActor* actor = clutter_actor_new(); WindowPrivate* win_priv = get_window_private(actor); win_priv->window = app; win_priv->highlight = FALSE; g_hash_table_insert(priv->icons, app, actor); gint w = APP_ACTOR_WIDTH, h = APP_ACTOR_HEIGHT, screen_width, screen_height; /* TODO: @sonald scale app actor width */ MetaScreen *screen = meta_plugin_get_screen(priv->plugin); meta_screen_get_size(screen, &screen_width, &screen_height); if (priv->apps->len) w = (screen_width - priv->apps->len * APP_ICON_PADDING) / priv->apps->len; if (w > APP_ACTOR_WIDTH) w = APP_ACTOR_WIDTH; // add children ClutterContent* canvas = clutter_canvas_new(); g_signal_connect(canvas, "draw", G_CALLBACK(on_icon_background_draw), actor); clutter_canvas_set_size(CLUTTER_CANVAS(canvas), w, h); ClutterActor* bg = clutter_actor_new(); clutter_actor_set_name(bg, "bg"); clutter_actor_set_content(bg, canvas); g_object_unref(canvas); clutter_actor_set_size(bg, w, h); g_object_set(bg, "x-expand", TRUE, "y-expand", TRUE, "x-align", CLUTTER_ACTOR_ALIGN_FILL, "y-align", CLUTTER_ACTOR_ALIGN_FILL, NULL); clutter_actor_add_child(actor, bg); ClutterActor* icon = load_icon_for_window(self, app); if (icon) clutter_actor_add_child(actor, icon); ClutterActor* label = clutter_text_new(); clutter_actor_add_child(actor, label); clutter_text_set_text(CLUTTER_TEXT(label), meta_window_get_title(app)); clutter_text_set_font_name(CLUTTER_TEXT(label), "Sans 10"); ClutterColor clr = {0xff, 0xff, 0xff, 0xff}; clutter_text_set_color(CLUTTER_TEXT(label), &clr); clutter_text_set_ellipsize(CLUTTER_TEXT(label), PANGO_ELLIPSIZE_END); g_object_set(label, "x-align", CLUTTER_ACTOR_ALIGN_CENTER, "y-align", CLUTTER_ACTOR_ALIGN_CENTER, NULL); gfloat pref_width = clutter_actor_get_width(label); if (pref_width > w - 10) { pref_width = w - 10; clutter_actor_set_width(label, pref_width); } /* TODO: @sonald adjust app title position */ clutter_actor_set_position(label, (w - pref_width) / 2, APP_ICON_SIZE + 2); g_debug("%s: size: %d, %d", __func__, w, h); clutter_actor_show(actor); clutter_actor_add_child(priv->top, actor); *x += w; }
G_MODULE_EXPORT int test_scale_main (int argc, char *argv[]) { ClutterActor *stage, *rect; ClutterColor stage_color = { 0x0, 0x0, 0x0, 0xff }; ClutterColor rect_color = { 0xff, 0xff, 0xff, 0x99 }; ClutterColor white_color = { 0xff, 0xff, 0xff, 0xFF }; ClutterTimeline *timeline; ClutterAlpha *alpha; ClutterBehaviour *behave; clutter_init (&argc, &argv); stage = clutter_stage_get_default (); clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); clutter_actor_set_size (stage, 300, 300); rect = clutter_rectangle_new_with_color (&rect_color); clutter_actor_set_size (rect, 100, 100); clutter_actor_set_position (rect, 100, 100); clutter_group_add (CLUTTER_GROUP (stage), rect); label = clutter_text_new_with_text ("Sans 20px", ""); clutter_text_set_color (CLUTTER_TEXT (label), &white_color); clutter_actor_set_position (label, clutter_actor_get_x (rect), clutter_actor_get_y (rect) + clutter_actor_get_height (rect)); clutter_group_add (CLUTTER_GROUP (stage), label); rect_color.alpha = 0xff; rect = clutter_rectangle_new_with_color (&rect_color); clutter_actor_set_position (rect, 100, 100); clutter_actor_set_size (rect, 100, 100); set_next_gravity (rect); clutter_group_add (CLUTTER_GROUP (stage), rect); timeline = clutter_timeline_new (750); alpha = clutter_alpha_new_with_func (timeline, my_ramp_func, NULL, NULL); behave = clutter_behaviour_scale_new (alpha, 0.0, 0.0, /* scale start */ 1.0, 1.0); /* scale end */ clutter_behaviour_apply (behave, rect); clutter_timeline_set_loop (timeline, TRUE); g_signal_connect_swapped (timeline, "completed", G_CALLBACK (set_next_gravity), rect); clutter_timeline_start (timeline); clutter_actor_show_all (stage); clutter_main(); g_object_unref (timeline); g_object_unref (behave); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff }; ClutterColor actor_color = { 0xff, 0xff, 0xcc, 0xff }; clutter_init (&argc, &argv); /* Get the stage and set its size and color: */ ClutterActor *stage = clutter_stage_get_default (); clutter_actor_set_size (stage, 800, 200); clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color); /* Add a non-editable text actor to the stage: */ ClutterActor *text = clutter_text_new (); /* Setup text properties */ clutter_text_set_color (CLUTTER_TEXT (text), &actor_color); clutter_text_set_text (CLUTTER_TEXT (text), "Non-editable text: Wizard imps and sweat sock pimps, interstellar mongrel nymphs."); clutter_text_set_font_name (CLUTTER_TEXT (text), "Sans 12"); clutter_text_set_editable (CLUTTER_TEXT (text), FALSE); clutter_text_set_line_wrap (CLUTTER_TEXT (text), FALSE); /* Discover the preferred height and use that height: */ float min_height = 0; float natural_height = 0; clutter_actor_get_preferred_height (text, 750, &min_height, &natural_height); clutter_actor_set_size (text, 750, natural_height); clutter_actor_set_position (text, 5, 5); clutter_container_add_actor (CLUTTER_CONTAINER (stage), text); clutter_actor_show (text); /* Add a multi-line editable text actor to the stage: */ text = clutter_text_new (); /* Setup text properties */ clutter_text_set_color (CLUTTER_TEXT (text), &actor_color); clutter_text_set_text (CLUTTER_TEXT (text), "Editable text: And as I sat there brooding on the old, unknown world, I thought of " "Gatsby's wonder when he first picked out the green light at the end of " "Daisy's dock. He had come a long way to this blue lawn and his dream " "must have seemed so close that he could hardly fail to grasp it. He did " "not know that it was already behind him, somewhere back in that vast " "obscurity beyond the city, where the dark fields of the republic rolled " "on under the night."); clutter_text_set_font_name (CLUTTER_TEXT (text), "Sans 12"); clutter_text_set_editable (CLUTTER_TEXT (text), TRUE); clutter_text_set_line_wrap (CLUTTER_TEXT (text), TRUE); /* Discover the preferred height and use that height: */ min_height = 0; natural_height = 0; clutter_actor_get_preferred_height (text, 750, &min_height, &natural_height); clutter_actor_set_size (text, 750, natural_height); clutter_actor_set_position (text, 5, 50); clutter_container_add_actor (CLUTTER_CONTAINER (stage), text); clutter_actor_show (text); /* Set focus to handle key presses on the stage: */ clutter_stage_set_key_focus (CLUTTER_STAGE (stage), text); /* Show the stage: */ clutter_actor_show (stage); /* Start the main loop, so we can respond to events: */ clutter_main (); return EXIT_SUCCESS; }
static void set_up_stage (CalibArea *calib_area, ClutterActor *stage) { ClutterPoint anchor; ClutterColor color; ClutterContent *success_content; gfloat height; gchar *markup; calib_area->stage = stage; calib_area->action_layer = clutter_actor_new (); calib_area->clock = cc_clock_actor_new (); calib_area->target = cc_target_actor_new (); calib_area->text_title_holder = clutter_actor_new (); calib_area->helper_text_title = clutter_text_new (); calib_area->text_body_holder = clutter_actor_new (); calib_area->helper_text_body = clutter_text_new (); calib_area->error_text = clutter_text_new (); calib_area->success_image = clutter_actor_new (); clutter_stage_set_use_alpha (CLUTTER_STAGE (stage), TRUE); clutter_actor_hide (calib_area->target); /* bind the action layer's geometry to the stage's */ clutter_actor_add_constraint (calib_area->action_layer, clutter_bind_constraint_new (stage, CLUTTER_BIND_SIZE, 0)); clutter_actor_add_child (stage, calib_area->action_layer); g_signal_connect (stage, "allocation-changed", G_CALLBACK (on_allocation_changed), calib_area); clutter_color_from_string (&color, "#000"); color.alpha = WINDOW_OPACITY * 255; clutter_actor_set_background_color (stage, &color); clutter_actor_add_child (calib_area->action_layer, calib_area->clock); clutter_actor_add_constraint (calib_area->clock, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5)); clutter_actor_add_child (calib_area->action_layer, calib_area->target); /* set the helper text */ anchor.x = 0; g_object_set (calib_area->text_title_holder, "pivot-point", &anchor, NULL); clutter_actor_add_child (calib_area->action_layer, calib_area->text_title_holder); clutter_actor_add_child (calib_area->text_title_holder, calib_area->helper_text_title); height = clutter_actor_get_height (calib_area->clock); clutter_actor_add_constraint (calib_area->text_title_holder, clutter_bind_constraint_new (calib_area->clock, CLUTTER_BIND_Y, height * 1.5)); clutter_actor_add_constraint (calib_area->text_title_holder, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, .5)); clutter_text_set_line_alignment (CLUTTER_TEXT (calib_area->helper_text_title), PANGO_ALIGN_CENTER); color.red = COLOR_GRAY; color.green = COLOR_GRAY; color.blue = COLOR_GRAY; color.alpha = 255; markup = g_strdup_printf ("<big><b>%s</b></big>", _(HELP_TEXT_TITLE)); clutter_text_set_markup (CLUTTER_TEXT (calib_area->helper_text_title), markup); clutter_text_set_color (CLUTTER_TEXT (calib_area->helper_text_title), &color); g_free (markup); g_object_set (calib_area->text_body_holder, "pivot-point", &anchor, NULL); clutter_actor_add_child (calib_area->action_layer, calib_area->text_body_holder); clutter_actor_add_child (calib_area->text_body_holder, calib_area->helper_text_body); height = clutter_actor_get_height (calib_area->helper_text_title); clutter_actor_add_constraint (calib_area->text_body_holder, clutter_bind_constraint_new (calib_area->text_title_holder, CLUTTER_BIND_Y, height * 1.2)); clutter_actor_add_constraint (calib_area->text_body_holder, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, .5)); clutter_text_set_line_alignment (CLUTTER_TEXT (calib_area->helper_text_body), PANGO_ALIGN_CENTER); markup = g_strdup_printf ("<span foreground=\"white\"><big>%s</big></span>", _(HELP_TEXT_MAIN)); clutter_text_set_markup (CLUTTER_TEXT (calib_area->helper_text_body), markup); g_free (markup); /* set the error text */ g_object_set (calib_area->error_text, "pivot-point", &anchor, NULL); clutter_actor_add_child (calib_area->action_layer, calib_area->error_text); height = clutter_actor_get_height (calib_area->helper_text_body); clutter_actor_add_constraint (calib_area->error_text, clutter_bind_constraint_new (calib_area->text_title_holder, CLUTTER_BIND_Y, height * 3)); clutter_actor_add_constraint (calib_area->error_text, clutter_align_constraint_new (stage, CLUTTER_ALIGN_X_AXIS, .5)); clutter_text_set_line_alignment (CLUTTER_TEXT (calib_area->error_text), PANGO_ALIGN_CENTER); markup = g_strdup_printf ("<span foreground=\"white\"><big>" "<b>%s</b></big></span>", ERROR_MESSAGE); clutter_text_set_markup (CLUTTER_TEXT (calib_area->error_text), markup); g_free (markup); clutter_actor_hide (calib_area->error_text); /* configure success image */ success_content = clutter_image_new (); clutter_actor_set_content (calib_area->success_image, success_content); g_object_unref (success_content); clutter_actor_add_child (stage, calib_area->success_image); clutter_actor_add_constraint (calib_area->success_image, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, .5)); /* animate clock */ calib_area->clock_timeline = clutter_property_transition_new ("angle"); clutter_timeline_set_progress_mode (CLUTTER_TIMELINE (calib_area->clock_timeline), CLUTTER_LINEAR); clutter_timeline_set_duration (CLUTTER_TIMELINE (calib_area->clock_timeline), MAX_TIME); clutter_transition_set_animatable (calib_area->clock_timeline, CLUTTER_ANIMATABLE (calib_area->clock)); clutter_transition_set_from (calib_area->clock_timeline, G_TYPE_FLOAT, .0); clutter_transition_set_to (calib_area->clock_timeline, G_TYPE_FLOAT, 360.0); clutter_timeline_set_repeat_count (CLUTTER_TIMELINE (calib_area->clock_timeline), -1); clutter_timeline_start (CLUTTER_TIMELINE (calib_area->clock_timeline)); g_signal_connect (CLUTTER_TIMELINE (calib_area->clock_timeline), "completed", G_CALLBACK (on_timeout), calib_area); g_signal_connect (stage, "button-press-event", G_CALLBACK (on_button_press_event), calib_area); g_signal_connect (stage, "key-release-event", G_CALLBACK (on_key_release_event), calib_area); }
void opt_show_set_bullet_color (OptShow *show, ClutterColor *col) { clutter_text_set_color (CLUTTER_TEXT(show->priv->bullet_texture), col); }
G_MODULE_EXPORT int test_unproject_main (int argc, char *argv[]) { gchar *txt; ClutterActor *rect, *stage, *label0; int i, rotate_x = 0, rotate_y = 60, rotate_z = 0; ClutterColor stage_clr = { 0x0, 0x0, 0x0, 0xff }, white = { 0xff, 0xff, 0xff, 0xff }, blue = { 0x0, 0xff, 0xff, 0xff }; for (i = 0; i < argc; ++i) { if (!strncmp (argv[i], "--rotate-x", 10)) { rotate_x = atoi (argv[i] + 11); } else if (!strncmp (argv[i], "--rotate-y", 10)) { rotate_y = atoi (argv[i] + 11); } else if (!strncmp (argv[i], "--rotate-z", 10)) { rotate_z = atoi (argv[i] + 11); } else if (!strncmp (argv[i], "--help", 6)) { g_print ("%s [--rotage-x=degrees] " "[--rotage-y=degrees] " "[--rotage-z=degrees]\n", argv[0]); return EXIT_FAILURE; } } if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return 1; stage = clutter_stage_get_default (); clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_clr); clutter_actor_set_size (stage, 640, 480); rect = clutter_rectangle_new_with_color (&white); clutter_actor_set_size (rect, RECT_W, RECT_H); clutter_actor_set_position (rect, RECT_L, RECT_T); clutter_actor_set_rotation (rect, CLUTTER_X_AXIS, rotate_x, 0, 0, 0); clutter_actor_set_rotation (rect, CLUTTER_Y_AXIS, rotate_y, 0, 0, 0); clutter_actor_set_rotation (rect, CLUTTER_Z_AXIS, rotate_z, 0, 0, 0); clutter_container_add_actor (CLUTTER_CONTAINER (stage), rect); test_rectangle = rect; txt = g_strdup_printf ("Rectangle: L %d, R %d, T %d, B %d\n" "Rotation : x %d, y %d, z %d", RECT_L, RECT_L + RECT_W, RECT_T, RECT_T + RECT_H, rotate_x, rotate_y, rotate_z); label0 = clutter_text_new_with_text ("Mono 8pt", txt); clutter_text_set_color (CLUTTER_TEXT (label0), &white); clutter_actor_set_position (label0, 10, 10); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label0); g_free (txt); label = clutter_text_new_with_text ("Mono 8pt", "Click around!"); clutter_text_set_color (CLUTTER_TEXT (label), &blue); clutter_actor_set_position (label, 10, 50); clutter_container_add_actor (CLUTTER_CONTAINER (stage), label); clutter_actor_show_all (stage); g_signal_connect (stage, "event", G_CALLBACK (on_event), NULL); clutter_main(); test_rectangle = NULL; label = NULL; return EXIT_SUCCESS; }
G_MODULE_EXPORT gint test_text_main (gint argc, gchar **argv) { ClutterActor *stage; ClutterActor *text, *text2; ClutterColor text_color = { 0x33, 0xff, 0x33, 0xff }; ClutterColor cursor_color = { 0xff, 0x33, 0x33, 0xff }; ClutterTextBuffer *buffer; if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return 1; stage = clutter_stage_new (); clutter_stage_set_title (CLUTTER_STAGE (stage), "Text Editing"); clutter_actor_set_background_color (stage, CLUTTER_COLOR_Black); g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL); buffer = clutter_text_buffer_new_with_text ("·", -1); text = clutter_text_new_with_buffer (buffer); clutter_text_set_font_name (CLUTTER_TEXT (text), FONT); clutter_text_set_color (CLUTTER_TEXT (text), &text_color); clutter_container_add (CLUTTER_CONTAINER (stage), text, NULL); clutter_actor_set_position (text, 40, 30); clutter_actor_set_width (text, 1024); clutter_text_set_line_wrap (CLUTTER_TEXT (text), TRUE); clutter_actor_set_reactive (text, TRUE); clutter_stage_set_key_focus (CLUTTER_STAGE (stage), text); clutter_text_set_editable (CLUTTER_TEXT (text), TRUE); clutter_text_set_selectable (CLUTTER_TEXT (text), TRUE); clutter_text_set_cursor_color (CLUTTER_TEXT (text), &cursor_color); clutter_text_set_selected_text_color (CLUTTER_TEXT (text), CLUTTER_COLOR_Blue); text2 = clutter_text_new_with_buffer (buffer); clutter_text_set_color (CLUTTER_TEXT (text2), &text_color); clutter_container_add (CLUTTER_CONTAINER (stage), text2, NULL); clutter_actor_set_position (text2, 40, 300); clutter_actor_set_width (text2, 1024); clutter_text_set_line_wrap (CLUTTER_TEXT (text2), TRUE); clutter_actor_set_reactive (text2, TRUE); clutter_text_set_editable (CLUTTER_TEXT (text2), TRUE); clutter_text_set_selectable (CLUTTER_TEXT (text2), TRUE); clutter_text_set_cursor_color (CLUTTER_TEXT (text2), &cursor_color); clutter_text_set_selected_text_color (CLUTTER_TEXT (text2), CLUTTER_COLOR_Green); if (argv[1]) { GError *error = NULL; gchar *utf8; g_file_get_contents (argv[1], &utf8, NULL, &error); if (error) { utf8 = g_strconcat ("Unable to open '", argv[1], "':\n", error->message, NULL); g_error_free (error); } clutter_text_set_text (CLUTTER_TEXT (text), utf8); } else clutter_text_set_text (CLUTTER_TEXT (text), runes); clutter_actor_set_size (stage, 1024, 768); clutter_actor_show (stage); clutter_main (); return EXIT_SUCCESS; }