/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



#ifndef _SVX_ACCESSIBILITY_HRC
#define _SVX_ACCESSIBILITY_HRC

#include <svx/dialogs.hrc>

#define RID_SVXSTR_A11Y_3D_MATERIAL_COLOR       (RID_SVXSTR_ACCESSIBILITY_START + 1)
#define RID_SVXSTR_A11Y_TEXT_COLOR              (RID_SVXSTR_ACCESSIBILITY_START + 2)
#define RID_SVXSTR_A11Y_BACKGROUND_COLOR        (RID_SVXSTR_ACCESSIBILITY_START + 3)
#define RID_SVXSTR_A11Y_FILLSTYLE_NONE          (RID_SVXSTR_ACCESSIBILITY_START + 4)
#define RID_SVXSTR_A11Y_FILLSTYLE_SOLID         (RID_SVXSTR_ACCESSIBILITY_START + 5)
#define RID_SVXSTR_A11Y_FILLSTYLE_HATCH         (RID_SVXSTR_ACCESSIBILITY_START + 6)
#define RID_SVXSTR_A11Y_FILLSTYLE_GRADIENT      (RID_SVXSTR_ACCESSIBILITY_START + 7)
#define RID_SVXSTR_A11Y_FILLSTYLE_BITMAP        (RID_SVXSTR_ACCESSIBILITY_START + 8)
#define RID_SVXSTR_A11Y_WITH                    (RID_SVXSTR_ACCESSIBILITY_START + 9)
#define RID_SVXSTR_A11Y_STYLE                   (RID_SVXSTR_ACCESSIBILITY_START + 10)
#define RID_SVXSTR_A11Y_AND                     (RID_SVXSTR_ACCESSIBILITY_START + 11)


// SvxRectCtl & childs
#define	RID_SVXSTR_RECTCTL_ACC_START			(RID_SVXSTR_ACCESSIBILITY_START + 20)
#define	RID_SVXSTR_RECTCTL_ACC_CORN_NAME		(RID_SVXSTR_RECTCTL_ACC_START + 0)
#define	RID_SVXSTR_RECTCTL_ACC_CORN_DESCR		(RID_SVXSTR_RECTCTL_ACC_START + 1)
#define	RID_SVXSTR_RECTCTL_ACC_ANGL_NAME		(RID_SVXSTR_RECTCTL_ACC_START + 2)
#define	RID_SVXSTR_RECTCTL_ACC_ANGL_DESCR		(RID_SVXSTR_RECTCTL_ACC_START + 3)

#define RID_SVXSTR_RECTCTL_ACC_CHLD_LT			(RID_SVXSTR_RECTCTL_ACC_START + 4)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_MT			(RID_SVXSTR_RECTCTL_ACC_START + 5)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_RT			(RID_SVXSTR_RECTCTL_ACC_START + 6)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_LM			(RID_SVXSTR_RECTCTL_ACC_START + 7)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_MM			(RID_SVXSTR_RECTCTL_ACC_START + 8)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_RM			(RID_SVXSTR_RECTCTL_ACC_START + 9)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_LB			(RID_SVXSTR_RECTCTL_ACC_START + 10)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_MB			(RID_SVXSTR_RECTCTL_ACC_START + 11)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_RB			(RID_SVXSTR_RECTCTL_ACC_START + 12)

#define RID_SVXSTR_RECTCTL_ACC_CHLD_A000		(RID_SVXSTR_RECTCTL_ACC_START + 13)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A045		(RID_SVXSTR_RECTCTL_ACC_START + 14)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A090		(RID_SVXSTR_RECTCTL_ACC_START + 15)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A135		(RID_SVXSTR_RECTCTL_ACC_START + 16)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A180		(RID_SVXSTR_RECTCTL_ACC_START + 17)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A225		(RID_SVXSTR_RECTCTL_ACC_START + 18)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A270		(RID_SVXSTR_RECTCTL_ACC_START + 19)
#define RID_SVXSTR_RECTCTL_ACC_CHLD_A315		(RID_SVXSTR_RECTCTL_ACC_START + 20)
#define	RID_SVXSTR_RECTCTL_ACC_END              (RID_SVXSTR_RECTCTL_ACC_START + 21)

// SvxGraphCtrlAccessibleContext
#define RID_SVXSTR_GRAPHCTRL_ACC_START			(RID_SVXSTR_RECTCTL_ACC_END)
#define RID_SVXSTR_GRAPHCTRL_ACC_NAME			(RID_SVXSTR_GRAPHCTRL_ACC_START + 0)
#define RID_SVXSTR_GRAPHCTRL_ACC_DESCRIPTION	(RID_SVXSTR_GRAPHCTRL_ACC_START + 1)

// text paragraphs
#define RID_SVXSTR_A11Y_TEXTHELPER_START		(RID_SVXSTR_ACCESSIBILITY_START + 70)

// SvxShowCharSetAcc
#define RID_SVXSTR_CHARACTER_SELECTION			(RID_SVXSTR_ACCESSIBILITY_START + 80)
#define RID_SVXSTR_CHARACTER_CODE				(RID_SVXSTR_ACCESSIBILITY_START + 81)
#define RID_SVXSTR_CHAR_SEL_DESC				(RID_SVXSTR_ACCESSIBILITY_START + 82)

#endif

