/**************************************************************
 *
 * 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 <svx/dialogs.hrc>

// the following defines have to match the (enum values + 1) in svx/swframeposstrings.hxx!
#define STR_LEFT					1
#define STR_RIGHT					2
#define STR_FROMLEFT				3
#define STR_MIR_LEFT				4
#define STR_MIR_RIGHT				5
#define STR_MIR_FROMLEFT			6
#define STR_FRAME					7
#define STR_PRTAREA					8
#define STR_REL_PG_LEFT				9
#define STR_REL_PG_RIGHT			10
#define STR_REL_FRM_LEFT			11
#define STR_REL_FRM_RIGHT			12
#define STR_MIR_REL_PG_LEFT			13
#define STR_MIR_REL_PG_RIGHT		14
#define STR_MIR_REL_FRM_LEFT		15
#define STR_MIR_REL_FRM_RIGHT		16
#define STR_REL_PG_FRAME			17
#define STR_REL_PG_PRTAREA			18
#define STR_REL_BASE				19
#define STR_REL_CHAR				20
#define STR_REL_ROW					21
#define STR_REL_BORDER				22
#define STR_REL_PRTAREA				23
#define STR_FLY_REL_PG_LEFT			24
#define STR_FLY_REL_PG_RIGHT		25
#define STR_FLY_REL_PG_FRAME		26
#define STR_FLY_REL_PG_PRTAREA		27
#define STR_FLY_MIR_REL_PG_LEFT		28
#define STR_FLY_MIR_REL_PG_RIGHT	29
#define STR_TOP						30
#define STR_BOTTOM					31
#define STR_CENTER_HORI				32
#define STR_CENTER_VERT				33
#define STR_FROMTOP					34
#define STR_FROMBOTTOM				35
#define STR_BELOW					36
#define STR_FROMRIGHT				37
#define STR_REL_PG_TOP				38
#define STR_REL_PG_BOTTOM			39
#define STR_REL_FRM_TOP				40
#define STR_REL_FRM_BOTTOM			41
#define STR_REL_LINE				42

Resource RID_SVXSW_FRAMEPOSITIONS
{
	String STR_LEFT
	{
		Text [ en-US ] = "Left" ;
	};
	String STR_MIR_LEFT
	{
		Text [ en-US ] = "Inside" ;
	};
	String STR_RIGHT
	{
		Text [ en-US ] = "Right" ;
	};
	String STR_MIR_RIGHT
	{
		Text [ en-US ] = "Outside" ;
	};
	String STR_CENTER_VERT
	{
		Text [ en-US ] = "Center" ;
	};
	String STR_FROMLEFT
	{
		Text [ en-US ] = "From left" ;
	};
	String STR_MIR_FROMLEFT
	{
		Text [ en-US ] = "From inside" ;
	};
	String STR_FRAME
	{
		Text [ en-US ] = "Paragraph area" ;
	};
	String STR_PRTAREA
	{
		Text [ en-US ] = "Paragraph text area" ;
	};
	String STR_REL_PG_LEFT
	{
		Text [ en-US ] = "Left page border" ;
	};
	String STR_MIR_REL_PG_LEFT
	{
		Text [ en-US ] = "Inner page border" ;
	};
	String STR_REL_PG_RIGHT
	{
		Text [ en-US ] = "Right page border" ;
	};
	String STR_MIR_REL_PG_RIGHT
	{
		Text [ en-US ] = "Outer page border" ;
	};
	String STR_REL_FRM_LEFT
	{
		Text [ en-US ] = "Left paragraph border" ;
	};
	String STR_MIR_REL_FRM_LEFT
	{
		Text [ en-US ] = "Inner paragraph border" ;
	};
	String STR_REL_FRM_RIGHT
	{
		Text [ en-US ] = "Right paragraph border" ;
	};
	String STR_MIR_REL_FRM_RIGHT
	{
		Text [ en-US ] = "Outer paragraph border" ;
	};
	String STR_REL_PG_FRAME
	{
		Text [ en-US ] = "Entire page" ;
	};
	String STR_REL_PG_PRTAREA
	{
		Text [ en-US ] = "Page text area" ;
	};
	String STR_TOP
	{
		Text [ en-US ] = "Top" ;
	};
	String STR_BOTTOM
	{
		Text [ en-US ] = "Bottom" ;
	};
	String STR_CENTER_HORI
	{
		Text [ en-US ] = "Center" ;
	};
	String STR_FROMTOP
	{
		Text [ en-US ] = "From top" ;
	};
	String STR_FROMBOTTOM
	{
		Text [ en-US ] = "From bottom" ;
	};
	String STR_BELOW
	{
		Text [ en-US ] = "Below" ;
	};
	String STR_FROMRIGHT
	{
		Text [ en-US ] = "From right" ;
	};
	String STR_REL_PG_TOP
	{
		Text [ en-US ] = "Top page border" ;
	};
	String STR_REL_PG_BOTTOM
	{
		Text [ en-US ] = "Bottom page border" ;
	};
	String STR_REL_FRM_TOP
	{
		Text [ en-US ] = "Top paragraph border" ;
	};
	String STR_REL_FRM_BOTTOM
	{
		Text [ en-US ] = "Bottom paragraph border" ;
	};
	String STR_REL_BORDER
	{
		Text [ en-US ] = "Margin" ;
	};
	String STR_REL_PRTAREA
	{
		Text [ en-US ] = "Paragraph text area" ;
	};
	String STR_FLY_REL_PG_LEFT
	{
		Text [ en-US ] = "Left frame border" ;
	};
	String STR_FLY_MIR_REL_PG_LEFT
	{
		Text [ en-US ] = "Inner frame border" ;
	};
	String STR_FLY_REL_PG_RIGHT
	{
		Text [ en-US ] = "Right frame border" ;
	};
	String STR_FLY_MIR_REL_PG_RIGHT
	{
		Text [ en-US ] = "Outer frame border" ;
	};
	String STR_FLY_REL_PG_FRAME
	{
		Text [ en-US ] = "Entire frame" ;
	};
	String STR_FLY_REL_PG_PRTAREA
	{
		Text [ en-US ] = "Frame text area" ;
	};
	String STR_REL_BASE
	{
		Text [ en-US ] = "Base line" ;
	};
	String STR_REL_CHAR
	{
		Text [ en-US ] = "Character" ;
	};
	String STR_REL_ROW
	{
		Text [ en-US ] = "Row" ;
	};
	// OD 05.01.2004 #i22341#
	String STR_REL_LINE
	{
		Text [ en-US ] = "Line of text" ;
	};
};

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