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);