Isle
Loading...
Searching...
No Matches
mxvideopresenter.cpp
Go to the documentation of this file.
1#include "mxvideopresenter.h"
2
3#include "mxautolock.h"
4#include "mxdisplaysurface.h"
5#include "mxdsmediaaction.h"
6#include "mxdssubscriber.h"
7#include "mxmisc.h"
8#include "mxregion.h"
9#include "mxvideomanager.h"
10
13
14// FUNCTION: LEGO1 0x100b24f0
16{
17 m_width = p_bitmap.GetBmiWidth();
18 m_height = p_bitmap.GetBmiHeightAbs();
19
20 MxS32 size = ((m_width * m_height) / 8) + 1;
21 m_bitmask = new MxU8[size];
22 memset(m_bitmask, 0, size);
23
24 // The goal here is to enable us to walk through the bitmap's rows
25 // in order, regardless of the orientation. We want to end up at the
26 // start of the first row, which is either at position 0, or at
27 // (image_stride * biHeight) - 1.
28
29 // Reminder: Negative biHeight means this is a top-down DIB.
30 // Otherwise it is bottom-up.
31
32 MxU8* bitmapSrcPtr = p_bitmap.GetStart(0, 0);
33
34 // How many bytes are there for each row of the bitmap?
35 // (i.e. the image stride)
36 // If this is a bottom-up DIB, we will walk it in reverse.
37 MxS32 rowSeek = p_bitmap.AlignToFourByte(m_width);
38 if (p_bitmap.GetBmiHeader()->biCompression != BI_RGB_TOPDOWN && p_bitmap.GetBmiHeight() >= 0) {
39 rowSeek = -rowSeek;
40 }
41
42 // The actual offset into the m_bitmask array. The two for-loops
43 // are just for counting the pixels.
44 MxS32 offset = 0;
45
46 for (MxS32 j = 0; j < m_height; j++) {
47 MxU8* tPtr = bitmapSrcPtr;
48 for (MxS32 i = 0; i < m_width; i++) {
49 if (*tPtr) {
50 m_bitmask[offset / 8] |= (1 << (offset % 8));
51 }
52 tPtr++;
53 offset++;
54 }
55 // Seek to the start of the next row
56 bitmapSrcPtr += rowSeek;
57 tPtr = bitmapSrcPtr;
58 }
59}
60
61// FUNCTION: LEGO1 0x100b2670
63{
64 m_width = p_alpha.m_width;
65 m_height = p_alpha.m_height;
66
67 MxS32 size = ((m_width * m_height) / 8) + 1;
68 m_bitmask = new MxU8[size];
69 memcpy(m_bitmask, p_alpha.m_bitmask, size);
70}
71
72// FUNCTION: LEGO1 0x100b26d0
74{
75 if (m_bitmask) {
76 delete[] m_bitmask;
77 }
78}
79
80// FUNCTION: LEGO1 0x100b26f0
82{
83 if (p_x >= m_width || p_y >= m_height) {
84 return 0;
85 }
86
87 MxS32 pos = p_y * m_width + p_x;
88 return m_bitmask[pos / 8] & (1 << (pos % 8)) ? 1 : 0;
89}
90
91// FUNCTION: LEGO1 0x100b2760
92void MxVideoPresenter::Init()
93{
95 m_alpha = NULL;
96 m_unk0x5c = 1;
98 m_unk0x60 = -1;
100
101 if (MVideoManager() != NULL) {
103 SetBit1(TRUE);
104 SetBit2(FALSE);
105 }
106
107 SetBit3(FALSE);
108 SetBit4(FALSE);
109}
110
111// FUNCTION: LEGO1 0x100b27b0
112void MxVideoPresenter::Destroy(MxBool p_fromDestructor)
113{
114 if (MVideoManager() != NULL) {
116 }
117
118 if (m_unk0x58) {
119 m_unk0x58->Release();
120 m_unk0x58 = NULL;
121 SetBit1(FALSE);
122 SetBit2(FALSE);
123 }
124
125 if (MVideoManager() && (m_alpha || m_frameBitmap)) {
126 // MxRect32 rect(m_location, MxSize32(GetWidth(), GetHeight()));
127 MxS32 height = GetHeight();
128 MxS32 width = GetWidth();
129 MxS32 x = m_location.GetX();
130 MxS32 y = m_location.GetY();
131
132 MxRect32 rect(x, y, x + width, y + height);
134 MVideoManager()->UpdateView(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight());
135 }
136
137 delete m_frameBitmap;
138 delete m_alpha;
139
140 Init();
141
142 if (!p_fromDestructor) {
144 }
145}
146
147// FUNCTION: LEGO1 0x100b28b0
148// FUNCTION: BETA10 0x101389c1
150{
151 MxStreamChunk* chunk = NextChunk();
152
153 if (chunk->GetChunkFlags() & DS_CHUNK_END_OF_STREAM) {
156 }
157 else {
158 LoadFrame(chunk);
160 }
161}
162
163// FUNCTION: LEGO1 0x100b2900
164// FUNCTION: BETA10 0x10138a3a
166{
167 MxDSAction* action = GetAction();
168 if ((action == NULL) || (((action->GetFlags() & MxDSAction::c_bit11) == 0) && !IsEnabled()) ||
169 (!m_frameBitmap && !m_alpha)) {
170 return FALSE;
171 }
172
173 if (!m_frameBitmap) {
174 return m_alpha->IsHit(p_x - m_location.GetX(), p_y - m_location.GetY());
175 }
176
178 rect += GetLocation();
179
180 if (p_x < rect.GetLeft() || p_x >= rect.GetRight() || p_y < rect.GetTop() || p_y >= rect.GetBottom()) {
181 return FALSE;
182 }
183
184 MxU8* pixel = m_frameBitmap->GetStart(p_x - rect.GetLeft(), p_y - rect.GetTop());
185
186 if (GetBit4()) {
187 return (MxBool) *pixel;
188 }
189
190 if ((GetAction()->GetFlags() & MxDSAction::c_bit4) && *pixel == 0) {
191 return FALSE;
192 }
193
194 return TRUE;
195}
196
197inline MxS32 MxVideoPresenter::PrepareRects(RECT& p_rectDest, RECT& p_rectSrc)
198{
199 if (p_rectDest.top > 480 || p_rectDest.left > 640 || p_rectSrc.top > 480 || p_rectSrc.left > 640) {
200 return -1;
201 }
202
203 if (p_rectDest.bottom > 480) {
204 p_rectDest.bottom = 480;
205 }
206
207 if (p_rectDest.right > 640) {
208 p_rectDest.right = 640;
209 }
210
211 if (p_rectSrc.bottom > 480) {
212 p_rectSrc.bottom = 480;
213 }
214
215 if (p_rectSrc.right > 640) {
216 p_rectSrc.right = 640;
217 }
218
219 LONG height, width;
220 if ((height = (p_rectDest.bottom - p_rectDest.top) + 1) <= 1 ||
221 (width = (p_rectDest.right - p_rectDest.left) + 1) <= 1) {
222 return -1;
223 }
224 else if ((p_rectSrc.right - p_rectSrc.left + 1) == width && (p_rectSrc.bottom - p_rectSrc.top + 1) == height) {
225 return 1;
226 }
227 else {
228 p_rectSrc.right = (p_rectSrc.left + width) - 1;
229 p_rectSrc.bottom = (p_rectSrc.top + height) - 1;
230 return 0;
231 }
232}
233
234// FUNCTION: LEGO1 0x100b2a70
236{
237 MxDisplaySurface* displaySurface = MVideoManager()->GetDisplaySurface();
238 MxRegion* region = MVideoManager()->GetRegion();
239 MxRect32 rect(MxPoint32(0, 0), MxSize32(GetWidth(), GetHeight()));
240 rect += GetLocation();
241 LPDIRECTDRAWSURFACE ddSurface = displaySurface->GetDirectDrawSurface2();
242
244 if (m_unk0x58) {
245 RECT src, dest;
246 src.top = 0;
247 src.left = 0;
248 src.right = GetWidth();
249 src.bottom = GetHeight();
250
251 dest.left = GetX();
252 dest.top = GetY();
253 dest.right = dest.left + GetWidth();
254 dest.bottom = dest.top + GetHeight();
255
256 switch (PrepareRects(src, dest)) {
257 case 0:
258 ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
259 break;
260 case 1:
261 ddSurface->BltFast(dest.left, dest.top, m_unk0x58, &src, DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
262 }
263 }
264 else {
265 displaySurface->VTable0x30(
267 0,
268 0,
269 rect.GetLeft(),
270 rect.GetTop(),
273 TRUE
274 );
275 }
276 }
277 else {
278 MxRegionCursor cursor(region);
279 MxRect32* regionRect;
280
281 while ((regionRect = cursor.Next(rect))) {
282 if (regionRect->GetWidth() >= 1 && regionRect->GetHeight() >= 1) {
283 RECT src, dest;
284
285 if (m_unk0x58) {
286 src.left = regionRect->GetLeft() - GetX();
287 src.top = regionRect->GetTop() - GetY();
288 src.right = src.left + regionRect->GetWidth();
289 src.bottom = src.top + regionRect->GetHeight();
290
291 dest.left = regionRect->GetLeft();
292 dest.top = regionRect->GetTop();
293 dest.right = dest.left + regionRect->GetWidth();
294 dest.bottom = dest.top + regionRect->GetHeight();
295 }
296
298 if (m_unk0x58) {
299 if (PrepareRects(src, dest) >= 0) {
300 ddSurface->Blt(&dest, m_unk0x58, &src, DDBLT_KEYSRC, NULL);
301 }
302 }
303 else {
304 displaySurface->VTable0x30(
306 regionRect->GetLeft() - GetX(),
307 regionRect->GetTop() - GetY(),
308 regionRect->GetLeft(),
309 regionRect->GetTop(),
310 regionRect->GetWidth(),
311 regionRect->GetHeight(),
312 FALSE
313 );
314 }
315 }
316 else if (m_unk0x58) {
317 if (PrepareRects(src, dest) >= 0) {
318 ddSurface->Blt(&dest, m_unk0x58, &src, 0, NULL);
319 }
320 }
321 else {
322 displaySurface->VTable0x28(
324 regionRect->GetLeft() - GetX(),
325 regionRect->GetTop() - GetY(),
326 regionRect->GetLeft(),
327 regionRect->GetTop(),
328 regionRect->GetWidth(),
329 regionRect->GetHeight()
330 );
331 }
332 }
333 }
334 }
335}
336
337// FUNCTION: LEGO1 0x100b2f60
339{
340 MxStreamChunk* chunk = NextChunk();
341
342 if (chunk) {
343 LoadHeader(chunk);
345 ParseExtra();
347 }
348}
349
350// FUNCTION: LEGO1 0x100b2fa0
352{
353 MxStreamChunk* chunk = CurrentChunk();
354
355 if (chunk && m_action->GetElapsedTime() >= chunk->GetTime()) {
356 CreateBitmap();
358 }
359}
360
361// FUNCTION: LEGO1 0x100b2fe0
363{
365 if (!m_currentChunk) {
367 }
368
369 if (m_currentChunk) {
372 }
373 }
374 else {
375 for (MxS16 i = 0; i < m_unk0x5c; i++) {
376 if (!m_currentChunk) {
378
379 if (!m_currentChunk) {
380 break;
381 }
382 }
383
385 break;
386 }
387
391 SetBit0(TRUE);
392
394 break;
395 }
396 }
397
398 if (GetBit0()) {
399 m_unk0x5c = 5;
400 }
401 }
402}
403
404// FUNCTION: LEGO1 0x100b3080
406{
407 if (IsEnabled()) {
409 if (!m_currentChunk) {
411 }
412
413 if (m_currentChunk) {
416 }
417 }
418 else {
419 for (MxS16 i = 0; i < m_unk0x5c; i++) {
420 if (!m_currentChunk) {
422
423 if (!m_currentChunk) {
424 break;
425 }
426 }
427
429 break;
430 }
431
434 SetBit0(TRUE);
435
437 break;
438 }
439 }
440
441 if (GetBit0()) {
442 m_unk0x5c = 5;
443 }
444 }
445 }
446}
447
448// FUNCTION: LEGO1 0x100b3130
450{
451 MxLong sustainTime = ((MxDSMediaAction*) m_action)->GetSustainTime();
452
453 if (sustainTime != -1) {
454 if (sustainTime) {
455 if (m_unk0x60 == -1) {
457 }
458
459 if (m_action->GetElapsedTime() >= m_unk0x60 + ((MxDSMediaAction*) m_action)->GetSustainTime()) {
461 }
462 }
463 else {
465 }
466 }
467}
468
469// FUNCTION: LEGO1 0x100b31a0
471{
472 MxResult result = FAILURE;
473
474 if (MVideoManager()) {
475 result = SUCCESS;
477 }
478
479 return result;
480}
481
482// FUNCTION: LEGO1 0x100b31d0
483// FUNCTION: BETA10 0x101396d9
485{
486 if (m_action) {
489
490 if (m_frameBitmap) {
493 MxS32 x = m_location.GetX();
494 MxS32 y = m_location.GetY();
495
496 MxRect32 rect(x, y, x + width, y + height);
497
499 }
500 }
501}
502
503// FUNCTION: LEGO1 0x100b3280
504// FUNCTION: BETA10 0x101397c0
506{
508
510 PutFrame();
511 }
512
513 return SUCCESS;
514}
515
516// FUNCTION: LEGO1 0x100b3300
518{
519 return 0;
520}
[AI] Represents an 8bpp or high color device-independent bitmap (DIB) and provides operations for bit...
Definition: mxbitmap.h:55
MxLong AlignToFourByte(MxLong p_value) const
[AI] Aligns a value up to the nearest multiple of four (stride alignment for DIBs).
Definition: mxbitmap.h:204
MxLong GetBmiHeightAbs() const
[AI] Returns the absolute value of the bitmap's height.
Definition: mxbitmap.h:242
MxLong GetBmiHeight() const
[AI] Fetches the height (could be negative if top-down) of the bitmap.
Definition: mxbitmap.h:236
MxU8 * GetStart(MxS32 p_left, MxS32 p_top) const
[AI] Returns a pointer to the starting address of the pixel data at the specified coordinates.
Definition: mxbitmap.h:288
BITMAPINFOHEADER * GetBmiHeader() const
[AI] Returns a pointer to the underlying BITMAPINFOHEADER.
Definition: mxbitmap.h:218
MxLong GetBmiWidth() const
[AI] Fetches the width (in pixels) encoded in this bitmap's header.
Definition: mxbitmap.h:224
[AI] Represents an action deserialized from SI chunks, holding key animation or script parameters suc...
Definition: mxdsaction.h:17
MxU32 GetFlags()
[AI] Returns the flag field for this action (bitmask).
Definition: mxdsaction.h:177
MxS32 GetLoopCount()
[AI] Returns the loop count for this action.
Definition: mxdsaction.h:203
virtual MxLong GetElapsedTime()
[AI] Gets elapsed time for this action since the last time field 0x90 was set.
Definition: mxdsaction.cpp:159
@ c_bit5
[AI] Unknown - possibly reserved [AI]
Definition: mxdsaction.h:24
@ c_bit11
[AI] Unknown - possibly reserved [AI]
Definition: mxdsaction.h:30
@ c_bit10
[AI] Unknown - possibly reserved [AI]
Definition: mxdsaction.h:29
@ c_bit4
[AI] Unknown - possibly reserved [AI]
Definition: mxdsaction.h:23
MxLong GetTime()
[AI] Returns the time (timestamp or tick) associated with this chunk. [AI]
Definition: mxdschunk.h:102
MxU16 GetChunkFlags()
[AI] Returns the chunk's flag bitfield. [AI]
Definition: mxdschunk.h:96
MxDSMediaAction extends MxDSAction to add media-specific playback properties and management.
void FreeDataChunk(MxStreamChunk *p_chunk)
[AI] Frees (deletes) a data chunk if it's found in the consumed data list; also forcibly deletes sing...
Provides a DirectDraw-based drawing surface for blitting bitmaps, managing palette,...
LPDIRECTDRAWSURFACE GetDirectDrawSurface2()
[AI] Returns the secondary DirectDraw surface (back buffer).
virtual void VTable0x30(MxBitmap *p_bitmap, MxS32 p_left, MxS32 p_top, MxS32 p_right, MxS32 p_bottom, MxS32 p_width, MxS32 p_height, MxBool p_RLE)
[AI] Draws a bitmap with optional transparency (RLE), outputting to active back surface.
virtual void VTable0x28(MxBitmap *p_bitmap, MxS32 p_left, MxS32 p_top, MxS32 p_right, MxS32 p_bottom, MxS32 p_width, MxS32 p_height)
[AI] Draws a bitmap onto the back surface, specified by coordinates and output size.
virtual void RegisterPresenter(MxPresenter &p_presenter)
[AI] Register a new presenter for tickle management and playback coordination.
virtual void UnregisterPresenter(MxPresenter &p_presenter)
[AI] Remove a presenter from tickle and managed output lists.
MxStreamChunk * CurrentChunk()
[AI] Returns a pointer to the current data chunk at the head of the stream, without consuming it.
MxStreamChunk * NextChunk()
[AI] Returns the next data chunk in the stream, removing it from the stream queue.
void Destroy() override
[AI] Cleans up internal resources and resets the presenter to an uninitialized state.
void EndAction() override
[AI] Ends the media playback action, releasing all resources, notifying listeners if necessary.
void RepeatingTickle() override
[AI] Per-frame update while looping/repeating over known chunks.
void StreamingTickle() override
[AI] Per-frame update when streaming the media stream.
MxDSSubscriber * m_subscriber
[AI] Subscriber that provides the stream data (e.g., audio/video chunks) for this presenter.
MxStreamChunk * m_currentChunk
[AI] Currently active data chunk for playback or processing.
[AI] 2D point with 32-bit signed integer coordinates.
Definition: mxgeometry.h:487
T GetY() const
[AI] Get Y coordinate.
Definition: mxgeometry.h:53
T GetX() const
[AI] Get X coordinate.
Definition: mxgeometry.h:48
virtual void ParseExtra()
[AI] Parses additional data from the associated action for configuration or world interaction.
Definition: mxpresenter.cpp:80
void ProgressTickleState(TickleState p_tickleState)
[AI] Helper for advancing the presenter's tickle state and updating transition history.
Definition: mxpresenter.h:72
MxPoint32 GetLocation() const
[AI] Returns the presenter's screen location (in pixels).
Definition: mxpresenter.h:163
MxBool IsEnabled()
[AI] Returns whether this presenter is logically enabled (based on the associated action's flags).
MxDSAction * m_action
[AI] The associated action currently being presented by this presenter.
Definition: mxpresenter.h:211
TickleState m_currentTickleState
[AI] Current state in the tickle lifecycle.
Definition: mxpresenter.h:199
MxS32 GetX() const
[AI] Returns the X coordinate of screen location.
Definition: mxpresenter.h:166
MxS32 GetY() const
[AI] Returns the Y coordinate of screen location.
Definition: mxpresenter.h:169
@ e_repeating
[AI] Presentation is repeating (e.g., looping media).
Definition: mxpresenter.h:28
@ e_done
[AI] Completed processing the current action.
Definition: mxpresenter.h:30
@ e_freezing
[AI] Temporarily suspending updates or playback.
Definition: mxpresenter.h:29
@ e_starting
[AI] In the process of starting playback/presentation.
Definition: mxpresenter.h:26
@ e_streaming
[AI] Streaming or rendering actively.
Definition: mxpresenter.h:27
MxCriticalSection m_criticalSection
[AI] Thread synchronization for presenter state and data.
Definition: mxpresenter.h:214
MxPoint32 m_location
[AI] 2D display location for the presenter.
Definition: mxpresenter.h:205
MxDSAction * GetAction() const
[AI] Returns the current action being presented.
Definition: mxpresenter.h:175
[AI] Rectangle using 32-bit signed integer coordinates.
Definition: mxgeometry.h:706
T GetTop() const
[AI] Get the top edge.
Definition: mxgeometry.h:231
T GetWidth() const
[AI] Get the rectangle's width.
Definition: mxgeometry.h:262
T GetRight() const
[AI] Get the right edge.
Definition: mxgeometry.h:241
T GetHeight() const
[AI] Get the rectangle's height.
Definition: mxgeometry.h:268
T GetLeft() const
[AI] Get the left edge.
Definition: mxgeometry.h:221
T GetBottom() const
[AI] Get the bottom edge.
Definition: mxgeometry.h:251
[AI] Cursor object suitable for traversing all rectangles covered by an MxRegion.
Definition: mxregion.h:389
virtual MxRect32 * Next()
[AI] Advances to and returns the next rectangle in region sequence.
Definition: mxregion.cpp:179
[AI] Represents a 2D region as a set of vertical spans each containing one or more horizontal segment...
Definition: mxregion.h:327
[AI] Size with 32-bit signed integer width and height.
Definition: mxgeometry.h:593
[AI] Represents a streamable chunk of data, typically sourced from a media buffer and designed for no...
Definition: mxstreamchunk.h:19
MxRegion * GetRegion()
[AI] Gets region-tracking structure managing currently invalidated rectangles.
virtual void UpdateView(MxU32 p_x, MxU32 p_y, MxU32 p_width, MxU32 p_height)
[AI] Updates the visible video sub-rectangle inside the overall frame; typically for sub-region blits...
void InvalidateRect(MxRect32 &p_rect)
[AI] Invalidates a rectangular region in the display; marks it for redraw on next tick.
MxDisplaySurface * GetDisplaySurface()
[AI] Returns the display surface used for video output; for direct drawing and palette operations.
Opaque mask used for efficient hit testing against video transparency.
MxS32 IsHit(MxU32 p_x, MxU32 p_y)
Checks whether the specified local coordinate is visible in the mask.
virtual ~AlphaMask()
Frees the bitmask memory.
AlphaMask(const MxBitmap &)
Creates an alpha mask from a bitmap, recording pixel presence in a bitmask.
Derived video presenter responsible for displaying video frames using DirectDraw surfaces.
virtual void LoadHeader(MxStreamChunk *p_chunk)
Loads and processes header information from a video stream chunk.
MxBool IsHit(MxS32 p_x, MxS32 p_y) override
Determines if a point is inside the non-transparent region of frame/alpha.
BYTE GetBit0()
Gets internal miscellaneous state flags (bits 0-4).
void StartingTickle() override
Advance logic for the "starting" tickle state (frame setup).
void FreezingTickle() override
Advance logic for the "freezing" tickle state (sustain after playback).
void SetBit2(BOOL p_e)
MxS32 PrepareRects(RECT &p_rectDest, RECT &p_rectSrc)
Utility function to adjust source/dest rectangles to stay within allowed bounds.
MxBitmap * m_frameBitmap
Bitmap for current video frame. [AI].
virtual MxS32 GetHeight()
Returns the height of the current bitmap or alpha mask in pixels.
void ReadyTickle() override
Advance logic for the "ready" tickle state.
virtual MxS32 GetWidth()
Returns the width of the current bitmap or alpha mask in pixels.
void EndAction() override
Signals the end of the current playback action.
virtual undefined VTable0x74()
Unknown/potentially format-specific method (VTable0x74).
MxLong m_unk0x60
Last freeze time/start of sustain interval. [AI].
void SetBit3(BOOL p_e)
virtual void NextFrame()
Advances video playback to the next frame, handling decoding and playback progression.
virtual void CreateBitmap()
Allocates and sets up the display bitmap for video frame data.
void SetBit0(BOOL p_e)
Sets internal miscellaneous state flags.
LPDIRECTDRAWSURFACE m_unk0x58
DirectDraw surface for hardware video rendering. [AI].
void StreamingTickle() override
Advance logic for the "streaming" tickle state (typical video playback).
virtual void PutFrame()
Presents the current frame using the chosen output mechanism (e.g., blitting to screen).
void SetBit1(BOOL p_e)
virtual void LoadFrame(MxStreamChunk *p_chunk)
Loads and processes frame data from a video stream chunk.
MxS16 m_unk0x5c
Loop/advance/frame decode counter. [AI].
void RepeatingTickle() override
Advance logic for the "repeating" tickle state (media looping).
MxResult PutData() override
Writes the frame to the display device if appropriate.
AlphaMask * m_alpha
Alpha mask for hit testing. May be null. [AI].
MxResult AddToManager() override
Adds this presenter to the global video manager.
void Destroy() override
Destroys internal resources for the presenter.
void SetBit4(BOOL p_e)
#define TRUE
Definition: d3drmdef.h:28
#define FALSE
Definition: d3drmdef.h:27
struct IDirectDrawSurface FAR * LPDIRECTDRAWSURFACE
Definition: ddraw.h:74
#define DDBLTFAST_WAIT
Definition: ddraw.h:2737
#define DDBLTFAST_SRCCOLORKEY
Definition: ddraw.h:2735
#define DDBLT_KEYSRC
Definition: ddraw.h:2658
#define DECOMP_SIZE_ASSERT(T, S)
Definition: decomp.h:19
unsigned char undefined
Definition: decomp.h:26
#define NULL
[AI] Null pointer value (C/C++ semantics).
Definition: legotypes.h:26
#define FAILURE
[AI] Used to indicate a failed operation in result codes.
Definition: legotypes.h:34
#define SUCCESS
[AI] Used to indicate a successful operation in result codes.
Definition: legotypes.h:30
#define AUTOLOCK(CS)
[AI] Macro for automatic locking using the MxAutoLock class. This macro instantiates an MxAutoLock ob...
Definition: mxautolock.h:5
#define BI_RGB_TOPDOWN
[AI] Non-standard biCompression value indicating top-down row order for uncompressed bitmaps.
Definition: mxbitmap.h:46
#define DS_CHUNK_END_OF_STREAM
[AI] Flag bit indicating this chunk is the last in its stream.
Definition: mxdschunk.h:14
MxVideoManager * MVideoManager()
[AI] Returns the video manager used for video/cutscene presenter management.
Definition: mxmisc.cpp:65
MxU8 MxBool
[AI]
Definition: mxtypes.h:124
MxLong MxResult
[AI]
Definition: mxtypes.h:106
int MxLong
[AI]
Definition: mxtypes.h:83
signed short MxS16
[AI]
Definition: mxtypes.h:26
unsigned char MxU8
[AI]
Definition: mxtypes.h:8
signed int MxS32
[AI]
Definition: mxtypes.h:38
unsigned int MxU32
[AI]
Definition: mxtypes.h:32