/**************************************************************
 *
 * 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 _GALTHEME_HRC_
#define _GALTHEME_HRC_

#define RID_GALLERYSTR_THEME_START          (6000)

// These defines are used to map gallery names to translated string resources. Since
// galleries may be copied from older offices to newer, do *never* change these
// IDs except adding new ones (and adapting RID_GALLERYSTR_THEME_LAST). The ID
// *is* written into the binary file *.thm (which is a gallery theme combined of
// three files, *.thm, *.sdv and *.sdg)

#define RID_GALLERYSTR_THEME_3D				(RID_GALLERYSTR_THEME_START + 1)
#define RID_GALLERYSTR_THEME_ANIMATIONS                 (RID_GALLERYSTR_THEME_START + 2)
#define RID_GALLERYSTR_THEME_BULLETS                    (RID_GALLERYSTR_THEME_START + 3)
#define RID_GALLERYSTR_THEME_OFFICE                     (RID_GALLERYSTR_THEME_START + 4)
#define RID_GALLERYSTR_THEME_FLAGS			(RID_GALLERYSTR_THEME_START + 5)
#define RID_GALLERYSTR_THEME_FLOWCHARTS                 (RID_GALLERYSTR_THEME_START + 6)
#define RID_GALLERYSTR_THEME_EMOTICONS                  (RID_GALLERYSTR_THEME_START + 7)
#define RID_GALLERYSTR_THEME_PHOTOS			(RID_GALLERYSTR_THEME_START + 8)
#define RID_GALLERYSTR_THEME_BACKGROUNDS                (RID_GALLERYSTR_THEME_START + 9)
#define RID_GALLERYSTR_THEME_HOMEPAGE                   (RID_GALLERYSTR_THEME_START + 10)
#define RID_GALLERYSTR_THEME_INTERACTION                (RID_GALLERYSTR_THEME_START + 11)
#define RID_GALLERYSTR_THEME_MAPS			(RID_GALLERYSTR_THEME_START + 12)
#define RID_GALLERYSTR_THEME_PEOPLE                     (RID_GALLERYSTR_THEME_START + 13)
#define RID_GALLERYSTR_THEME_SURFACES                   (RID_GALLERYSTR_THEME_START + 14)
#define RID_GALLERYSTR_THEME_HTMLBUTTONS                (RID_GALLERYSTR_THEME_START + 15)
#define RID_GALLERYSTR_THEME_POWERPOINT                 (RID_GALLERYSTR_THEME_START + 16)
#define RID_GALLERYSTR_THEME_RULERS			(RID_GALLERYSTR_THEME_START + 17)
#define RID_GALLERYSTR_THEME_SOUNDS			(RID_GALLERYSTR_THEME_START + 18)
#define RID_GALLERYSTR_THEME_SYMBOLS                    (RID_GALLERYSTR_THEME_START + 19)
#define RID_GALLERYSTR_THEME_MYTHEME                    (RID_GALLERYSTR_THEME_START + 20)
#define RID_GALLERYSTR_THEME_USERSOUNDS                 (RID_GALLERYSTR_THEME_START + 21)

#define RID_GALLERYSTR_THEME_ARROWS                     (RID_GALLERYSTR_THEME_START + 22)
#define RID_GALLERYSTR_THEME_BALLOONS                   (RID_GALLERYSTR_THEME_START + 23)
#define RID_GALLERYSTR_THEME_KEYBOARD                   (RID_GALLERYSTR_THEME_START + 24)
#define RID_GALLERYSTR_THEME_TIME                       (RID_GALLERYSTR_THEME_START + 25)
#define RID_GALLERYSTR_THEME_PRESENTATION               (RID_GALLERYSTR_THEME_START + 26)
#define RID_GALLERYSTR_THEME_CALENDAR                   (RID_GALLERYSTR_THEME_START + 27)
#define RID_GALLERYSTR_THEME_NAVIGATION                 (RID_GALLERYSTR_THEME_START + 28)
#define RID_GALLERYSTR_THEME_COMMUNICATION              (RID_GALLERYSTR_THEME_START + 29)
#define RID_GALLERYSTR_THEME_FINANCES                   (RID_GALLERYSTR_THEME_START + 30)
#define RID_GALLERYSTR_THEME_COMPUTER                   (RID_GALLERYSTR_THEME_START + 31)

#define RID_GALLERYSTR_THEME_CLIMA                      (RID_GALLERYSTR_THEME_START + 32)
#define RID_GALLERYSTR_THEME_EDUCATION                  (RID_GALLERYSTR_THEME_START + 33)
#define RID_GALLERYSTR_THEME_TROUBLE                    (RID_GALLERYSTR_THEME_START + 34)
#define RID_GALLERYSTR_THEME_SCREENBEANS                (RID_GALLERYSTR_THEME_START + 35)

#define RID_GALLERYSTR_THEME_DUMMY5                     (RID_GALLERYSTR_THEME_START + 36)
#define RID_GALLERYSTR_THEME_FONTWORK					(RID_GALLERYSTR_THEME_START + 37)
#define RID_GALLERYSTR_THEME_FONTWORK_VERTICAL			(RID_GALLERYSTR_THEME_START + 38)

#define RID_GALLERYSTR_THEME_COMPUTERS                  (RID_GALLERYSTR_THEME_START + 39)
#define RID_GALLERYSTR_THEME_DIAGRAMS                   (RID_GALLERYSTR_THEME_START + 40)
#define RID_GALLERYSTR_THEME_ENVIRONMENT                (RID_GALLERYSTR_THEME_START + 41)
#define RID_GALLERYSTR_THEME_FINANCE                    (RID_GALLERYSTR_THEME_START + 42)
#define RID_GALLERYSTR_THEME_TRANSPORT                  (RID_GALLERYSTR_THEME_START + 43)
#define RID_GALLERYSTR_THEME_TXTSHAPES                  (RID_GALLERYSTR_THEME_START + 44)

#define RID_GALLERYSTR_THEME_FIRST			RID_GALLERYSTR_THEME_3D
#define RID_GALLERYSTR_THEME_LAST			RID_GALLERYSTR_THEME_TXTSHAPES

#endif
