MCPcopy Create free account
hub / github.com/DentonW/DevIL / ilPKImageEncode_WritePixels_DevIL

Function ilPKImageEncode_WritePixels_DevIL

DevIL/src-IL/src/il_wdp.cpp:114–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112}
113
114ERR ilPKImageEncode_WritePixels_DevIL(PKImageEncode* pIE, U32 cLine, U8* pbPixel, U32 cbStride)
115{
116 ERR err = WMP_errSuccess;
117
118 struct WMPStream* pS = pIE->pStream;
119 size_t cbLineM = 0, cbLineS = 0;
120 I32 i = 0;
121 static U8 pPadding[4] = {0};
122
123 // header
124 if (!pIE->fHeaderDone)
125 {
126 // WriteBMPHeader() also inits this object
127 Call(WriteDevILHeader(pIE));
128 }
129
130 // body
131 // calculate line size in memory and in stream
132 cbLineM = pIE->cbPixel * pIE->uWidth;
133 cbLineS = (cbLineM + 3) / 4 * 4;
134
135 //FailIf(pRect->X < 0 || pID->uWidth <= pRect->X, WMP_errInvalidParameter);
136 //FailIf(pRect->Y < 0 || pID->uHeight <= pRect->Y, WMP_errInvalidParameter);
137 //FailIf(pRect->Width < 0 || pID->uWidth < pRect->X + pRect->Width, WMP_errInvalidParameter);
138 //FailIf(pRect->Height < 0 || pID->uHeight < pRect->Y + pRect->Height, WMP_errInvalidParameter);
139 FailIf(cbStride < cbLineM, WMP_errInvalidParameter);
140
141 for (i = cLine - 1; 0 <= i; --i)
142 {
143 size_t offM = cbStride * i;
144 size_t offS = cbLineS * (pIE->uHeight - (pIE->idxCurrentLine + i + 1));
145
146 Call(pS->SetPos(pS, pIE->offPixel + offS));
147 Call(pS->Write(pS, pbPixel + offM, cbLineM));
148 }
149 Call(pS->Write(pS, pPadding, (cbLineS - cbLineM)));
150 pIE->idxCurrentLine += cLine;
151
152Cleanup:
153 return err;
154}
155
156
157ERR PKImageEncode_Create_DevIL(

Callers

nothing calls this directly

Calls 1

WriteDevILHeaderFunction · 0.85

Tested by

no test coverage detected