/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/

// include ---------------------------------------------------------------
#include <svx/svxids.hrc>
#include <svx/dialogs.hrc>
#include "fontwork.hrc"
#include "helpid.hrc"

// pragma ----------------------------------------------------------------
#define REDUCED_WIDTH			6
#define REMOVED_VS_FORMS_HEIGHT	(30 + 6)

// RID_SVXDLG_FONTWORK ---------------------------------------------------
DockingWindow RID_SVXDLG_FONTWORK
{
	HelpId = CMD_SID_FONTWORK ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Hide = TRUE ;
	Pos = MAP_APPFONT ( 0, 0 ) ;
	Size = MAP_APPFONT ( 89 - REDUCED_WIDTH, 193 - REMOVED_VS_FORMS_HEIGHT ) ;
	Text [ en-US ] = "Fontwork" ;
	Moveable = TRUE ;
	Zoomable = TRUE ;
	Closeable = TRUE ;
	Dockable = TRUE ;
	EnableResizing = TRUE ;
	ToolBox TBX_STYLE
	{
		SVLook = TRUE ;
		Pos = MAP_APPFONT ( 6, 41 - REMOVED_VS_FORMS_HEIGHT ) ;
		ItemList =
		{
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				Identifier = TBI_STYLE_OFF ;
				HelpId = HID_FONTWORK_TBI_STYLE_OFF ;
				Text [ en-US ] = "Off" ;
			};
			ToolBoxItem
			{
				Type = TOOLBOXITEM_SEPARATOR ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_STYLE_ROTATE ;
				HelpId = HID_FONTWORK_TBI_STYLE_ROTATE ;
				Text [ en-US ] = "Rotate" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_STYLE_UPRIGHT ;
				HelpId = HID_FONTWORK_TBI_STYLE_UPRIGHT ;
				Text [ en-US ] = "Upright" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_STYLE_SLANTX ;
				HelpId = HID_FONTWORK_TBI_STYLE_SLANTX ;
				Text [ en-US ] = "Slant Horizontal" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_STYLE_SLANTY ;
				HelpId = HID_FONTWORK_TBI_STYLE_SLANTY ;
				Text [ en-US ] = "Slant Vertical" ;
			};
		};
	};
	ToolBox TBX_ADJUST
	{
		SVLook = TRUE ;
		Pos = MAP_APPFONT ( 6, 63 - REMOVED_VS_FORMS_HEIGHT ) ;
		ItemList =
		{
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				Checkable = TRUE ;
				Identifier = TBI_ADJUST_MIRROR ;
				HelpId = HID_FONTWORK_TBI_ADJUST_MIRROR ;
				Text [ en-US ] = "Orientation" ;
			};
			ToolBoxItem
			{
				Type = TOOLBOXITEM_SEPARATOR ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_ADJUST_LEFT ;
				HelpId = HID_FONTWORK_TBI_ADJUST_LEFT ;
				Text [ en-US ] = "Align Left" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_ADJUST_CENTER ;
				HelpId = HID_FONTWORK_TBI_ADJUST_CENTER ;
				Text [ en-US ] = "Center" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_ADJUST_RIGHT ;
				HelpId = HID_FONTWORK_TBI_ADJUST_RIGHT ;
				Text [ en-US ] = "Align Right" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_ADJUST_AUTOSIZE ;
				HelpId = HID_FONTWORK_TBI_ADJUST_AUTOSIZE ;
				Text [ en-US ] = "AutoSize Text" ;
			};
		};
	};
	FixedImage FB_DISTANCE
	{
		Pos = MAP_APPFONT ( 10, 84 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 14, 15 ) ;
	};
	MetricField MTR_FLD_DISTANCE
	{
		HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_DISTANCE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 29, 85 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 48, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = -5000000 ;
		Maximum = 5000000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		First = -5000000 ;
		Last = 5000000 ;
		SpinSize = 50 ;
		QuickHelpText [ en-US ] = "Distance" ;

	};
	FixedImage FB_TEXTSTART
	{
		Pos = MAP_APPFONT ( 10, 99 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 14, 15 ) ;
	};
	MetricField MTR_FLD_TEXTSTART
	{
		HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_TEXTSTART" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 29, 100 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 48, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Maximum = 5000000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		Last = 5000000 ;
		SpinSize = 50 ;
		QuickHelpText [ en-US ] = "Indent" ;
	};
	ToolBox TBX_SHADOW
	{
		SVLook = TRUE ;
		Pos = MAP_APPFONT ( 6, 122 - REMOVED_VS_FORMS_HEIGHT ) ;
		ItemList =
		{
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				Checkable = TRUE ;
				Identifier = TBI_SHOWFORM ;
				HelpId = HID_FONTWORK_TBI_SHOWFORM ;
				Text [ en-US ] = "Contour" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				Checkable = TRUE ;
				Identifier = TBI_OUTLINE ;
				HelpId = HID_FONTWORK_TBI_OUTLINE ;
				Text [ en-US ] = "Text Contour" ;
			};
			ToolBoxItem
			{
				Type = TOOLBOXITEM_SEPARATOR ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_SHADOW_OFF ;
				HelpId = HID_FONTWORK_TBI_SHADOW_OFF ;
				Text [ en-US ] = "No Shadow" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_SHADOW_NORMAL ;
				HelpId = HID_FONTWORK_TBI_SHADOW_NORMAL ;
				Text [ en-US ] = "Vertical" ;
			};
			ToolBoxItem
			{
				AutoCheck = TRUE ;
				RadioCheck = TRUE ;
				Identifier = TBI_SHADOW_SLANT ;
				HelpId = HID_FONTWORK_TBI_SHADOW_SLANT ;
				Text [ en-US ] = "Slant" ;
			};
		};
	};
	FixedImage FB_SHADOW_X
	{
		Pos = MAP_APPFONT ( 10, 143 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 14, 15 ) ;
	};
	MetricField MTR_FLD_SHADOW_X
	{
		HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_SHADOW_X" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 29, 144 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 48, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = -5000000 ;
		Maximum = 5000000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		CustomUnitText [ en-US ] = " degrees" ;
		First = -5000000 ;
		Last = 5000000 ;
		SpinSize = 50 ;
		QuickHelpText [ en-US ] = "Distance X" ;
	};
	FixedImage FB_SHADOW_Y
	{
		Pos = MAP_APPFONT ( 10, 158 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 14, 15 ) ;
	};
	MetricField MTR_FLD_SHADOW_Y
	{
		HelpID = "svx:MetricField:RID_SVXDLG_FONTWORK:MTR_FLD_SHADOW_Y" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 29, 159 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 48, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Maximum = 5000000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		Last = 5000000 ;
		SpinSize = 50 ;
		QuickHelpText [ en-US ] = "Distance Y" ;
	};
	ListBox CLB_SHADOW_COLOR
	{
		HelpID = "svx:ListBox:RID_SVXDLG_FONTWORK:CLB_SHADOW_COLOR" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 174 - REMOVED_VS_FORMS_HEIGHT ) ;
		Size = MAP_APPFONT ( 71, 60 ) ;
		DropDown = TRUE ;
		QuickHelpText [ en-US ] = "Shadow Color" ;
		Text = "-" ;
	};

#define FONTWORK_IDLIST				\
		IdList =					\
		{							\
			TBI_STYLE_OFF ;			\
			TBI_STYLE_ROTATE ;		\
			TBI_STYLE_UPRIGHT ;		\
			TBI_STYLE_SLANTX ;		\
			TBI_STYLE_SLANTY ;		\
			TBI_ADJUST_MIRROR ;		\
			TBI_ADJUST_LEFT ;		\
			TBI_ADJUST_CENTER ;		\
			TBI_ADJUST_RIGHT ;		\
			TBI_ADJUST_AUTOSIZE ;	\
			TBI_SHOWFORM ;			\
			TBI_OUTLINE ;			\
			TBI_SHADOW_OFF ;		\
			TBI_SHADOW_NORMAL ;		\
			TBI_SHADOW_SLANT ;		\
			TBI_SHADOW_XDIST ;		\
			TBI_SHADOW_YDIST ;		\
			TBI_SHADOW_ANGLE ;		\
			TBI_SHADOW_SIZE ;		\
			TBI_DISTANCE ;			\
			TBI_TEXTSTART ;			\
		};							\
		IdCount = { 21 ; } ;

	#define IMAGE_STDBTN_COLOR Color { Red = 0xff00; Green = 0x0000; Blue = 0xff00; }

	ImageList IL_FONTWORK
	{
		Prefix = "fw" ;
		MaskColor = IMAGE_STDBTN_COLOR ;
		FONTWORK_IDLIST
	};
	ImageList ILH_FONTWORK
	{
		Prefix = "fwh" ;
		MaskColor = IMAGE_STDBTN_COLOR ;
		FONTWORK_IDLIST
	};
};

// ********************************************************************** EOF
