00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00043 #ifndef _orxDISPLAY_H_
00044 #define _orxDISPLAY_H_
00045
00046 #include "orxInclude.h"
00047 #include "plugin/orxPluginCore.h"
00048
00049 #include "math/orxVector.h"
00050 #include "memory/orxBank.h"
00051 #include "utils/orxHashTable.h"
00052 #include "utils/orxString.h"
00053 #include "utils/orxLinkList.h"
00054
00055
00058 typedef orxU32 orxRGBA;
00059
00060 #ifdef __orxBIG_ENDIAN__
00061
00062 #define orx2RGBA(R, G, B, A) ((((R) & 0xFF) << 24) | (((G) & 0xFF) << 16) | (((B) & 0xFF) << 8) | ((A) & 0xFF))
00063 #define orxRGBA_R(RGBA) (orxU8)(((RGBA) >> 24) & 0xFF)
00064 #define orxRGBA_G(RGBA) (orxU8)(((RGBA) >> 16) & 0xFF)
00065 #define orxRGBA_B(RGBA) (orxU8)(((RGBA) >> 8) & 0xFF)
00066 #define orxRGBA_A(RGBA) (orxU8)((RGBA) & 0xFF)
00067
00068 #else
00069
00070 #define orx2RGBA(R, G, B, A) ((((A) & 0xFF) << 24) | (((B) & 0xFF) << 16) | (((G) & 0xFF) << 8) | ((R) & 0xFF))
00071 #define orxRGBA_R(RGBA) (orxU8)((RGBA) & 0xFF)
00072 #define orxRGBA_G(RGBA) (orxU8)(((RGBA) >> 8) & 0xFF)
00073 #define orxRGBA_B(RGBA) (orxU8)(((RGBA) >> 16) & 0xFF)
00074 #define orxRGBA_A(RGBA) (orxU8)(((RGBA) >> 24) & 0xFF)
00075
00076 #endif
00077
00078 #define orxCOLOR_NORMALIZER (orx2F(1.0f / 255.0f))
00079 #define orxCOLOR_DENORMALIZER (orx2F(255.0f))
00080
00081
00082 typedef struct __orxBITMAP_t orxBITMAP;
00083
00086 typedef struct __orxDISPLAY_TRANSFORM_t
00087 {
00088 orxFLOAT fSrcX, fSrcY, fDstX, fDstY;
00089 orxFLOAT fRepeatX, fRepeatY;
00090 orxFLOAT fScaleX;
00091 orxFLOAT fScaleY;
00092 orxFLOAT fRotation;
00093
00094 } orxDISPLAY_TRANSFORM;
00095
00098 typedef struct __orxDISPLAY_VIDEO_MODE_t
00099 {
00100 orxU32 u32Width, u32Height, u32Depth;
00101
00102 } orxDISPLAY_VIDEO_MODE;
00103
00106 typedef struct __orxCHARACTER_GLYPH_t
00107 {
00108 orxFLOAT fX, fY, fWidth;
00109
00110 } orxCHARACTER_GLYPH;
00111
00114 typedef struct __orxCHARACTER_MAP_t
00115 {
00116 orxFLOAT fCharacterHeight;
00117
00118 orxBANK *pstCharacterBank;
00119 orxHASHTABLE *pstCharacterTable;
00120
00121 } orxCHARACTER_MAP;
00122
00125 typedef enum __orxDISPLAY_SMOOTHING_t
00126 {
00127 orxDISPLAY_SMOOTHING_DEFAULT = 0,
00128 orxDISPLAY_SMOOTHING_ON,
00129 orxDISPLAY_SMOOTHING_OFF,
00130
00131 orxDISPLAY_SMOOTHING_NUMBER,
00132
00133 orxDISPLAY_SMOOTHING_NONE = orxENUM_NONE
00134
00135 } orxDISPLAY_SMOOTHING;
00136
00139 typedef enum __orxDISPLAY_BLEND_MODE_t
00140 {
00141 orxDISPLAY_BLEND_MODE_ALPHA = 0,
00142 orxDISPLAY_BLEND_MODE_MULTIPLY,
00143 orxDISPLAY_BLEND_MODE_ADD,
00144
00145 orxDISPLAY_BLEND_MODE_NUMBER,
00146
00147 orxDISPLAY_BLEND_MODE_NONE = orxENUM_NONE
00148
00149 } orxDISPLAY_BLEND_MODE;
00150
00153 typedef struct __orxCOLOR_t
00154 {
00155 union
00156 {
00157 orxVECTOR vRGB;
00158 orxVECTOR vHSL;
00159 orxVECTOR vHSV;
00160 };
00161 orxFLOAT fAlpha;
00163 } orxCOLOR;
00164
00165
00168 #define orxDISPLAY_KZ_CONFIG_SECTION "Display"
00169 #define orxDISPLAY_KZ_CONFIG_WIDTH "ScreenWidth"
00170 #define orxDISPLAY_KZ_CONFIG_HEIGHT "ScreenHeight"
00171 #define orxDISPLAY_KZ_CONFIG_DEPTH "ScreenDepth"
00172 #define orxDISPLAY_KZ_CONFIG_FULLSCREEN "FullScreen"
00173 #define orxDISPLAY_KZ_CONFIG_DECORATION "Decoration"
00174 #define orxDISPLAY_KZ_CONFIG_TITLE "Title"
00175 #define orxDISPLAY_KZ_CONFIG_SMOOTH "Smoothing"
00176 #define orxDISPLAY_KZ_CONFIG_VSYNC "VSync"
00177 #define orxDISPLAY_KZ_CONFIG_DEPTHBUFFER "DepthBuffer"
00178
00179
00182 #define orxDISPLAY_KZ_SHADER_SUFFIX_TOP "_top"
00183 #define orxDISPLAY_KZ_SHADER_SUFFIX_LEFT "_left"
00184 #define orxDISPLAY_KZ_SHADER_SUFFIX_BOTTOM "_bottom"
00185 #define orxDISPLAY_KZ_SHADER_SUFFIX_RIGHT "_right"
00186
00187
00190 typedef enum __orxDISPLAY_EVENT_t
00191 {
00192 orxDISPLAY_EVENT_SET_VIDEO_MODE = 0,
00193
00194 #ifdef __orxANDROID_NATIVE__
00195
00196 orxDISPLAY_EVENT_SAVE_CONTEXT,
00197 orxDISPLAY_EVENT_RESTORE_CONTEXT,
00198
00199 #endif
00200
00201 orxDISPLAY_EVENT_NUMBER,
00202
00203 orxDISPLAY_EVENT_NONE = orxENUM_NONE
00204
00205 } orxDISPLAY_EVENT;
00206
00209 typedef struct __orxDISPLAY_EVENT_PAYLOAD_t
00210 {
00211 orxU32 u32Width;
00212 orxU32 u32Height;
00213 orxU32 u32Depth;
00214 orxBOOL bFullScreen;
00216 } orxDISPLAY_EVENT_PAYLOAD;
00217
00218
00219
00220
00221
00222
00223 #if defined(__orxIPHONE__) && defined(__orxOBJC__)
00224
00225 #import <UIKit/UIKit.h>
00226 #import <OpenGLES/EAGL.h>
00227 #import <OpenGLES/ES1/gl.h>
00228 #import <OpenGLES/ES1/glext.h>
00229 #import <OpenGLES/ES2/gl.h>
00230 #import <OpenGLES/ES2/glext.h>
00231
00234 @interface orxView : UIView
00235 {
00236 @private
00237 EAGLContext *poMainContext, *poThreadContext;
00238 GLuint uiRenderBuffer, uiFrameBuffer, uiDepthBuffer;
00239 BOOL bShaderSupport;
00240 }
00241
00242 @property (nonatomic, retain) EAGLContext *poMainContext;
00243 @property (nonatomic, retain) EAGLContext *poThreadContext;
00244 @property BOOL bShaderSupport;
00245
00246 @end
00247
00248 #endif
00249
00250
00253 extern orxDLLAPI void orxFASTCALL orxDisplay_Setup();
00254
00260 static orxINLINE orxCOLOR * orxColor_SetRGBA(orxCOLOR *_pstColor, orxRGBA _stRGBA)
00261 {
00262 orxCOLOR *pstResult = _pstColor;
00263
00264
00265 orxASSERT(_pstColor != orxNULL);
00266
00267
00268 orxVector_Set(&(_pstColor->vRGB), orxCOLOR_NORMALIZER * orxU2F(orxRGBA_R(_stRGBA)), orxCOLOR_NORMALIZER * orxU2F(orxRGBA_G(_stRGBA)), orxCOLOR_NORMALIZER * orxU2F(orxRGBA_B(_stRGBA)));
00269
00270
00271 _pstColor->fAlpha = orxCOLOR_NORMALIZER * orxRGBA_A(_stRGBA);
00272
00273
00274 return pstResult;
00275 }
00276
00283 static orxINLINE orxCOLOR * orxColor_Set(orxCOLOR *_pstColor, const orxVECTOR *_pvRGB, orxFLOAT _fAlpha)
00284 {
00285 orxCOLOR *pstResult = _pstColor;
00286
00287
00288 orxASSERT(_pstColor != orxNULL);
00289
00290
00291 orxVector_Copy(&(_pstColor->vRGB), _pvRGB);
00292
00293
00294 _pstColor->fAlpha = _fAlpha;
00295
00296
00297 return pstResult;
00298 }
00299
00305 static orxINLINE orxCOLOR * orxColor_SetRGB(orxCOLOR *_pstColor, const orxVECTOR *_pvRGB)
00306 {
00307 orxCOLOR *pstResult = _pstColor;
00308
00309
00310 orxASSERT(_pstColor != orxNULL);
00311 orxASSERT(_pvRGB != orxNULL);
00312
00313
00314 orxVector_Copy(&(_pstColor->vRGB), _pvRGB);
00315
00316
00317 return pstResult;
00318 }
00319
00325 static orxINLINE orxCOLOR * orxColor_SetAlpha(orxCOLOR *_pstColor, orxFLOAT _fAlpha)
00326 {
00327 orxCOLOR *pstResult = _pstColor;
00328
00329
00330 orxASSERT(_pstColor != orxNULL);
00331
00332
00333 _pstColor->fAlpha = _fAlpha;
00334
00335
00336 return pstResult;
00337 }
00338
00343 static orxINLINE orxRGBA orxColor_ToRGBA(const orxCOLOR *_pstColor)
00344 {
00345 orxRGBA stResult;
00346 orxVECTOR vColor;
00347 orxFLOAT fAlpha;
00348
00349
00350 orxASSERT(_pstColor != orxNULL);
00351
00352
00353 orxVector_Clamp(&vColor, &(_pstColor->vRGB), &orxVECTOR_0, &orxVECTOR_WHITE);
00354
00355
00356 orxVector_Mulf(&vColor, &vColor, orxCOLOR_DENORMALIZER);
00357
00358
00359 fAlpha = orxCLAMP(_pstColor->fAlpha, orxFLOAT_0, orxFLOAT_1);
00360
00361
00362 stResult = orx2RGBA(orxF2U(vColor.fR), orxF2U(vColor.fG), orxF2U(vColor.fB), orxF2U(orxCOLOR_DENORMALIZER * fAlpha));
00363
00364
00365 return stResult;
00366 }
00367
00373 static orxINLINE orxCOLOR * orxColor_Copy(orxCOLOR *_pstDst, const orxCOLOR *_pstSrc)
00374 {
00375
00376 orxASSERT(_pstDst != orxNULL);
00377 orxASSERT(_pstSrc != orxNULL);
00378
00379
00380 orxMemory_Copy(_pstDst, _pstSrc, sizeof(orxCOLOR));
00381
00382
00383 return _pstDst;
00384 }
00385
00391 static orxCOLOR *orxFASTCALL orxColor_FromRGBToHSL(orxCOLOR *_pstDst, const orxCOLOR *_pstSrc)
00392 {
00393 orxCOLOR *pstResult = _pstDst;
00394 orxFLOAT fMin, fMax, fDelta, fR, fG, fB;
00395
00396
00397 orxASSERT(_pstDst != orxNULL);
00398 orxASSERT(_pstSrc != orxNULL);
00399
00400
00401 fR = _pstSrc->vRGB.fR;
00402 fG = _pstSrc->vRGB.fG;
00403 fB = _pstSrc->vRGB.fB;
00404
00405
00406 fMin = orxMIN(fR, orxMIN(fG, fB));
00407 fMax = orxMAX(fR, orxMAX(fG, fB));
00408 fDelta = fMax - fMin;
00409
00410
00411 pstResult->vHSL.fL = orx2F(0.5f) * (fMax + fMin);
00412
00413
00414 if(fDelta == orxFLOAT_0)
00415 {
00416
00417 pstResult->vHSL.fH = pstResult->vHSL.fS = orxFLOAT_0;
00418 }
00419 else
00420 {
00421
00422 pstResult->vHSL.fS = (pstResult->vHSL.fL < orx2F(0.5f))
00423 ? fDelta / (fMax + fMin)
00424 : fDelta / (orx2F(2.0f) - fMax - fMin);
00425
00426
00427 if(fR == fMax)
00428 {
00429
00430 pstResult->vHSL.fH = orx2F(1.0f / 6.0f) * (fG - fB) / fDelta;
00431 }
00432
00433 else if(fG == fMax)
00434 {
00435
00436 pstResult->vHSL.fH = orx2F(1.0f / 3.0f) + (orx2F(1.0f / 6.0f) * (fB - fR) / fDelta);
00437 }
00438
00439 else
00440 {
00441
00442 pstResult->vHSL.fH = orx2F(2.0f / 3.0f) + (orx2F(1.0f / 6.0f) * (fR - fG) / fDelta);
00443 }
00444
00445
00446 if(pstResult->vHSL.fH < orxFLOAT_0)
00447 {
00448 pstResult->vHSL.fH += orxFLOAT_1;
00449 }
00450 else if(pstResult->vHSL.fH > orxFLOAT_1)
00451 {
00452 pstResult->vHSL.fH -= orxFLOAT_1;
00453 }
00454 }
00455
00456
00457 pstResult->fAlpha = _pstSrc->fAlpha;
00458
00459
00460 return pstResult;
00461 }
00462
00468 static orxCOLOR *orxFASTCALL orxColor_FromHSLToRGB(orxCOLOR *_pstDst, const orxCOLOR *_pstSrc)
00469 {
00470 orxCOLOR *pstResult = _pstDst;
00471 orxFLOAT fH, fS, fL;
00472
00473 #define orxCOLOR_GET_RGB_COMPONENT(RESULT, ALT, CHROMA, HUE) \
00474 do \
00475 { \
00476 if(HUE < orx2F(1.0f / 6.0f)) \
00477 { \
00478 RESULT = ALT + (orx2F(6.0f) * HUE * (CHROMA - ALT)); \
00479 } \
00480 else if(HUE < orx2F(1.0f / 2.0f)) \
00481 { \
00482 RESULT = CHROMA; \
00483 } \
00484 else if(HUE < orx2F(2.0f / 3.0f)) \
00485 { \
00486 RESULT = ALT + (orx2F(6.0f) * (CHROMA - ALT) * (orx2F(2.0f / 3.0f) - HUE)); \
00487 } \
00488 else \
00489 { \
00490 RESULT = ALT; \
00491 } \
00492 if(RESULT < orxMATH_KF_EPSILON) \
00493 { \
00494 RESULT = orxFLOAT_0; \
00495 } \
00496 else if(RESULT > orxFLOAT_1 - orxMATH_KF_EPSILON) \
00497 { \
00498 RESULT = orxFLOAT_1; \
00499 } \
00500 } \
00501 while(orxFALSE)
00502
00503
00504 orxASSERT(_pstDst != orxNULL);
00505 orxASSERT(_pstSrc != orxNULL);
00506
00507
00508 fH = _pstSrc->vRGB.fH;
00509 fS = _pstSrc->vRGB.fS;
00510 fL = _pstSrc->vRGB.fL;
00511
00512
00513 if(fS == orxFLOAT_0)
00514 {
00515
00516 orxVector_SetAll(&(pstResult->vRGB), fL);
00517 }
00518 else
00519 {
00520 orxFLOAT fChroma, fIntermediate;
00521
00522
00523 fChroma = (fL < orx2F(0.5f))
00524 ? fL + (fL * fS)
00525 : fL + fS - (fL * fS);
00526
00527
00528 fIntermediate = (orx2F(2.0f) * fL) - fChroma;
00529
00530
00531 if(fH > orx2F(2.0f / 3.0f))
00532 {
00533 orxCOLOR_GET_RGB_COMPONENT(pstResult->vRGB.fR, fIntermediate, fChroma, (fH - orx2F(2.0f / 3.0f)));
00534 }
00535 else
00536 {
00537 orxCOLOR_GET_RGB_COMPONENT(pstResult->vRGB.fR, fIntermediate, fChroma, (fH + orx2F(1.0f / 3.0f)));
00538 }
00539 orxCOLOR_GET_RGB_COMPONENT(pstResult->vRGB.fG, fIntermediate, fChroma, fH);
00540 if(fH < orx2F(1.0f / 3.0f))
00541 {
00542 orxCOLOR_GET_RGB_COMPONENT(pstResult->vRGB.fB, fIntermediate, fChroma, (fH + orx2F(2.0f / 3.0f)));
00543 }
00544 else
00545 {
00546 orxCOLOR_GET_RGB_COMPONENT(pstResult->vRGB.fB, fIntermediate, fChroma, (fH - orx2F(1.0f / 3.0f)));
00547 }
00548 }
00549
00550
00551 pstResult->fAlpha = _pstSrc->fAlpha;
00552
00553
00554 return pstResult;
00555 }
00556
00562 static orxCOLOR *orxFASTCALL orxColor_FromRGBToHSV(orxCOLOR *_pstDst, const orxCOLOR *_pstSrc)
00563 {
00564 orxCOLOR *pstResult = _pstDst;
00565 orxFLOAT fMin, fMax, fDelta, fR, fG, fB;
00566
00567
00568 orxASSERT(_pstDst != orxNULL);
00569 orxASSERT(_pstSrc != orxNULL);
00570
00571
00572 fR = _pstSrc->vRGB.fR;
00573 fG = _pstSrc->vRGB.fG;
00574 fB = _pstSrc->vRGB.fB;
00575
00576
00577 fMin = orxMIN(fR, orxMIN(fG, fB));
00578 fMax = orxMAX(fR, orxMAX(fG, fB));
00579 fDelta = fMax - fMin;
00580
00581
00582 pstResult->vHSL.fV = fMax;
00583
00584
00585 if(fDelta == orxFLOAT_0)
00586 {
00587
00588 pstResult->vHSL.fH = pstResult->vHSL.fS = orxFLOAT_0;
00589 }
00590 else
00591 {
00592
00593 pstResult->vHSL.fS = fDelta / fMax;
00594
00595
00596 if(fR == fMax)
00597 {
00598
00599 pstResult->vHSL.fH = orx2F(1.0f / 6.0f) * (fG - fB) / fDelta;
00600 }
00601
00602 else if(fG == fMax)
00603 {
00604
00605 pstResult->vHSL.fH = orx2F(1.0f / 3.0f) + (orx2F(1.0f / 6.0f) * (fB - fR) / fDelta);
00606 }
00607
00608 else
00609 {
00610
00611 pstResult->vHSL.fH = orx2F(2.0f / 3.0f) + (orx2F(1.0f / 6.0f) * (fR - fG) / fDelta);
00612 }
00613
00614
00615 if(pstResult->vHSL.fH < orxFLOAT_0)
00616 {
00617 pstResult->vHSL.fH += orxFLOAT_1;
00618 }
00619 else if(pstResult->vHSL.fH > orxFLOAT_1)
00620 {
00621 pstResult->vHSL.fH -= orxFLOAT_1;
00622 }
00623 }
00624
00625
00626 pstResult->fAlpha = _pstSrc->fAlpha;
00627
00628
00629 return pstResult;
00630 }
00631
00637 static orxCOLOR *orxFASTCALL orxColor_FromHSVToRGB(orxCOLOR *_pstDst, const orxCOLOR *_pstSrc)
00638 {
00639 orxCOLOR *pstResult = _pstDst;
00640 orxFLOAT fH, fS, fV;
00641
00642
00643 orxASSERT(_pstDst != orxNULL);
00644 orxASSERT(_pstSrc != orxNULL);
00645
00646
00647 fH = _pstSrc->vRGB.fH;
00648 fS = _pstSrc->vRGB.fS;
00649 fV = _pstSrc->vRGB.fV;
00650
00651
00652 if(fS == orxFLOAT_0)
00653 {
00654
00655 orxVector_SetAll(&(pstResult->vRGB), fV);
00656 }
00657 else
00658 {
00659 orxFLOAT fFullHue, fSector, fIntermediate;
00660
00661
00662 fIntermediate = fV * fS;
00663
00664
00665 fFullHue = orx2F(6.0f) * fH;
00666 fSector = orxMath_Floor(fFullHue);
00667
00668
00669 switch(orxF2U(fSector))
00670 {
00671 default:
00672 case 0:
00673 {
00674
00675 pstResult->vRGB.fR = fV;
00676 pstResult->vRGB.fG = fV - (fIntermediate - (fIntermediate * (fFullHue - fSector)));
00677 pstResult->vRGB.fB = fV - fIntermediate;
00678
00679 break;
00680 }
00681
00682 case 1:
00683 {
00684
00685 pstResult->vRGB.fR = fV - (fIntermediate * (fFullHue - fSector));
00686 pstResult->vRGB.fG = fV;
00687 pstResult->vRGB.fB = fV - fIntermediate;
00688
00689 break;
00690 }
00691
00692 case 2:
00693 {
00694
00695 pstResult->vRGB.fR = fV - fIntermediate;
00696 pstResult->vRGB.fG = fV;
00697 pstResult->vRGB.fB = fV - (fIntermediate - (fIntermediate * (fFullHue - fSector)));
00698
00699 break;
00700 }
00701
00702 case 3:
00703 {
00704
00705 pstResult->vRGB.fR = fV - fIntermediate;
00706 pstResult->vRGB.fG = fV - (fIntermediate * (fFullHue - fSector));
00707 pstResult->vRGB.fB = fV;
00708
00709 break;
00710 }
00711
00712 case 4:
00713 {
00714
00715 pstResult->vRGB.fR = fV - (fIntermediate - (fIntermediate * (fFullHue - fSector)));
00716 pstResult->vRGB.fG = fV - fIntermediate;
00717 pstResult->vRGB.fB = fV;
00718
00719 break;
00720 }
00721
00722 case 5:
00723 {
00724
00725 pstResult->vRGB.fR = fV;
00726 pstResult->vRGB.fG = fV - fIntermediate;
00727 pstResult->vRGB.fB = fV - (fIntermediate * (fFullHue - fSector));
00728
00729 break;
00730 }
00731 }
00732 }
00733
00734
00735 pstResult->fAlpha = _pstSrc->fAlpha;
00736
00737
00738 return pstResult;
00739 }
00740
00741
00742
00743
00744
00745
00749 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_Init();
00750
00753 extern orxDLLAPI void orxFASTCALL orxDisplay_Exit();
00754
00755
00759 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_Swap();
00760
00770 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_TransformText(const orxSTRING _zString, const orxBITMAP *_pstFont, const orxCHARACTER_MAP *_pstMap, const orxDISPLAY_TRANSFORM *_pstTransform, orxDISPLAY_SMOOTHING _eSmoothing, orxDISPLAY_BLEND_MODE _eBlendMode);
00771
00772
00778 extern orxDLLAPI orxBITMAP *orxFASTCALL orxDisplay_CreateBitmap(orxU32 _u32Width, orxU32 _u32Height);
00779
00783 extern orxDLLAPI void orxFASTCALL orxDisplay_DeleteBitmap(orxBITMAP *_pstBitmap);
00784
00785
00789 extern orxDLLAPI orxBITMAP *orxFASTCALL orxDisplay_GetScreenBitmap();
00790
00796 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_GetScreenSize(orxFLOAT *_pfWidth, orxFLOAT *_pfHeight);
00797
00798
00804 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_ClearBitmap(orxBITMAP *_pstBitmap, orxRGBA _stColor);
00805
00810 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetDestinationBitmap(orxBITMAP *_pstDst);
00811
00819 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_TransformBitmap(const orxBITMAP *_pstSrc, const orxDISPLAY_TRANSFORM *_pstTransform, orxDISPLAY_SMOOTHING _eSmoothing, orxDISPLAY_BLEND_MODE _eBlendMode);
00820
00821
00828 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetBitmapData(orxBITMAP *_pstBitmap, const orxU8 *_au8Data, orxU32 _u32ByteNumber);
00829
00836 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetBitmapColorKey(orxBITMAP *_pstBitmap, orxRGBA _stColor, orxBOOL _bEnable);
00837
00843 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetBitmapColor(orxBITMAP *_pstBitmap, orxRGBA _stColor);
00844
00853 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetBitmapClipping(orxBITMAP *_pstBitmap, orxU32 _u32TLX, orxU32 _u32TLY, orxU32 _u32BRX, orxU32 _u32BRY);
00854
00855
00864 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_BlitBitmap(const orxBITMAP *_pstSrc, orxFLOAT _fPosX, orxFLOAT _fPosY, orxDISPLAY_SMOOTHING _eSmoothing, orxDISPLAY_BLEND_MODE _eBlendMode);
00865
00866
00872 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SaveBitmap(const orxBITMAP *_pstBitmap, const orxSTRING _zFileName);
00873
00878 extern orxDLLAPI orxBITMAP *orxFASTCALL orxDisplay_LoadBitmap(const orxSTRING _zFileName);
00879
00880
00887 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_GetBitmapData(orxBITMAP *_pstBitmap, orxU8 *_au8Data, orxU32 _u32ByteNumber);
00888
00893 extern orxDLLAPI orxRGBA orxFASTCALL orxDisplay_GetBitmapColor(const orxBITMAP *_pstBitmap);
00894
00901 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_GetBitmapSize(const orxBITMAP *_pstBitmap, orxFLOAT *_pfWidth, orxFLOAT *_pfHeight);
00902
00903
00909 extern orxDLLAPI orxHANDLE orxFASTCALL orxDisplay_CreateShader(const orxSTRING _zCode, const orxLINKLIST *_pstParamList);
00910
00914 extern orxDLLAPI void orxFASTCALL orxDisplay_DeleteShader(orxHANDLE _hShader);
00915
00920 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_StartShader(const orxHANDLE _hShader);
00921
00926 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_StopShader(const orxHANDLE _hShader);
00927
00935 extern orxDLLAPI orxS32 orxFASTCALL orxDisplay_GetParameterID(orxHANDLE _hShader, const orxSTRING _zParam, orxS32 _s32Index, orxBOOL _bIsTexture);
00936
00943 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetShaderBitmap(orxHANDLE _hShader, orxS32 _s32ID, const orxBITMAP *_pstValue);
00944
00951 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetShaderFloat(orxHANDLE _hShader, orxS32 _s32ID, orxFLOAT _fValue);
00952
00959 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetShaderVector(orxHANDLE _hShader, orxS32 _s32ID, const orxVECTOR *_pvValue);
00960
00961
00966 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_EnableVSync(orxBOOL _bEnable);
00967
00971 extern orxDLLAPI orxBOOL orxFASTCALL orxDisplay_IsVSyncEnabled();
00972
00973
00978 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetFullScreen(orxBOOL _bFullScreen);
00979
00983 extern orxDLLAPI orxBOOL orxFASTCALL orxDisplay_IsFullScreen();
00984
00985
00989 extern orxDLLAPI orxU32 orxFASTCALL orxDisplay_GetVideoModeCounter();
00990
00996 extern orxDLLAPI orxDISPLAY_VIDEO_MODE *orxFASTCALL orxDisplay_GetVideoMode(orxU32 _u32Index, orxDISPLAY_VIDEO_MODE *_pstVideoMode);
00997
01002 extern orxDLLAPI orxSTATUS orxFASTCALL orxDisplay_SetVideoMode(const orxDISPLAY_VIDEO_MODE *_pstVideoMode);
01003
01008 extern orxDLLAPI orxBOOL orxFASTCALL orxDisplay_IsVideoModeAvailable(const orxDISPLAY_VIDEO_MODE *_pstVideoMode);
01009
01010
01011 #endif
01012