/**************************************************************
 * 
 * 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 ";
};




















































