/**************************************************************
 *
 * 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 "accessibility.hrc"

String RID_SVXSTR_A11Y_3D_MATERIAL_COLOR
{
	Text [ en-US ] = "3D material color" ;
};
String RID_SVXSTR_A11Y_TEXT_COLOR
{
	Text [ en-US ] = "Font color" ;
};
String RID_SVXSTR_A11Y_BACKGROUND_COLOR
{
	Text [ en-US ] = "Background color" ;
};
String RID_SVXSTR_A11Y_FILLSTYLE_NONE
{
	Text [ en-US ] = "None" ;
};
String RID_SVXSTR_A11Y_FILLSTYLE_SOLID
{
	Text [ en-US ] = "Solid" ;
};
String RID_SVXSTR_A11Y_FILLSTYLE_HATCH
{
	Text [ en-US ] = "With hatching" ;
};
String RID_SVXSTR_A11Y_FILLSTYLE_GRADIENT
{
	Text [ en-US ] = "Gradient" ;
};
String RID_SVXSTR_A11Y_FILLSTYLE_BITMAP
{
	Text [ en-US ] = "Bitmap" ;
};
String RID_SVXSTR_A11Y_WITH
{
	Text [ en-US ] = "with" ;
};
String RID_SVXSTR_A11Y_STYLE
{
	Text [ en-US ] = "Style" ;
};
String RID_SVXSTR_A11Y_AND
{
	Text [ en-US ] = "and" ;
};


// SvxRectCtl

String RID_SVXSTR_RECTCTL_ACC_CORN_NAME
{
	Text [ en-US ] = "Corner control" ;
};

String RID_SVXSTR_RECTCTL_ACC_CORN_DESCR
{
	Text [ en-US ] = "Selection of a corner point." ;
};

String RID_SVXSTR_RECTCTL_ACC_ANGL_NAME
{
	Text [ en-US ] = "Angle control" ;
};

String RID_SVXSTR_RECTCTL_ACC_ANGL_DESCR
{
	Text [ en-US ] = "Selection of a major angle." ;
};


String RID_SVXSTR_RECTCTL_ACC_CHLD_LT
{
	Text [ en-US ] = "Top left" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_MT
{
	Text [ en-US ] = "Top middle" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_RT
{
	Text [ en-US ] = "Top right" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_LM
{
	Text [ en-US ] = "Left center" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_MM
{
	Text [ en-US ] = "Center" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_RM
{
	Text [ en-US ] = "Right center" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_LB
{
	Text [ en-US ] = "Bottom left" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_MB
{
	Text [ en-US ] = "Bottom middle" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_RB
{
	Text [ en-US ] = "Bottom right" ;
};


String RID_SVXSTR_RECTCTL_ACC_CHLD_A000
{
	Text [ en-US ] = "0 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A045
{
	Text [ en-US ] = "45 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A090
{
	Text [ en-US ] = "90 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A135
{
	Text [ en-US ] = "135 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A180
{
	Text [ en-US ] = "180 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A225
{
	Text [ en-US ] = "225 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A270
{
	Text [ en-US ] = "270 degrees" ;
};

String RID_SVXSTR_RECTCTL_ACC_CHLD_A315
{
	Text [ en-US ] = "315 degrees" ;
};

// SvxGraphCtrlAccessibleContext
String RID_SVXSTR_GRAPHCTRL_ACC_NAME
{
	Text [ en-US ] = "Contour control" ;
};

String RID_SVXSTR_GRAPHCTRL_ACC_DESCRIPTION
{
	Text [ en-US ] = "This is where you can edit the contour." ;
};

String RID_SVXSTR_CHARACTER_SELECTION
{
	Text [ en-US ] = "Special character selection";
};

String RID_SVXSTR_CHAR_SEL_DESC
{
	Text [ en-US ] = "Select special characters in this area.";
};

String RID_SVXSTR_CHARACTER_CODE
{
	// The space behind is a must.
	Text [ en-US ] = "Character code ";
};
