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

#ifndef _SOLAR_HRC
#include <svl/solar.hrc>
#endif

#ifndef STD_MASKCOLOR
#define STD_MASKCOLOR Color { Red = 0xFF00; Green = 0x0000; Blue = 0xFF00; }
#endif

//-----------------------------------------------------------------------------
// chart types
// Images:

#define IMG_TYPE_COLUMN (RID_APP_START + 1)
#define IMG_TYPE_BAR    (RID_APP_START + 2)
#define IMG_TYPE_PIE    (RID_APP_START + 3)
#define IMG_TYPE_AREA   (RID_APP_START + 4)
#define IMG_TYPE_LINE   (RID_APP_START + 5)
#define IMG_TYPE_XY     (RID_APP_START + 6)
#define IMG_TYPE_BUBBLE (RID_APP_START + 7)
#define IMG_TYPE_NET    (RID_APP_START + 8)
#define IMG_TYPE_STOCK  (RID_APP_START + 9)
#define IMG_TYPE_COLUMN_LINE  (RID_APP_START + 10)

//-----------------------------------------------------------------------------
//Chart Subtypes
// Bitmaps:

//----------------------
// Column Chart Subtypes
#define BMP_COLUMNS_2D_1 (RID_APP_START + 1)
#define BMP_COLUMNS_2D_2 (RID_APP_START + 2)
#define BMP_COLUMNS_2D_3 (RID_APP_START + 3)

#define BMP_COLUMNS_3D (RID_APP_START + 4)
#define BMP_COLUMNS_3D_1 (RID_APP_START + 5)
#define BMP_COLUMNS_3D_2 (RID_APP_START + 6)
#define BMP_COLUMNS_3D_3 (RID_APP_START + 7)

#define BMP_SAEULE_3D_1 (RID_APP_START + 8)
#define BMP_SAEULE_3D_2 (RID_APP_START + 9)
#define BMP_SAEULE_3D_3 (RID_APP_START + 10)
#define BMP_SAEULE_3D_4 (RID_APP_START + 11)

#define BMP_KEGEL_3D_1 (RID_APP_START + 12)
#define BMP_KEGEL_3D_2 (RID_APP_START + 13)
#define BMP_KEGEL_3D_3 (RID_APP_START + 14)
#define BMP_KEGEL_3D_4 (RID_APP_START + 15)

#define BMP_PYRAMID_3D_1 (RID_APP_START + 16)
#define BMP_PYRAMID_3D_2 (RID_APP_START + 17)
#define BMP_PYRAMID_3D_3 (RID_APP_START + 18)
#define BMP_PYRAMID_3D_4 (RID_APP_START + 19)

//----------------------
// Bar Chart Subtypes

#define BMP_BARS_2D_1 (RID_APP_START + 20)
#define BMP_BARS_2D_2 (RID_APP_START + 21)
#define BMP_BARS_2D_3 (RID_APP_START + 22)

#define BMP_BARS_3D (RID_APP_START + 23)
#define BMP_BARS_3D_1 (RID_APP_START + 24)
#define BMP_BARS_3D_2 (RID_APP_START + 25)
#define BMP_BARS_3D_3 (RID_APP_START + 26)

#define BMP_ROEHRE_3D_1 (RID_APP_START + 27)
#define BMP_ROEHRE_3D_2 (RID_APP_START + 28)
#define BMP_ROEHRE_3D_3 (RID_APP_START + 29)
#define BMP_ROEHRE_3D_4 (RID_APP_START + 30)

#define BMP_KEGELQ_3D_1 (RID_APP_START + 31)
#define BMP_KEGELQ_3D_2 (RID_APP_START + 32)
#define BMP_KEGELQ_3D_3 (RID_APP_START + 33)
#define BMP_KEGELQ_3D_4 (RID_APP_START + 34)

#define BMP_PYRAMIDQ_3D_1 (RID_APP_START + 35)
#define BMP_PYRAMIDQ_3D_2 (RID_APP_START + 36)
#define BMP_PYRAMIDQ_3D_3 (RID_APP_START + 37)
#define BMP_PYRAMIDQ_3D_4 (RID_APP_START + 38)

//----------------------
// Pie and Donut Chart Subtypes

#define BMP_CIRCLES_2D (RID_APP_START + 39)
#define BMP_CIRCLES_2D_EXPLODED (RID_APP_START + 40)
#define BMP_CIRCLES_3D (RID_APP_START + 41)
#define BMP_CIRCLES_3D_EXPLODED (RID_APP_START + 42)
#define BMP_DONUT_2D (RID_APP_START + 43)
#define BMP_DONUT_2D_EXPLODED (RID_APP_START + 44)
#define BMP_DONUT_3D (RID_APP_START + 45)
#define BMP_DONUT_3D_EXPLODED (RID_APP_START + 46)

//----------------------
// Points and Lines Chart Subtypes

#define BMP_POINTS_XVALUES (RID_APP_START + 47)
#define BMP_POINTS_XCATEGORY (RID_APP_START + 48)
#define BMP_POINTS_STACKED (RID_APP_START + 49)


#define BMP_LINE_P_XVALUES (RID_APP_START + 50)
#define BMP_LINE_O_XVALUES (RID_APP_START + 51)
#define BMP_LINE3D_XVALUES (RID_APP_START + 52)

#define BMP_LINE_P_XCATEGORY (RID_APP_START + 53)
#define BMP_LINE_O_XCATEGORY (RID_APP_START + 54)
#define BMP_LINE3D_XCATEGORY (RID_APP_START + 55)

#define BMP_LINE_P_STACKED (RID_APP_START + 56)
#define BMP_LINE_O_STACKED (RID_APP_START + 57)
#define BMP_LINE3D_STACKED (RID_APP_START + 58)

#define BMP_LINE_P_XVALUES_SMOOTH (RID_APP_START + 59)
#define BMP_LINE_O_XVALUES_SMOOTH (RID_APP_START + 60)
#define BMP_LINE3D_XVALUES_SMOOTH (RID_APP_START + 61)

#define BMP_LINE_P_XCATEGORY_SMOOTH (RID_APP_START + 62)
#define BMP_LINE_O_XCATEGORY_SMOOTH (RID_APP_START + 63)
#define BMP_LINE3D_XCATEGORY_SMOOTH (RID_APP_START + 64)

#define BMP_LINE_P_STACKED_SMOOTH (RID_APP_START + 65)
#define BMP_LINE_O_STACKED_SMOOTH (RID_APP_START + 66)
#define BMP_LINE3D_STACKED_SMOOTH (RID_APP_START + 67)

//----------------------
// Area Chart Subtypes

#define BMP_AREAS_2D (RID_APP_START + 68)
#define BMP_AREAS_2D_1 (RID_APP_START + 69)
#define BMP_AREAS_2D_3 (RID_APP_START + 70)
#define BMP_AREAS_3D (RID_APP_START + 71)
#define BMP_AREAS_3D_1 (RID_APP_START + 72)
#define BMP_AREAS_3D_2 (RID_APP_START + 73)

//----------------------
// Net Chart Subtypes

#define BMP_NET (RID_APP_START + 74)
#define BMP_NET_STACK (RID_APP_START + 75)
#define BMP_NET_SYMB (RID_APP_START + 76)
#define BMP_NET_SYMB_STACK (RID_APP_START + 77)
#define BMP_NET_LINESYMB (RID_APP_START + 78)
#define BMP_NET_LINESYMB_STACK (RID_APP_START + 79)
#define BMP_NET_FILL (RID_APP_START + 80)
#define BMP_NET_FILL_STACK (RID_APP_START + 81)

//----------------------
// Stock Chart Subtypes

#define BMP_STOCK_1 (RID_APP_START + 82)
#define BMP_STOCK_2 (RID_APP_START + 83)
#define BMP_STOCK_3 (RID_APP_START + 84)
#define BMP_STOCK_4 (RID_APP_START + 85)

//----------------------
// Column + Line Chart Subtypes

#define BMP_COLUMN_LINE         (RID_APP_START + 86)
#define BMP_COLUMN_LINE_STACKED (RID_APP_START + 87)

//----------------------
// Bubble Chart Subtypes
#define BMP_BUBBLE_1            (RID_APP_START + 88)

//-----------------------------------------------------------------------------
//further Images:

//SchStatisticTabPage and SchDataStatisticsDlg part 1
#define BMP_INDICATE_BOTH_VERTI (RID_APP_START + 89)
#define BMP_INDICATE_UP (RID_APP_START + 90)
#define BMP_INDICATE_DOWN (RID_APP_START + 91)
#define BMP_INDICATE_BOTH_HORI (RID_APP_START + 97)
#define BMP_INDICATE_RIGHT (RID_APP_START + 98)
#define BMP_INDICATE_LEFT (RID_APP_START + 99)

//SchStatisticTabPage and SchDataStatisticsDlg part 2
#define BMP_REGRESSION_NONE (RID_APP_START + 92)
#define BMP_REGRESSION_LINEAR (RID_APP_START + 93)
#define BMP_REGRESSION_LOG (RID_APP_START + 94)
#define BMP_REGRESSION_EXP (RID_APP_START + 95)
#define BMP_REGRESSION_POWER (RID_APP_START + 96)

// hide-button for range-choosing
#define IMG_SELECTRANGE (RID_APP_START + 100)

// CHART_BITMAPS_HRC
#endif
