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