@ -11,24 +11,6 @@
namespace devilution {
namespace devilution {
namespace {
constexpr size_t FrameHeaderSize = 10 ;
struct SkipSize {
int_fast16_t wholeLines ;
int_fast16_t xOffset ;
} ;
SkipSize GetSkipSize ( int_fast16_t overrun , int_fast16_t srcWidth )
{
SkipSize result ;
result . wholeLines = overrun / srcWidth ;
result . xOffset = overrun - srcWidth * result . wholeLines ;
return result ;
}
} // namespace
uint16_t Cl2ToClx ( const uint8_t * data , size_t size ,
uint16_t Cl2ToClx ( const uint8_t * data , size_t size ,
PointerOrValue < uint16_t > widthOrWidths , std : : vector < uint8_t > & clxData )
PointerOrValue < uint16_t > widthOrWidths , std : : vector < uint8_t > & clxData )
{
{
@ -74,6 +56,7 @@ uint16_t Cl2ToClx(const uint8_t *data, size_t size,
const uint16_t frameWidth = widthOrWidths . HoldsPointer ( ) ? widthOrWidths . AsPointer ( ) [ frame - 1 ] : widthOrWidths . AsValue ( ) ;
const uint16_t frameWidth = widthOrWidths . HoldsPointer ( ) ? widthOrWidths . AsPointer ( ) [ frame - 1 ] : widthOrWidths . AsValue ( ) ;
const size_t frameHeaderPos = clxData . size ( ) ;
const size_t frameHeaderPos = clxData . size ( ) ;
constexpr size_t FrameHeaderSize = 10 ;
clxData . resize ( clxData . size ( ) + FrameHeaderSize ) ;
clxData . resize ( clxData . size ( ) + FrameHeaderSize ) ;
WriteLE16 ( & clxData [ frameHeaderPos ] , FrameHeaderSize ) ;
WriteLE16 ( & clxData [ frameHeaderPos ] , FrameHeaderSize ) ;
WriteLE16 ( & clxData [ frameHeaderPos + 2 ] , frameWidth ) ;
WriteLE16 ( & clxData [ frameHeaderPos + 2 ] , frameWidth ) ;
@ -110,14 +93,9 @@ uint16_t Cl2ToClx(const uint8_t *data, size_t size,
}
}
}
}
+ + frameHeight ;
const auto skipSize = GetSkipSize ( remainingWidth , static_cast < int_fast16_t > ( frameWidth ) ) ;
if ( remainingWidth < 0 ) {
xOffset = skipSize . xOffset ;
const auto skipSize = GetSkipSize ( - remainingWidth , static_cast < int_fast16_t > ( frameWidth ) ) ;
frameHeight + = skipSize . wholeLines ;
xOffset = skipSize . xOffset ;
frameHeight + = skipSize . wholeLines ;
} else {
xOffset = 0 ;
}
}
}
if ( ! pixels . empty ( ) ) {
if ( ! pixels . empty ( ) ) {
AppendClxPixelsOrFillRun ( pixels . data ( ) , pixels . size ( ) , clxData ) ;
AppendClxPixelsOrFillRun ( pixels . data ( ) , pixels . size ( ) , clxData ) ;