/**************************************************************
 * 
 * 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 "Bitmaps.hrc"

Image IMG_TYPE_COLUMN
{
	ImageBitmap = Bitmap { File = "typecolumn_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_BAR
{
	ImageBitmap = Bitmap { File = "typebar_16.png " ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_PIE
{
	ImageBitmap = Bitmap { File = "typepie_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_LINE
{
	ImageBitmap = Bitmap { File = "typepointline_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_XY
{
	ImageBitmap = Bitmap { File = "typexy_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_AREA
{
	ImageBitmap = Bitmap { File = "typearea_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_NET
{
	ImageBitmap = Bitmap { File = "typenet_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_STOCK
{
	ImageBitmap = Bitmap { File = "typestock_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_COLUMN_LINE
{
	ImageBitmap = Bitmap { File = "typecolumnline_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Image IMG_TYPE_BUBBLE
{
	ImageBitmap = Bitmap { File = "typebubble_16.png" ; };
	MaskColor = STD_MASKCOLOR;
};
Bitmap BMP_BUBBLE_1
{
	File = "bubble_52x60.png" ;
};
Bitmap BMP_AREAS_2D
{
	File = "areas_52x60.png" ;
};
Bitmap BMP_AREAS_2D_1
{
	File = "areaspiled_52x60.png" ;
};
Bitmap BMP_AREAS_2D_3
{
	File = "areasfull_52x60.png" ;
};
Bitmap BMP_AREAS_3D
{
	File = "areaspiled3d_52x60.png" ;
};
Bitmap BMP_AREAS_3D_1
{
	File = "areas3d_52x60.png" ;
};
Bitmap BMP_AREAS_3D_2
{
	File = "areasfull3d_52x60.png" ;
};
//---------------------
Bitmap BMP_BARS_2D_1
{
	File = "bar_52x60.png" ;
};
Bitmap BMP_BARS_2D_2
{
	File = "barstack_52x60.png" ;
};
Bitmap BMP_BARS_2D_3
{
	File = "barpercent_52x60.png" ;
};
Bitmap BMP_BARS_3D
{
	File = "bar3ddeep_52x60.png" ;
};
Bitmap BMP_BARS_3D_1
{
	File = "bar3d_52x60.png" ;
};
Bitmap BMP_BARS_3D_2
{
	File = "barstack3d_52x60.png" ;
};
Bitmap BMP_BARS_3D_3
{
	File = "barpercent3d_52x60.png" ;
};
//---------------------
Bitmap BMP_CIRCLES_2D
{
	File = "pie_52x60.png" ;
};
Bitmap BMP_CIRCLES_2D_EXPLODED
{
	File = "pieexploded_52x60.png" ;
};
Bitmap BMP_CIRCLES_3D
{
	File = "pie3d_52x60.png" ;
};
Bitmap BMP_CIRCLES_3D_EXPLODED
{
	File = "pie3dexploded_52x60.png" ;
};
//---------------------
Bitmap BMP_DONUT_2D
{
    File = "donut_52x60.png" ;
};
Bitmap BMP_DONUT_2D_EXPLODED
{
	File = "donutexploded_52x60.png" ;
};
Bitmap BMP_DONUT_3D
{
    File = "donut3d_52x60.png" ;
};
Bitmap BMP_DONUT_3D_EXPLODED
{
    File = "donut3dexploded_52x60.png" ;
};
//---------------------
Bitmap BMP_COLUMNS_2D_1
{
	File = "columns_52x60.png" ;
};
Bitmap BMP_COLUMNS_2D_2
{
	File = "columnstack_52x60.png" ;
};
Bitmap BMP_COLUMNS_2D_3
{
	File = "columnpercent_52x60.png" ;
};
Bitmap BMP_COLUMN_LINE
{
	File = "columnline_52x60.png" ;
};
Bitmap BMP_COLUMN_LINE_STACKED
{
	File = "columnstackline_52x60.png" ;
};
//---------------------
Bitmap BMP_COLUMNS_3D
{
	File = "columns3ddeep_52x60.png" ;
};
Bitmap BMP_COLUMNS_3D_1
{
	File = "columns3d_52x60.png" ;
};
Bitmap BMP_COLUMNS_3D_2
{
	File = "columnstack3d_52x60.png" ;
};
Bitmap BMP_COLUMNS_3D_3
{
	File = "columnpercent3d_52x60.png" ;
};
//---------------------
Bitmap BMP_KEGELQ_3D_1
{
	File = "conehori_52x60.png" ;
};
Bitmap BMP_KEGELQ_3D_2
{
	File = "conehoristack_52x60.png" ;
};
Bitmap BMP_KEGELQ_3D_3
{
	File = "conehoripercent_52x60.png" ;
};
Bitmap BMP_KEGELQ_3D_4
{
	File = "conehorideep_52x60.png" ;
};
Bitmap BMP_KEGEL_3D_1
{
	File = "cone_52x60.png" ;
};
Bitmap BMP_KEGEL_3D_2
{
	File = "conestack_52x60.png" ;
};
Bitmap BMP_KEGEL_3D_3
{
	File = "conepercent_52x60.png" ;
};
Bitmap BMP_KEGEL_3D_4
{
	File = "conedeep_52x60.png" ;
};
//---------------------
Bitmap BMP_POINTS_XVALUES
{
	File = "valueaxisdirectpoints_52x60.png" ;
};
Bitmap BMP_POINTS_XCATEGORY
{
	File = "nostackdirectpoints_52x60.png" ;
};
Bitmap BMP_POINTS_STACKED
{
	File = "stackdirectpoints_52x60.png" ;
};
//---------------------

Bitmap BMP_LINE_P_XVALUES
{
	File = "valueaxisdirectboth_52x60.png" ;
};
Bitmap BMP_LINE_O_XVALUES
{
	File = "valueaxisdirectlines_52x60.png" ;
};
Bitmap BMP_LINE3D_XVALUES
{
	File = "valueaxisdirect3d_52x60.png" ;
};


Bitmap BMP_LINE_P_XCATEGORY
{
	File = "nostackdirectboth_52x60.png" ;
};
Bitmap BMP_LINE_O_XCATEGORY
{
	File = "nostackdirectlines_52x60.png" ;
};
Bitmap BMP_LINE3D_XCATEGORY
{
	File = "nostackdirect3d_52x60.png" ;
};


Bitmap BMP_LINE_P_STACKED
{
	File = "stackdirectboth_52x60.png" ;
};
Bitmap BMP_LINE_O_STACKED
{
	File = "stackdirectlines_52x60.png" ;
};
Bitmap BMP_LINE3D_STACKED
{
	File = "stackdirect3d_52x60.png" ;
};

//---------------------
Bitmap BMP_LINE_P_XVALUES_SMOOTH
{
	File = "valueaxissmoothboth_52x60.png" ;
};
Bitmap BMP_LINE_O_XVALUES_SMOOTH
{
	File = "valueaxissmoothlines_52x60.png" ;
};
Bitmap BMP_LINE3D_XVALUES_SMOOTH
{
	File = "valueaxissmooth3d_52x60.png" ;
};
Bitmap BMP_LINE_P_XCATEGORY_SMOOTH
{
	File = "nostacksmoothboth_52x60.png" ;
};
Bitmap BMP_LINE_O_XCATEGORY_SMOOTH
{
	File = "nostacksmoothlines_52x60.png" ;
};
Bitmap BMP_LINE3D_XCATEGORY_SMOOTH
{
	File = "nostacksmooth3d_52x60.png" ;
};
Bitmap BMP_LINE_P_STACKED_SMOOTH
{
	File = "stacksmoothboth_52x60.png" ;
};
Bitmap BMP_LINE_O_STACKED_SMOOTH
{
	File = "stacksmoothlines_52x60.png" ;
};
Bitmap BMP_LINE3D_STACKED_SMOOTH
{
	File = "stacksmooth3d_52x60.png" ;
};
//---------------------
Bitmap BMP_NET
{
	File = "net_52x60.png" ;
};
Bitmap BMP_NET_STACK
{
	File = "netstack_52x60.png" ;
};
Bitmap BMP_NET_SYMB
{
	File = "netpoint_52x60.png" ;
};
Bitmap BMP_NET_SYMB_STACK
{
	File = "netpointstack_52x60.png" ;
};
Bitmap BMP_NET_LINESYMB
{
	File = "netlinepoint_52x60.png" ;
};
Bitmap BMP_NET_LINESYMB_STACK
{
	File = "netlinepointstack_52x60.png" ;
};
Bitmap BMP_NET_FILL
{
	File = "netfill_52x60.png" ;
};
Bitmap BMP_NET_FILL_STACK
{
	File = "netstackfill_52x60.png" ;
};
//---------------------
Bitmap BMP_PYRAMIDQ_3D_1
{
	File = "pyramindhori_52x60.png" ;
};
Bitmap BMP_PYRAMIDQ_3D_2
{
	File = "pyramindhoristack_52x60.png" ;
};
Bitmap BMP_PYRAMIDQ_3D_3
{
	File = "pyramindhoripercent_52x60.png" ;
};
Bitmap BMP_PYRAMIDQ_3D_4
{
	File = "pyramindhorideep_52x60.png" ;
};
Bitmap BMP_PYRAMID_3D_1
{
	File = "pyramind_52x60.png" ;
};
Bitmap BMP_PYRAMID_3D_2
{
	File = "pyramindstack_52x60.png" ;
};
Bitmap BMP_PYRAMID_3D_3
{
	File = "pyramindpercent_52x60.png" ;
};
Bitmap BMP_PYRAMID_3D_4
{
	File = "pyraminddeep_52x60.png" ;
};
//---------------------
Bitmap BMP_ROEHRE_3D_1
{
	File = "cylinderhori_52x60.png" ;
};
Bitmap BMP_ROEHRE_3D_2
{
	File = "cylinderhoristack_52x60.png" ;
};
Bitmap BMP_ROEHRE_3D_3
{
	File = "cylinderhoriprocent_52x60.png" ;
};
Bitmap BMP_ROEHRE_3D_4
{
	File = "cylinderhorideep_52x60.png" ;
};
//---------------------
Bitmap BMP_SAEULE_3D_1
{
	File = "cylinder_52x60.png" ;
};
Bitmap BMP_SAEULE_3D_2
{
	File = "cylinderstack_52x60.png" ;
};
Bitmap BMP_SAEULE_3D_3
{
	File = "cylinderpercent_52x60.png" ;
};
Bitmap BMP_SAEULE_3D_4
{
	File = "cylinderdeep_52x60.png" ;
};
//---------------------
Bitmap BMP_STOCK_1
{
	File = "stock_52x60.png" ;
};
Bitmap BMP_STOCK_2
{
	File = "stockblock_52x60.png" ;
};
Bitmap BMP_STOCK_3
{
	File = "stockcolumns_52x60.png" ;
};
Bitmap BMP_STOCK_4
{
	File = "stockcolumnsattach_52x60.png" ;
};
//---------------------
//---------------------
//---------------------
//error indicator
Image BMP_INDICATE_BOTH_VERTI
{
	ImageBitmap = Bitmap
	{
        File = "errorbothverti_30.png" ;
    };
};
Image BMP_INDICATE_DOWN
{
	ImageBitmap = Bitmap
	{
        File = "errordown_30.png" ;
    };
};
Image BMP_INDICATE_UP
{
	ImageBitmap = Bitmap
	{
        File = "errorup_30.png" ;
    };
};
Image BMP_INDICATE_BOTH_HORI
{
	ImageBitmap = Bitmap
	{
        File = "errorbothhori_30.png" ;
    };
};
Image BMP_INDICATE_RIGHT
{
	ImageBitmap = Bitmap
	{
        File = "errorright_30.png" ;
    };
};
Image BMP_INDICATE_LEFT
{
	ImageBitmap = Bitmap
	{
        File = "errorleft_30.png" ;
    };
};

//---------------------
//regression curves
Image BMP_REGRESSION_NONE
{
	ImageBitmap = Bitmap
	{
        File = "regno.bmp" ;
    };
};
Image BMP_REGRESSION_LINEAR
{
	ImageBitmap = Bitmap
	{
        File = "reglin.bmp" ;
    };
};
Image BMP_REGRESSION_LOG
{
	ImageBitmap = Bitmap
	{
        File = "reglog.bmp" ;
    };
};
Image BMP_REGRESSION_EXP
{
	ImageBitmap = Bitmap
	{
        File = "regexp.bmp" ;
    };
};
Image BMP_REGRESSION_POWER
{
	ImageBitmap = Bitmap
	{
        File = "regpow.bmp" ;
    };
};
//---------------------
Image IMG_SELECTRANGE
{
	ImageBitmap = Bitmap
	{
		File = "selectrange.png";
	};
    MaskColor = STD_MASKCOLOR;
};
