diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c index 01c98ec26e9795ae9938a5c5dbcdafc292fabcde..46d0a3cfdc744b8476012992b4814534c8761002 100644 --- a/app/actions/layers-commands.c +++ b/app/actions/layers-commands.c @@ -1241,6 +1241,8 @@ layers_text_along_path_cmd_callback (GimpAction *action, case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: { GimpStroke *stroke = NULL; diff --git a/app/actions/text-editor-actions.c b/app/actions/text-editor-actions.c index 8e886c2ba906a4000834a3e903a477af433c632b..3b0746ed25056ccdfe4bc5baf468bf5cef944a3e 100644 --- a/app/actions/text-editor-actions.c +++ b/app/actions/text-editor-actions.c @@ -86,6 +86,18 @@ static const GimpRadioActionEntry text_editor_direction_actions[] = NC_("text-editor-action", "Vertical, left to right (upright orientation)"), GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT, NULL }, + + { "text-editor-direction-sideways-rl", GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_RL, + NC_("text-editor-action", "SIDEWAYS-RL"), NULL, { NULL }, + NC_("text-editor-action", "Sideways, 90° clockwise, right to left"), + GIMP_TEXT_DIRECTION_SIDEWAYS_RL, + NULL }, + + { "text-editor-direction-sideways-lr", GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_LR, + NC_("text-editor-action", "SIDEWAYS-LR"), NULL, { NULL }, + NC_("text-editor-action", "Sideways, 90° counterclockwise, left to right"), + GIMP_TEXT_DIRECTION_SIDEWAYS_LR, + NULL }, }; @@ -138,6 +150,14 @@ text_editor_actions_update (GimpActionGroup *group, case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: SET_ACTIVE ("text-editor-direction-ttb-ltr-upright", TRUE); break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + SET_ACTIVE ("text-editor-direction-sideways-rl", TRUE); + break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: + SET_ACTIVE ("text-editor-direction-sideways-lr", TRUE); + break; } #undef SET_ACTIVE diff --git a/app/actions/text-tool-actions.c b/app/actions/text-tool-actions.c index 38c9df50ff3777951b476c0cb2899cd148f8ddc5..8268ab14c1b3fd5b718e5af2e434f42a3893d80f 100644 --- a/app/actions/text-tool-actions.c +++ b/app/actions/text-tool-actions.c @@ -137,7 +137,17 @@ static const GimpRadioActionEntry text_tool_direction_actions[] = { "text-tool-direction-ttb-ltr-upright", GIMP_ICON_FORMAT_TEXT_DIRECTION_TTB_LTR_UPRIGHT, NC_("text-tool-action", "Vertical, left to right (upright orientation)"), NULL, { NULL }, NULL, GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT, - GIMP_HELP_TEXT_TOOL_DIRECTION_TTB_LTR_UP } + GIMP_HELP_TEXT_TOOL_DIRECTION_TTB_LTR_UP }, + + { "text-tool-direction-sideways-rl", GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_RL, + NC_("text-tool-action", "Sideways, 90° clockwise, right to left"), NULL, { NULL }, NULL, + GIMP_TEXT_DIRECTION_SIDEWAYS_RL, + GIMP_HELP_TEXT_TOOL_DIRECTION_SIDEWAYS_RL }, + + { "text-tool-direction-sideways-lr", GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_LR, + NC_("text-tool-action", "Sideways, 90° counterclockwise, left to right"), NULL, { NULL }, NULL, + GIMP_TEXT_DIRECTION_SIDEWAYS_LR, + GIMP_HELP_TEXT_TOOL_DIRECTION_SIDEWAYS_LR } }; diff --git a/app/display/gimpcanvastextcursor.c b/app/display/gimpcanvastextcursor.c index aaa8c5fb50f1573cbcbe3610d70eef5771c069ee..484755334a8a627220d0d5d355cb5ec1100a7d5a 100644 --- a/app/display/gimpcanvastextcursor.c +++ b/app/display/gimpcanvastextcursor.c @@ -238,10 +238,12 @@ gimp_canvas_text_cursor_transform (GimpCanvasItem *item, break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: *x = *x - *w; break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: *y = *y + *h; break; } @@ -262,11 +264,13 @@ gimp_canvas_text_cursor_transform (GimpCanvasItem *item, break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: *w = ceil (*w) - 1.0; *h = 0; break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: *w = ceil (*w) - 1.0; *h = 0; break; @@ -307,6 +311,8 @@ gimp_canvas_text_cursor_draw (GimpCanvasItem *item, case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: cairo_move_to (cr, x, y); cairo_line_to (cr, x + w, y); @@ -354,6 +360,8 @@ gimp_canvas_text_cursor_get_extents (GimpCanvasItem *item) case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: rectangle.x = floor (x - 1.5); rectangle.y = floor (y - 4.5); rectangle.width = ceil (w + 3.0); diff --git a/app/text/gimptextlayer.c b/app/text/gimptextlayer.c index cd2017e92f446ef40e483ef54465280d6eb90035..5f6a7599fab450f4a9b88e8f53d16c60f8477c4f 100644 --- a/app/text/gimptextlayer.c +++ b/app/text/gimptextlayer.c @@ -660,10 +660,12 @@ gimp_text_layer_text_changed (GimpTextLayer *layer) case GIMP_TEXT_DIRECTION_RTL: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: switch (new_base_dir) { case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: gimp_item_translate (item, -new_width, 0, FALSE); break; @@ -671,30 +673,35 @@ gimp_text_layer_text_changed (GimpTextLayer *layer) case GIMP_TEXT_DIRECTION_RTL: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: break; } break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: switch (new_base_dir) { case GIMP_TEXT_DIRECTION_LTR: case GIMP_TEXT_DIRECTION_RTL: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: gimp_item_translate (item, old_width, 0, FALSE); break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: break; } break; } } else if ((new_base_dir == GIMP_TEXT_DIRECTION_TTB_RTL || - new_base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT)) + new_base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT || + new_base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL)) { if (old_width != new_width) gimp_item_translate (item, old_width - new_width, 0, FALSE); diff --git a/app/text/gimptextlayout-render.c b/app/text/gimptextlayout-render.c index f3605e33613e51e31f2388e50741931333829465..c3e1de8268c3b18eb768e0aa5d2c5b36fbfd6f22 100644 --- a/app/text/gimptextlayout-render.c +++ b/app/text/gimptextlayout-render.c @@ -51,7 +51,8 @@ gimp_text_layout_render (GimpTextLayout *layout, cairo_transform (cr, &trafo); if (base_dir == GIMP_TEXT_DIRECTION_TTB_RTL || - base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT) + base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT || + base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL) { gimp_text_layout_get_size (layout, &width, &height); cairo_translate (cr, width, 0); @@ -59,7 +60,8 @@ gimp_text_layout_render (GimpTextLayout *layout, } if (base_dir == GIMP_TEXT_DIRECTION_TTB_LTR || - base_dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT) + base_dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT || + base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR) { gimp_text_layout_get_size (layout, &width, &height); cairo_translate (cr, 0, height); diff --git a/app/text/gimptextlayout.c b/app/text/gimptextlayout.c index d73cff10c0ecb40360740c46caedf492c75f9803..97264a48b14a067fec0cb3f4bccf2970de2b9833 100644 --- a/app/text/gimptextlayout.c +++ b/app/text/gimptextlayout.c @@ -192,7 +192,9 @@ gimp_text_layout_new (GimpText *text, case GIMP_TEXT_BOX_DYNAMIC: break; case GIMP_TEXT_BOX_FIXED: - if (! PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context))) + if (! (PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context)) || + text->base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL || + text->base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR)) pango_layout_set_width (layout->layout, pango_units_from_double (gimp_units_to_pixels (text->box_width, @@ -772,7 +774,9 @@ gimp_text_layout_position (GimpTextLayout *layout) (base_dir == GIMP_TEXT_DIRECTION_TTB_RTL && align == PANGO_ALIGN_RIGHT) || (base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT && align == PANGO_ALIGN_RIGHT) || (base_dir == GIMP_TEXT_DIRECTION_TTB_LTR && align == PANGO_ALIGN_LEFT) || - (base_dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT && align == PANGO_ALIGN_LEFT)) + (base_dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT && align == PANGO_ALIGN_LEFT) || + (base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL && align == PANGO_ALIGN_RIGHT) || + (base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR && align == PANGO_ALIGN_RIGHT)) { layout->extents.x += PANGO_PIXELS (pango_layout_get_width (layout->layout)) - width; @@ -798,7 +802,9 @@ gimp_text_layout_position (GimpTextLayout *layout) layout->extents.height += 2 * border; } - if (PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context))) + if (PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context)) || + layout->text->base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL || + layout->text->base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR) { gint temp; @@ -918,6 +924,18 @@ gimp_text_get_pango_context (GimpText *text, pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); pango_context_set_base_gravity (context, PANGO_GRAVITY_WEST); break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + pango_context_set_base_dir (context, PANGO_DIRECTION_LTR); + pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); + pango_context_set_base_gravity (context, PANGO_GRAVITY_SOUTH); + break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: + pango_context_set_base_dir (context, PANGO_DIRECTION_LTR); + pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); + pango_context_set_base_gravity (context, PANGO_GRAVITY_SOUTH); + break; } return context; diff --git a/app/tools/gimptexttool-editor.c b/app/tools/gimptexttool-editor.c index d596ca57e9d67f5f4d080e3703f870795074f011..fd9c4430ded230ba497587f2bacd1610c1d4636b 100644 --- a/app/tools/gimptexttool-editor.c +++ b/app/tools/gimptexttool-editor.c @@ -688,6 +688,7 @@ gimp_text_tool_editor_get_cursor_rect (GimpTextTool *text_tool, break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: { gint temp, width, height; @@ -704,6 +705,7 @@ gimp_text_tool_editor_get_cursor_rect (GimpTextTool *text_tool, break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: { gint temp, width, height; @@ -1802,12 +1804,14 @@ gimp_text_tool_fix_position (GimpTextTool *text_tool, break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: temp = width - *x; *x = *y; *y = temp; break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: temp = *x; *x = height - *y; *y = temp; @@ -1827,6 +1831,7 @@ gimp_text_tool_convert_gdkkeyevent (GimpTextTool *text_tool, case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: #ifdef _WIN32 switch (kevent->keyval) { @@ -1871,6 +1876,7 @@ gimp_text_tool_convert_gdkkeyevent (GimpTextTool *text_tool, break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: #ifdef _WIN32 switch (kevent->keyval) { diff --git a/app/tools/gimptexttool.c b/app/tools/gimptexttool.c index ac92aafcd5f6feec14591a5e482323d617938f95..94866ffd41dbf846ba011eaed1363e83484797ad 100644 --- a/app/tools/gimptexttool.c +++ b/app/tools/gimptexttool.c @@ -986,6 +986,7 @@ gimp_text_tool_draw_selection (GimpDrawTool *draw_tool) break; case GIMP_TEXT_DIRECTION_TTB_RTL: case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: rect.y = offset_x - rect.y + width; rect.x = offset_y + rect.x; gimp_draw_tool_add_rectangle (draw_tool, FALSE, @@ -994,6 +995,7 @@ gimp_text_tool_draw_selection (GimpDrawTool *draw_tool) break; case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: rect.y = offset_x + rect.y; rect.x = offset_y - rect.x + height; gimp_draw_tool_add_rectangle (draw_tool, FALSE, @@ -1669,7 +1671,8 @@ gimp_text_tool_create_layer (GimpTextTool *text_tool, { if (text_tool->text && (text_tool->text->base_dir == GIMP_TEXT_DIRECTION_TTB_RTL || - text_tool->text->base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT)) + text_tool->text->base_dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT || + text_tool->text->base_dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL)) { x1 -= gimp_item_get_width (GIMP_ITEM (layer)); } @@ -2429,6 +2432,8 @@ gimp_text_tool_create_path_warped (GimpTextTool *text_tool, case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: { GimpStroke *stroke = NULL; diff --git a/app/widgets/gimphelp-ids.h b/app/widgets/gimphelp-ids.h index 57555f433f3851d09c8f2b19a6cabeb2c86689e4..3548d58b184365e20c2f455f3cdce90c63c4fb10 100644 --- a/app/widgets/gimphelp-ids.h +++ b/app/widgets/gimphelp-ids.h @@ -328,6 +328,8 @@ #define GIMP_HELP_TEXT_TOOL_DIRECTION_TTB_RTL_UP "gimp-text-tool-direction-ttb-rtl-upright" #define GIMP_HELP_TEXT_TOOL_DIRECTION_TTB_LTR "gimp-text-tool-direction-ttb-ltr" #define GIMP_HELP_TEXT_TOOL_DIRECTION_TTB_LTR_UP "gimp-text-tool-direction-ttb-ltr-upright" +#define GIMP_HELP_TEXT_TOOL_DIRECTION_SIDEWAYS_RL "gimp-text-tool-direction-sideways-rl" +#define GIMP_HELP_TEXT_TOOL_DIRECTION_SIDEWAYS_LR "gimp-text-tool-direction-sideways-lr" #define GIMP_HELP_TOOL_AIRBRUSH "gimp-tool-airbrush" #define GIMP_HELP_TOOL_ALIGN "gimp-tool-align" diff --git a/app/widgets/gimptexteditor.c b/app/widgets/gimptexteditor.c index d21984f528e28cf6e0cd716ff6f60686e8583980..6c5c297ea2d322652428e5d50129b050dd43c47c 100644 --- a/app/widgets/gimptexteditor.c +++ b/app/widgets/gimptexteditor.c @@ -223,6 +223,8 @@ gimp_text_editor_new (const gchar *title, case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: gtk_widget_set_direction (editor->view, GTK_TEXT_DIR_LTR); break; case GIMP_TEXT_DIRECTION_RTL: @@ -299,6 +301,8 @@ gimp_text_editor_set_direction (GimpTextEditor *editor, case GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: case GIMP_TEXT_DIRECTION_TTB_LTR: case GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: gtk_widget_set_direction (editor->view, GTK_TEXT_DIR_LTR); break; case GIMP_TEXT_DIRECTION_RTL: diff --git a/gimp-data b/gimp-data index 9218ec59701770715a2755d8ba9f8c0e588fb4bd..ea3e7c3d385ee3dfb8703fd71f35aa64e2ff5503 160000 --- a/gimp-data +++ b/gimp-data @@ -1 +1 @@ -Subproject commit 9218ec59701770715a2755d8ba9f8c0e588fb4bd +Subproject commit ea3e7c3d385ee3dfb8703fd71f35aa64e2ff5503 diff --git a/libgimpbase/gimpbaseenums.c b/libgimpbase/gimpbaseenums.c index 47d4b4fa3eeda60be55ff0c36914025d6a60206f..74fab9e8b7f65c613137c1b99a19e431701ae798 100644 --- a/libgimpbase/gimpbaseenums.c +++ b/libgimpbase/gimpbaseenums.c @@ -1693,6 +1693,8 @@ gimp_text_direction_get_type (void) { GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT, "GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT", "ttb-rtl-upright" }, { GIMP_TEXT_DIRECTION_TTB_LTR, "GIMP_TEXT_DIRECTION_TTB_LTR", "ttb-ltr" }, { GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT, "GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT", "ttb-ltr-upright" }, + { GIMP_TEXT_DIRECTION_SIDEWAYS_RL, "GIMP_TEXT_DIRECTION_SIDEWAYS_RL", "sideways-rl" }, + { GIMP_TEXT_DIRECTION_SIDEWAYS_LR, "GIMP_TEXT_DIRECTION_SIDEWAYS_LR", "sideways-lr" }, { 0, NULL, NULL } }; @@ -1704,6 +1706,8 @@ gimp_text_direction_get_type (void) { GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT, NC_("text-direction", "Vertical, right to left (upright orientation)"), NULL }, { GIMP_TEXT_DIRECTION_TTB_LTR, NC_("text-direction", "Vertical, left to right (mixed orientation)"), NULL }, { GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT, NC_("text-direction", "Vertical, left to right (upright orientation)"), NULL }, + { GIMP_TEXT_DIRECTION_SIDEWAYS_RL, NC_("text-direction", "Sideways, 90° clockwise, right to left"), NULL }, + { GIMP_TEXT_DIRECTION_SIDEWAYS_LR, NC_("text-direction", "Sideways, 90° counterclockwise, left to right"), NULL }, { 0, NULL, NULL } }; diff --git a/libgimpbase/gimpbaseenums.h b/libgimpbase/gimpbaseenums.h index 9b2f0c99219db8e1fe3db5f9204aee3a055428bc..cb0df339e3632d61536c22414280888aede8fe31 100644 --- a/libgimpbase/gimpbaseenums.h +++ b/libgimpbase/gimpbaseenums.h @@ -1135,6 +1135,8 @@ typedef enum * @GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT: Upright characters are from top to bottom, Lines are from right to left * @GIMP_TEXT_DIRECTION_TTB_LTR: Characters are from top to bottom, Lines are from left to right * @GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT: Upright characters are from top to bottom, Lines are from left to right + * @GIMP_TEXT_DIRECTION_SIDEWAYS_RL: Characters are rotated 90° clockwise, Lines are from right to left + * @GIMP_TEXT_DIRECTION_SIDEWAYS_LR: Characters are rotated 90° counterclockwise, Lines are from left to right * * Text directions. **/ @@ -1149,7 +1151,9 @@ typedef enum GIMP_TEXT_DIRECTION_TTB_RTL, /*< desc="Vertical, right to left (mixed orientation)" >*/ GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT, /*< desc="Vertical, right to left (upright orientation)" >*/ GIMP_TEXT_DIRECTION_TTB_LTR, /*< desc="Vertical, left to right (mixed orientation)" >*/ - GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT /*< desc="Vertical, left to right (upright orientation)" >*/ + GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT, /*< desc="Vertical, left to right (upright orientation)" >*/ + GIMP_TEXT_DIRECTION_SIDEWAYS_RL, /*< desc="Sideways, 90° clockwise, right to left" >*/ + GIMP_TEXT_DIRECTION_SIDEWAYS_LR /*< desc="Sideways, 90° counterclockwise, left to right" >*/ } GimpTextDirection; diff --git a/libgimpwidgets/gimpicons.h b/libgimpwidgets/gimpicons.h index 1eccb8be22d5117ef624a511a3f4d24c84724c60..3c75abf54127a29b8131dbc1709485f53e954622 100644 --- a/libgimpwidgets/gimpicons.h +++ b/libgimpwidgets/gimpicons.h @@ -237,6 +237,8 @@ G_BEGIN_DECLS #define GIMP_ICON_FORMAT_TEXT_DIRECTION_TTB_RTL_UPRIGHT "gimp-text-dir-ttb-rtl-upright" /* use FDO */ #define GIMP_ICON_FORMAT_TEXT_DIRECTION_TTB_LTR "gimp-text-dir-ttb-ltr" /* use FDO */ #define GIMP_ICON_FORMAT_TEXT_DIRECTION_TTB_LTR_UPRIGHT "gimp-text-dir-ttb-ltr-upright" /* use FDO */ +#define GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_RL "gimp-text-dir-sideways-rl" /* use FDO */ +#define GIMP_ICON_FORMAT_TEXT_DIRECTION_SIDEWAYS_LR "gimp-text-dir-sideways-lr" /* use FDO */ #define GIMP_ICON_FORMAT_TEXT_SPACING_LETTER "gimp-letter-spacing" #define GIMP_ICON_FORMAT_TEXT_SPACING_LINE "gimp-line-spacing" diff --git a/menus/text-editor-toolbar.ui b/menus/text-editor-toolbar.ui index 8f7ec544c32ac2faaf5ace2f40d8fea82b585f69..f0d9f400e3a54f2155d126a15da4a87b81316f8f 100644 --- a/menus/text-editor-toolbar.ui +++ b/menus/text-editor-toolbar.ui @@ -12,5 +12,7 @@ text-editor.text-editor-direction-ttb-rtl-upright text-editor.text-editor-direction-ttb-ltr text-editor.text-editor-direction-ttb-ltr-upright + text-editor.text-editor-direction-sideways-rl + text-editor.text-editor-direction-sideways-lr diff --git a/menus/text-tool-menu.ui b/menus/text-tool-menu.ui index 50bbb3bcd574f57d2f722002f5119e3fbda87af0..f07c0f03781f6d8611b3b4aa0b2abde3b5d55dda 100644 --- a/menus/text-tool-menu.ui +++ b/menus/text-tool-menu.ui @@ -28,6 +28,8 @@ text-tool.text-tool-direction-ttb-rtl-upright text-tool.text-tool-direction-ttb-ltr text-tool.text-tool-direction-ttb-ltr-upright + text-tool.text-tool-direction-sideways-rl + text-tool.text-tool-direction-sideways-lr diff --git a/pdb/enums.pl b/pdb/enums.pl index fc0c5ceefbb3f7740f6b7bb1489289c2c9c520ed..39d7abe7f91d3d8c87fdfe734ec6fc842118342a 100644 --- a/pdb/enums.pl +++ b/pdb/enums.pl @@ -551,13 +551,17 @@ package Gimp::CodeGen::enums; GIMP_TEXT_DIRECTION_TTB_RTL GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT GIMP_TEXT_DIRECTION_TTB_LTR - GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT) ], + GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT + GIMP_TEXT_DIRECTION_SIDEWAYS_RL + GIMP_TEXT_DIRECTION_SIDEWAYS_LR) ], mapping => { GIMP_TEXT_DIRECTION_LTR => '0', GIMP_TEXT_DIRECTION_RTL => '1', GIMP_TEXT_DIRECTION_TTB_RTL => '2', GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT => '3', GIMP_TEXT_DIRECTION_TTB_LTR => '4', - GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT => '5' } + GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT => '5', + GIMP_TEXT_DIRECTION_SIDEWAYS_RL => '6', + GIMP_TEXT_DIRECTION_SIDEWAYS_LR => '7' } }, GimpTextHintStyle => { contig => 1, diff --git a/plug-ins/common/file-pdf-export.c b/plug-ins/common/file-pdf-export.c index 900a8379076add116c07dec911e3cea9f4cdc7f9..b79f5aaa03651d025a20d228723174cee311bc15 100644 --- a/plug-ins/common/file-pdf-export.c +++ b/plug-ins/common/file-pdf-export.c @@ -1702,6 +1702,18 @@ drawText (GimpLayer *layer, pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); pango_context_set_base_gravity (context, PANGO_GRAVITY_WEST); break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_RL: + pango_context_set_base_dir (context, PANGO_DIRECTION_LTR); + pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); + pango_context_set_base_gravity (context, PANGO_GRAVITY_SOUTH); + break; + + case GIMP_TEXT_DIRECTION_SIDEWAYS_LR: + pango_context_set_base_dir (context, PANGO_DIRECTION_LTR); + pango_context_set_gravity_hint (context, PANGO_GRAVITY_HINT_STRONG); + pango_context_set_base_gravity (context, PANGO_GRAVITY_SOUTH); + break; } /* We are done with the context's settings. It's time to create the @@ -1718,7 +1730,9 @@ drawText (GimpLayer *layer, pango_layout_set_font_description (layout, font_description); /* Width */ - if (! PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context))) + if (! (PANGO_GRAVITY_IS_VERTICAL (pango_context_get_base_gravity (context)) || + dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL || + dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR)) pango_layout_set_width (layout, gimp_drawable_get_width (GIMP_DRAWABLE (layer)) * PANGO_SCALE); @@ -1774,14 +1788,16 @@ drawText (GimpLayer *layer, pango_layout_set_text (layout, text, -1); if (dir == GIMP_TEXT_DIRECTION_TTB_RTL || - dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT) + dir == GIMP_TEXT_DIRECTION_TTB_RTL_UPRIGHT || + dir == GIMP_TEXT_DIRECTION_SIDEWAYS_RL) { cairo_translate (cr, gimp_drawable_get_width (GIMP_DRAWABLE (layer)), 0); cairo_rotate (cr, G_PI_2); } if (dir == GIMP_TEXT_DIRECTION_TTB_LTR || - dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT) + dir == GIMP_TEXT_DIRECTION_TTB_LTR_UPRIGHT || + dir == GIMP_TEXT_DIRECTION_SIDEWAYS_LR) { cairo_translate (cr, 0, gimp_drawable_get_height (GIMP_DRAWABLE (layer))); cairo_rotate (cr, -G_PI_2);