25constexpr tInt g_nGCL_ItemSize =
sizeof(tUInt32);
26constexpr tInt g_nGCL_CommandSize = g_nGCL_ItemSize;
27constexpr tInt g_nGCL_ParamSize = g_nGCL_ItemSize;
28constexpr tInt g_nGCL_ExtraSize = g_nGCL_ItemSize;
216 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId)
218 ASSERT_IF_POINTER_NULL(pCommandBlock);
220 *(pCommandBlock++) = nCommandId;
242 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tInt n)
244 ASSERT_IF_POINTER_NULL(pCommandBlock);
246 *(pCommandBlock++) = nCommandId;
247 *(pCommandBlock++) = n;
268 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tInt x, tInt y)
270 ASSERT_IF_POINTER_NULL(pCommandBlock);
272 *(pCommandBlock++) = nCommandId;
273 *(pCommandBlock++) = x;
274 *(pCommandBlock++) = y;
295 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y)
297 ASSERT_IF_POINTER_NULL(pCommandBlock);
299 *(pCommandBlock++) = nCommandId;
300 tFloat32* pCmd = (tFloat32*) pCommandBlock;
327 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tInt x, tInt y, tInt z)
329 ASSERT_IF_POINTER_NULL(pCommandBlock);
331 *(pCommandBlock++) = nCommandId;
332 *(pCommandBlock++) = x;
333 *(pCommandBlock++) = y;
334 *(pCommandBlock++) = z;
356 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tInt z)
358 ASSERT_IF_POINTER_NULL(pCommandBlock);
360 *(pCommandBlock++) = nCommandId;
361 tFloat32* pCmd = (tFloat32*) pCommandBlock;
364 pCommandBlock[2] = z;
388 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tFloat32 radius)
390 ASSERT_IF_POINTER_NULL(pCommandBlock);
392 *(pCommandBlock++) = nCommandId;
393 tFloat32* pCmd = (tFloat32*) pCommandBlock;
420 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tInt x1, tInt y1, tInt x2, tInt y2)
422 ASSERT_IF_POINTER_NULL(pCommandBlock);
424 *(pCommandBlock++) = nCommandId;
425 *(pCommandBlock++) = x1;
426 *(pCommandBlock++) = y1;
427 *(pCommandBlock++) = x2;
428 *(pCommandBlock++) = y2;
452 StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tFloat32 x1, tFloat32 y1, tFloat32 x2, tFloat32 y2)
454 ASSERT_IF_POINTER_NULL(pCommandBlock);
456 *(pCommandBlock++) = nCommandId;
457 tFloat32* pCmd = (tFloat32*) pCommandBlock;
483 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tInt nParamCount,
const tUInt32* pParams)
485 ASSERT_IF_POINTER_NULL(pCommandBlock);
486 ASSERT_IF_POINTER_NULL(pParams);
490 RETURN_ERROR(ERR_INVALID_ARG);
493 *(pCommandBlock++) = nCommandId;
495 return StoreData(pCommandBlock, nParamCount, pParams);
511 static tResult
StoreData(tUInt32*& pCommandBlock, tUInt32 nParam)
513 ASSERT_IF_POINTER_NULL(pCommandBlock);
515 *(pCommandBlock++) = nParam;
535 static tResult
StoreData(tUInt32*& pCommandBlock, tInt nParamCount,
const tUInt32* pParams)
537 ASSERT_IF_POINTER_NULL(pCommandBlock);
538 ASSERT_IF_POINTER_NULL(pParams);
542 RETURN_ERROR(ERR_INVALID_ARG);
545 for (tInt nIdx = 0; nIdx < nParamCount; nIdx++)
547 *(pCommandBlock++) = *(pParams++);
568 static tResult
StoreData(tUInt32*& pCommandBlock, tInt nByteCount,
const tUInt8* pData)
570 ASSERT_IF_POINTER_NULL(pCommandBlock);
571 ASSERT_IF_POINTER_NULL(pData);
575 RETURN_ERROR(ERR_INVALID_ARG);
578 tInt nParamCount = (nByteCount +
sizeof(tUInt32) - 1) /
sizeof(tUInt32);
580 tInt nCompleteParams = nByteCount /
sizeof(tUInt32);
581 tUInt32* pParams = (tUInt32*) pData;
583 for (tInt nIdx = 0; nIdx < nCompleteParams; nIdx++)
585 *(pCommandBlock++) = *(pParams++);
588 if (nParamCount > nCompleteParams)
590 tInt nRemainingBytes = nByteCount %
sizeof(tUInt32);
592 tUInt8* pSrcBytePtr = (tUInt8*) pParams;
593 tUInt8* pDestBytePtr = (tUInt8*) pCommandBlock;
595 for (tUInt nIdx = 0; nIdx <
sizeof(tUInt32); nIdx++)
597 if (nRemainingBytes > 0)
599 *(pDestBytePtr++) = *(pSrcBytePtr++);
604 *(pDestBytePtr++) = 0;
629 static tResult
StoreData(tUInt32*& pCommandBlock, tInt nByteCount,
const tChar* pData)
633 RETURN_ERROR(ERR_INVALID_ARG);
636 return StoreData(pCommandBlock, nByteCount, (
const tUInt8*) pData);
654 static tResult
StoreCommand(tUInt32*& pCommandBlock, tUInt32 nCommandId, tUInt16 nPattern, tInt nFactor)
656 ASSERT_IF_POINTER_NULL(pCommandBlock);
658 *(pCommandBlock++) = nCommandId;
659 *(pCommandBlock++) = nPattern;
660 *(pCommandBlock++) = nFactor;
682 RETURN_IF_POINTER_NULL(pCommandBlock);
702 RETURN_IF_POINTER_NULL(pCommandBlock);
704 if (pCDynamicMemoryBlock)
706 delete pCDynamicMemoryBlock;
707 pCommandBlock =
nullptr;
710 RETURN_ERROR_DESC(ERR_INVALID_ARG,
"IDynamicMemoryBlock instance was not allocated by GetDynamicMemoryBlock");
727 ASSERT_IF_POINTER_NULL(pCommandBlock);
729 tUInt32 aCommand[] = {nCommandId};
731 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
753 ASSERT_IF_POINTER_NULL(pCommandBlock);
755 tInt aCommand[] = {
static_cast<tInt
>(nCommandId), n};
757 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
778 ASSERT_IF_POINTER_NULL(pCommandBlock);
780 tInt aCommand[] = {
static_cast<tInt
>(nCommandId), x, y};
782 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
803 ASSERT_IF_POINTER_NULL(pCommandBlock);
806 tFloat32* pCommand = (tFloat32*) aCommand;
807 aCommand[0] = nCommandId;
811 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
834 ASSERT_IF_POINTER_NULL(pCommandBlock);
836 tUInt32 aCommand[] = {nCommandId,
static_cast<tUInt32
>(x),
static_cast<tUInt32
>(y),
static_cast<tUInt32
>(z)};
838 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
861 ASSERT_IF_POINTER_NULL(pCommandBlock);
864 tFloat32* pCommand = (tFloat32*) aCommand;
865 aCommand[0] = nCommandId;
870 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
893 ASSERT_IF_POINTER_NULL(pCommandBlock);
896 tFloat32* pCommand = (tFloat32*) aCommand;
897 aCommand[0] = nCommandId;
900 pCommand[3] = radius;
902 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
926 ASSERT_IF_POINTER_NULL(pCommandBlock);
928 tInt aCommand[] = {
static_cast<tInt
>(nCommandId), x1, y1, x2, y2};
930 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
952 ASSERT_IF_POINTER_NULL(pCommandBlock);
954 tInt aCommand[] = {
static_cast<tInt
>(nCommandId), nPattern, nFactor};
956 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
978 IDynamicMemoryBlock*& pCommandBlock, tUInt32 nCommandId, tFloat32 x1, tFloat32 y1, tFloat32 x2, tFloat32 y2)
980 ASSERT_IF_POINTER_NULL(pCommandBlock);
983 tFloat32* pCommand = (tFloat32*) aCommand;
984 aCommand[0] = nCommandId;
990 pCommandBlock->
Append((tVoid*) aCommand,
sizeof(aCommand));
1012 ASSERT_IF_POINTER_NULL(pCommandBlock);
1013 ASSERT_IF_POINTER_NULL(pParams);
1015 if (nParamCount < 0)
1017 RETURN_ERROR(ERR_INVALID_ARG);
1020 pCommandBlock->
Append((tVoid*) &nCommandId,
sizeof(nCommandId));
1022 return StoreData(pCommandBlock, nParamCount, pParams);
1038 ASSERT_IF_POINTER_NULL(pCommandBlock);
1040 pCommandBlock->
Append((tVoid*) &nParam,
sizeof(nParam));
1060 ASSERT_IF_POINTER_NULL(pCommandBlock);
1061 ASSERT_IF_POINTER_NULL(pParams);
1063 if (nParamCount < 0)
1065 RETURN_ERROR(ERR_INVALID_ARG);
1068 pCommandBlock->
Append((tVoid*) pParams, nParamCount *
sizeof(*pParams));
1088 ASSERT_IF_POINTER_NULL(pCommandBlock);
1089 ASSERT_IF_POINTER_NULL(pData);
1093 RETURN_ERROR(ERR_INVALID_ARG);
1096 tInt nParamCount = nByteCount /
sizeof(tUInt32);
1097 if (nByteCount %
sizeof(tUInt32))
1102 tInt nCompleteParams = nByteCount /
sizeof(tUInt32);
1103 tUInt32* pParams = (tUInt32*) pData;
1105 pCommandBlock->
Append((tVoid*) pParams, nCompleteParams *
sizeof(tUInt32));
1106 pParams += nCompleteParams;
1108 if (nParamCount > nCompleteParams)
1110 tInt nRemainingBytes = nByteCount %
sizeof(tUInt32);
1111 tUInt8* pSrcBytePtr = (tUInt8*) pParams;
1113 for (tUInt nIdx = 0; nIdx <
sizeof(tUInt32); nIdx++)
1115 if (nRemainingBytes > 0)
1117 pCommandBlock->
Append((tVoid*) pSrcBytePtr++,
sizeof(tUInt8));
1122 tUInt8 nFillVal = 0;
1123 pCommandBlock->
Append((tVoid*) &nFillVal,
sizeof(tUInt8));
1146 ASSERT_IF_POINTER_NULL(pCommandBlock);
1147 ASSERT_IF_POINTER_NULL(pData);
1151 RETURN_ERROR(ERR_INVALID_ARG);
1154 return StoreData(pCommandBlock, nByteCount, (
const tUInt8*) pData);
1160using dengar::cGCLWriter;
The IDynamicMemoryBlock interface extends allocated memory dynamically.
virtual tResult Append(const tVoid *pvData, tInt nDataSize)=0
Append data to the allocated memory.
Dynamic memory block class.
Helper class for generating graphics command lists.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y)
Stores a GCL command with two float parameters in the dynamic memory block.
static tResult GetDynamicMemoryBlock(IDynamicMemoryBlock *&pCommandBlock)
Creates and returns a pointer to the IDynamicMemoryBlock interface.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tInt x1, tInt y1, tInt x2, tInt y2)
Stores a GCL command with four integer parameters in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tInt x1, tInt y1, tInt x2, tInt y2)
Stores a GCL command with four integer parameters in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tInt nParamCount, const tUInt32 *pParams)
Stores a GCL command with an array of tUInt32 in the dynamic memory block.
static tResult StoreData(tUInt32 *&pCommandBlock, tUInt32 nParam)
Stores one tUInt32 in the buffer.
static tResult StoreData(tUInt32 *&pCommandBlock, tInt nByteCount, const tChar *pData)
Stores an array of characters in the buffer.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tUInt16 nPattern, tInt nFactor)
Stores a GCL command with one UInt16 and one int parameters in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tFloat32 radius)
Stores a GCL command with three float parameters in the buffer.
static tResult StoreData(tUInt32 *&pCommandBlock, tInt nByteCount, const tUInt8 *pData)
Stores an array of bytes in the buffer.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tInt z)
Stores a GCL command with two float and one integer parameters in the buffer.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tInt n)
Stores a GCL command with one integer parameter in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId)
Stores a GCL command in the dynamic memory block.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tInt n)
Stores a GCL command with one integer parameter in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tInt x, tInt y, tInt z)
Stores a GCL command with three integer parameters in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tUInt16 nPattern, tInt nFactor)
Stores a GCL command with one UInt16 and one int parameters in the dynamic memory block.
static tResult FreeDynamicMemoryBlock(IDynamicMemoryBlock *&pCommandBlock)
Deallocates or frees a dynamic memory block.
static tResult StoreData(IDynamicMemoryBlock *&pCommandBlock, tInt nByteCount, const tChar *pData)
Stores an array of characters in the dynamic memory block.
static tResult StoreData(tUInt32 *&pCommandBlock, tInt nParamCount, const tUInt32 *pParams)
Stores an array of tUInt32 in the buffer.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tFloat32 x1, tFloat32 y1, tFloat32 x2, tFloat32 y2)
Stores a GCL command with four float parameters in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tInt x, tInt y)
Stores a GCL command with two integer parameters in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId)
Stores a GCL command in the buffer.
static tResult StoreData(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nParam)
Stores one tUInt32 in the dynamic memory block.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tFloat32 x1, tFloat32 y1, tFloat32 x2, tFloat32 y2)
Stores a GCL command with four float parameters in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tInt nParamCount, const tUInt32 *pParams)
Stores a GCL command with an array of tUInt32 in the buffer.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y)
Stores a GCL command with two float parameters in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tFloat32 radius)
Stores a GCL command with three float parameters in the dynamic memory block.
static tResult StoreData(IDynamicMemoryBlock *&pCommandBlock, tInt nByteCount, const tUInt8 *pData)
Stores an array of bytes in the dynamic memory block.
static tResult StoreData(IDynamicMemoryBlock *&pCommandBlock, tInt nParamCount, const tUInt32 *pParams)
Stores an array of tUInt32 in the dynamic memory block.
static tResult StoreCommand(tUInt32 *&pCommandBlock, tUInt32 nCommandId, tInt x, tInt y)
Stores a GCL command with two integer parameters in the buffer.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tFloat32 x, tFloat32 y, tInt z)
Stores a GCL command with two float and one integer parameters in the dynamic memory block.
static tResult StoreCommand(IDynamicMemoryBlock *&pCommandBlock, tUInt32 nCommandId, tInt x, tInt y, tInt z)
Stores a GCL command with three integer parameters in the dynamic memory block.
Copyright © Audi Electronics Venture GmbH.
Namespace for functionality provided by the Display Toolbox.