00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef OSDL_PIXEL_H_
00028 #define OSDL_PIXEL_H_
00029
00030
00031
00032 #include "OSDLVideoTypes.h"
00033
00034 #include "Ceylan.h"
00035
00036
00037
00038
00039 #if ! defined(OSDL_USES_SDL) || OSDL_USES_SDL
00040
00041
00042 struct SDL_Color ;
00043 struct SDL_PixelFormat ;
00044
00045 #endif // ! defined(OSDL_USES_SDL) || OSDL_USES_SDL
00046
00047
00048
00049
00050 #include <string>
00051
00052
00053
00054 namespace OSDL
00055 {
00056
00057
00058
00059 namespace Video
00060 {
00061
00062
00063
00064
00065 class Surface ;
00066
00067
00068
00069
00070 class Palette ;
00071
00072
00073
00074
00086 namespace Pixels
00087 {
00088
00089
00090
00096 typedef Ceylan::Uint32 PixelColor ;
00097
00098
00099
00106 typedef Ceylan::Uint32 ColorMask ;
00107
00108
00109
00114 typedef Ceylan::Uint8 ColorElement ;
00115
00116
00117
00124 const ColorElement AlphaTransparent = 0 ;
00125
00126
00127
00135 const ColorElement AlphaOpaque = 255 ;
00136
00137
00138
00147 typedef Ceylan::Float32 FloatColorElement ;
00148
00149
00150
00164 #if ! defined(OSDL_USES_SDL) || OSDL_USES_SDL
00165
00166
00172 typedef ::SDL_Color ColorDefinition ;
00173
00174
00175
00180 typedef ::SDL_PixelFormat PixelFormat ;
00181
00182 #else // OSDL_USES_SDL
00183
00184
00185
00193 struct ColorDefinition
00194 {
00195
00196 ColorElement r ;
00197 ColorElement g ;
00198 ColorElement b ;
00199
00200
00201 ColorElement unused ;
00202
00203 } ;
00204
00205
00206
00211 typedef struct PixelFormat
00212 {
00213
00214 Video::Palette * palette ;
00215
00216 Video::BitsPerPixel BitsPerPixel ;
00217 Video::BytesPerPixel BytesPerPixel ;
00218
00219 Ceylan::Uint8 Rloss ;
00220 Ceylan::Uint8 Gloss ;
00221 Ceylan::Uint8 Bloss ;
00222 Ceylan::Uint8 Aloss ;
00223
00224 Ceylan::Uint8 Rshift ;
00225 Ceylan::Uint8 Gshift ;
00226 Ceylan::Uint8 Bshift ;
00227 Ceylan::Uint8 Ashift ;
00228
00229 ColorMask Rmask ;
00230 ColorMask Gmask ;
00231 ColorMask Bmask ;
00232 ColorMask Amask ;
00233
00234
00235 PixelColor colorkey ;
00236
00237
00238 ColorElement alpha ;
00239
00240 } ;
00241
00242
00243 #endif // OSDL_USES_SDL
00244
00245
00246
00252 typedef Ceylan::Float32 GammaFactor ;
00253
00254
00255
00272 bool setGamma( GammaFactor red, GammaFactor green,
00273 GammaFactor blue ) ;
00274
00275
00276
00278 typedef Ceylan::Uint16 GammaRampElement ;
00279
00280
00281
00309 OSDL_DLL bool setGammaRamp( GammaRampElement * redRamp,
00310 GammaRampElement * greenRamp, GammaRampElement * blueRamp ) ;
00311
00312
00313
00326 OSDL_DLL bool getGammaRamp( GammaRampElement * redRamp,
00327 GammaRampElement * greenRamp, GammaRampElement * blueRamp ) ;
00328
00329
00330
00331
00332
00333
00334
00335
00362 OSDL_DLL void getRecommendedColorMasks( ColorMask & redMask,
00363 ColorMask & greenMask, ColorMask & blueMask,
00364 ColorMask & alphaMask ) ;
00365
00366
00367
00391 OSDL_DLL void getRecommendedColorMasks( ColorMask & redMask,
00392 ColorMask & greenMask, ColorMask & blueMask ) ;
00393
00394
00395
00417 OSDL_DLL void getCurrentColorMasks( const PixelFormat & format,
00418 ColorMask & redMask, ColorMask & greenMask,
00419 ColorMask & blueMask, ColorMask & alphaMask ) ;
00420
00421
00422
00423
00424
00425
00426
00427
00442 OSDL_DLL ColorDefinition convertRGBAToColorDefinition(
00443 ColorElement red, ColorElement green, ColorElement blue,
00444 ColorElement alpha = AlphaOpaque ) ;
00445
00446
00447
00459 OSDL_DLL void convertColorDefinitionToRGBA( ColorDefinition color,
00460 ColorElement & red, ColorElement & green, ColorElement & blue,
00461 ColorElement & alpha ) ;
00462
00463
00464
00473 OSDL_DLL PixelColor convertRGBAToPixelColor(
00474 const PixelFormat & format,
00475 ColorElement red, ColorElement green, ColorElement blue,
00476 ColorElement alpha = AlphaOpaque ) ;
00477
00478
00479
00501 OSDL_DLL ColorDefinition convertPixelColorToColorDefinition(
00502 const PixelFormat & format, PixelColor pixel ) ;
00503
00504
00505
00516 OSDL_DLL PixelColor convertColorDefinitionToPixelColor(
00517 const PixelFormat & format, ColorDefinition colorDef ) ;
00518
00519
00520
00530 OSDL_DLL PixelColor convertColorDefinitionToRawPixelColor(
00531 ColorDefinition colorDef ) ;
00532
00533
00534
00544 OSDL_DLL PixelColor convertRGBAToRawPixelColor(
00545 ColorElement red, ColorElement green, ColorElement blue,
00546 ColorElement alpha = AlphaOpaque ) ;
00547
00548
00549
00550
00551
00552
00553
00554
00555
00568 OSDL_DLL bool areEqual( ColorDefinition first,
00569 ColorDefinition second, bool useAlpha = true ) ;
00570
00571
00572
00586 OSDL_DLL bool isLess( ColorDefinition value,
00587 ColorDefinition comparison ) ;
00588
00589
00590
00605 OSDL_DLL bool areEqual( PixelColor first, PixelColor second ) ;
00606
00607
00608
00625 OSDL_DLL ColorDefinition selectColorDifferentFrom(
00626 ColorDefinition first, ColorDefinition second ) ;
00627
00628
00629
00648 OSDL_DLL ColorDefinition selectColorDifferentFrom(
00649 ColorDefinition first, ColorDefinition second,
00650 ColorDefinition third ) ;
00651
00652
00653
00654
00655
00656
00657
00658
00672 OSDL_DLL PixelColor getPixelColor( const Surface & fromSurface,
00673 Coordinate x, Coordinate y ) ;
00674
00675
00676
00695 OSDL_DLL ColorDefinition getColorDefinition(
00696 const Surface & fromSurface, Coordinate x, Coordinate y ) ;
00697
00698
00699
00745 OSDL_DLL void putRGBAPixel( Surface & targetSurface,
00746 Coordinate x, Coordinate y,
00747 ColorElement red, ColorElement green, ColorElement blue,
00748 ColorElement alpha = AlphaOpaque,
00749 bool blending = true, bool clipping = true,
00750 bool locking = false ) ;
00751
00752
00753
00793 OSDL_DLL void putColorDefinition( Surface & targetSurface,
00794 Coordinate x, Coordinate y,
00795 ColorDefinition colorDef,
00796 bool blending = true, bool clipping = true,
00797 bool locking = false ) ;
00798
00799
00800
00842 OSDL_DLL void putPixelColor( Surface & targetSurface,
00843 Coordinate x, Coordinate y,
00844 PixelColor convertedColor, ColorElement alpha,
00845 bool blending = true, bool clipping = true,
00846 bool locking = false ) ;
00847
00848
00849
00867 OSDL_DLL void alternativePutPixelColor( Surface & targetSurface,
00868 Coordinate x, Coordinate y,
00869 PixelColor color, bool mapToSurfaceFormat = false ) ;
00870
00871
00872
00879 OSDL_DLL std::string toString( const PixelFormat & format ) ;
00880
00881
00882
00893 OSDL_DLL std::string toString( PixelColor pixel,
00894 const PixelFormat & format ) ;
00895
00896
00897
00906 OSDL_DLL std::string toString( ColorDefinition color ) ;
00907
00908
00909
00928 extern OSDL_DLL const ColorDefinition Transparent ;
00929
00930
00931
00933
00934 extern OSDL_DLL const ColorDefinition Black ;
00935 extern OSDL_DLL const ColorDefinition Grey ;
00936 extern OSDL_DLL const ColorDefinition DimGrey ;
00937 extern OSDL_DLL const ColorDefinition LightGrey ;
00938 extern OSDL_DLL const ColorDefinition SlateGrey ;
00939 extern OSDL_DLL const ColorDefinition Silver ;
00940
00941
00942
00944
00945 extern OSDL_DLL const ColorDefinition AliceBlue ;
00946 extern OSDL_DLL const ColorDefinition BlueViolet ;
00947 extern OSDL_DLL const ColorDefinition CadetBlue ;
00948 extern OSDL_DLL const ColorDefinition DarkSlateBlue ;
00949 extern OSDL_DLL const ColorDefinition DarkTurquoise ;
00950 extern OSDL_DLL const ColorDefinition DeepSkyBlue ;
00951 extern OSDL_DLL const ColorDefinition DodgerBlue ;
00952 extern OSDL_DLL const ColorDefinition LightBlue ;
00953 extern OSDL_DLL const ColorDefinition LightCyan ;
00954 extern OSDL_DLL const ColorDefinition MediumBlue ;
00955 extern OSDL_DLL const ColorDefinition NavyBlue ;
00956 extern OSDL_DLL const ColorDefinition RoyalBlue ;
00957 extern OSDL_DLL const ColorDefinition SkyBlue ;
00958 extern OSDL_DLL const ColorDefinition SlateBlue ;
00959 extern OSDL_DLL const ColorDefinition SteelBlue ;
00960 extern OSDL_DLL const ColorDefinition Aquamarine ;
00961 extern OSDL_DLL const ColorDefinition Azure ;
00962 extern OSDL_DLL const ColorDefinition Blue ;
00963 extern OSDL_DLL const ColorDefinition Cyan ;
00964 extern OSDL_DLL const ColorDefinition Turquoise ;
00965 extern OSDL_DLL const ColorDefinition MidnightBlue ;
00966
00967
00968
00970
00971 extern OSDL_DLL const ColorDefinition Brown ;
00972 extern OSDL_DLL const ColorDefinition RosyBrown ;
00973 extern OSDL_DLL const ColorDefinition SaddleBrown ;
00974 extern OSDL_DLL const ColorDefinition Beige ;
00975 extern OSDL_DLL const ColorDefinition Burlywood ;
00976 extern OSDL_DLL const ColorDefinition Chocolate ;
00977 extern OSDL_DLL const ColorDefinition Peru ;
00978 extern OSDL_DLL const ColorDefinition Tan ;
00979 extern OSDL_DLL const ColorDefinition Copper ;
00980
00981
00982
00984
00985 extern OSDL_DLL const ColorDefinition DarkGreen ;
00986 extern OSDL_DLL const ColorDefinition DarkOliveGreen ;
00987 extern OSDL_DLL const ColorDefinition ForestGreen ;
00988 extern OSDL_DLL const ColorDefinition GreenYellow ;
00989 extern OSDL_DLL const ColorDefinition LawnGreen ;
00990 extern OSDL_DLL const ColorDefinition LimeGreen ;
00991 extern OSDL_DLL const ColorDefinition MintCream ;
00992 extern OSDL_DLL const ColorDefinition OliveDrab ;
00993 extern OSDL_DLL const ColorDefinition PaleGreen ;
00994 extern OSDL_DLL const ColorDefinition SeaGreen ;
00995 extern OSDL_DLL const ColorDefinition SpringGreen ;
00996 extern OSDL_DLL const ColorDefinition YellowGreen ;
00997 extern OSDL_DLL const ColorDefinition Chartreuse ;
00998 extern OSDL_DLL const ColorDefinition Green ;
00999 extern OSDL_DLL const ColorDefinition Khaki ;
01000
01001
01002
01004
01005 extern OSDL_DLL const ColorDefinition DarkOrange ;
01006 extern OSDL_DLL const ColorDefinition DarkSalmon ;
01007 extern OSDL_DLL const ColorDefinition LightCoral ;
01008 extern OSDL_DLL const ColorDefinition LightSalmon ;
01009 extern OSDL_DLL const ColorDefinition PeachPuff ;
01010 extern OSDL_DLL const ColorDefinition Bisque ;
01011 extern OSDL_DLL const ColorDefinition Coral ;
01012 extern OSDL_DLL const ColorDefinition Honeydew ;
01013 extern OSDL_DLL const ColorDefinition Orange ;
01014 extern OSDL_DLL const ColorDefinition Salmon ;
01015 extern OSDL_DLL const ColorDefinition Sienna ;
01016
01017
01018
01020
01021 extern OSDL_DLL const ColorDefinition DeepPink ;
01022 extern OSDL_DLL const ColorDefinition HotPink ;
01023 extern OSDL_DLL const ColorDefinition IndianRed ;
01024 extern OSDL_DLL const ColorDefinition LightPink ;
01025 extern OSDL_DLL const ColorDefinition MediumVioletRed ;
01026 extern OSDL_DLL const ColorDefinition MistyRose ;
01027 extern OSDL_DLL const ColorDefinition OrangeRed ;
01028 extern OSDL_DLL const ColorDefinition VioletRed ;
01029 extern OSDL_DLL const ColorDefinition Firebrick ;
01030 extern OSDL_DLL const ColorDefinition Pink ;
01031 extern OSDL_DLL const ColorDefinition Red ;
01032 extern OSDL_DLL const ColorDefinition Tomato ;
01033
01034
01035
01037
01038 extern OSDL_DLL const ColorDefinition DarkOrchid ;
01039 extern OSDL_DLL const ColorDefinition DarkViolet ;
01040 extern OSDL_DLL const ColorDefinition LavenderBlush ;
01041 extern OSDL_DLL const ColorDefinition MediumOrchid ;
01042 extern OSDL_DLL const ColorDefinition MediumPurple ;
01043 extern OSDL_DLL const ColorDefinition Lavender ;
01044
01046 extern OSDL_DLL const ColorDefinition Magenta ;
01047
01048 extern OSDL_DLL const ColorDefinition Maroon ;
01049 extern OSDL_DLL const ColorDefinition Orchid ;
01050 extern OSDL_DLL const ColorDefinition Plum ;
01051 extern OSDL_DLL const ColorDefinition Purple ;
01052 extern OSDL_DLL const ColorDefinition Thistle ;
01053 extern OSDL_DLL const ColorDefinition Violet ;
01054
01055
01056
01058
01059 extern OSDL_DLL const ColorDefinition AntiqueWhite ;
01060 extern OSDL_DLL const ColorDefinition FloralWhite ;
01061 extern OSDL_DLL const ColorDefinition GhostWhite ;
01062 extern OSDL_DLL const ColorDefinition NavajoWhite ;
01063 extern OSDL_DLL const ColorDefinition OldLace ;
01064 extern OSDL_DLL const ColorDefinition WhiteSmoke ;
01065 extern OSDL_DLL const ColorDefinition Gainsboro ;
01066 extern OSDL_DLL const ColorDefinition Ivory ;
01067 extern OSDL_DLL const ColorDefinition Linen ;
01068 extern OSDL_DLL const ColorDefinition Seashell ;
01069 extern OSDL_DLL const ColorDefinition Snow ;
01070 extern OSDL_DLL const ColorDefinition Wheat ;
01071 extern OSDL_DLL const ColorDefinition White ;
01072
01073
01074
01076
01077 extern OSDL_DLL const ColorDefinition BlanchedAlmond ;
01078 extern OSDL_DLL const ColorDefinition DarkGoldenrod ;
01079 extern OSDL_DLL const ColorDefinition LemonChiffon ;
01080 extern OSDL_DLL const ColorDefinition LightGoldenrod ;
01081 extern OSDL_DLL const ColorDefinition LightYellow ;
01082 extern OSDL_DLL const ColorDefinition PaleGoldenrod ;
01083 extern OSDL_DLL const ColorDefinition PapayaWhip ;
01084 extern OSDL_DLL const ColorDefinition Cornsilk ;
01085 extern OSDL_DLL const ColorDefinition Gold ;
01086 extern OSDL_DLL const ColorDefinition Goldenrod ;
01087 extern OSDL_DLL const ColorDefinition Moccasin ;
01088 extern OSDL_DLL const ColorDefinition Yellow ;
01089
01090
01092 extern OSDL_DLL const ColorDefinition DefaultColorkey ;
01093
01094
01095 }
01096
01097 }
01098
01099 }
01100
01101
01102
01103 #endif // OSDL_PIXEL_H_
01104