mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 09:50:02 +00:00
small optimze for StretchBlt
now do only getpixel ones instead call hole time on getpixel for the color value when it stretch to biger BMP the hole stretchblt need to be optimze this code are geting it working bit faster and it is reference implementation svn path=/trunk/; revision=15710
This commit is contained in:
parent
17d0c2f684
commit
bf6e782ee1
6 changed files with 357 additions and 204 deletions
|
@ -627,6 +627,8 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
DPRINT("DIB_16BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
DPRINT("DIB_16BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
||||||
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom,
|
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom,
|
||||||
|
@ -641,13 +643,16 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
case BMF_1BPP:
|
case BMF_1BPP:
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -666,18 +671,24 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
||||||
|
{
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
{
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
else
|
else
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (zoomX>1)
|
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
|
||||||
else
|
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
|
if (zoomX>1)
|
||||||
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
else
|
||||||
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -687,7 +698,7 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -709,10 +720,13 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -722,7 +736,7 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -742,10 +756,13 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -755,7 +772,7 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -774,10 +791,13 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -786,7 +806,7 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -805,10 +825,13 @@ BOOLEAN DIB_16BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -495,6 +495,8 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
SrcSizeY = SourceRect->bottom;
|
SrcSizeY = SourceRect->bottom;
|
||||||
SrcSizeX = SourceRect->right;
|
SrcSizeX = SourceRect->right;
|
||||||
|
@ -505,6 +507,9 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
|
@ -512,7 +517,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -534,10 +539,14 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_1BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_1BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, color);
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, color);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -546,7 +555,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -568,11 +577,13 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -581,7 +592,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -601,10 +612,13 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -614,7 +628,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -634,10 +648,13 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -647,7 +664,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -667,10 +684,13 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -679,7 +699,7 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -699,10 +719,13 @@ BOOLEAN DIB_1BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -319,6 +319,8 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
SrcSizeY = SourceRect->bottom;
|
SrcSizeY = SourceRect->bottom;
|
||||||
SrcSizeX = SourceRect->right;
|
SrcSizeX = SourceRect->right;
|
||||||
|
@ -329,13 +331,16 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
case BMF_1BPP:
|
case BMF_1BPP:
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -351,21 +356,25 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
else
|
else
|
||||||
sx = (int) ((ULONG) DesSizeX * (ULONG) DesX) / ((ULONG) SrcSizeX);
|
sx = (int) ((ULONG) DesSizeX * (ULONG) DesX) / ((ULONG) SrcSizeX);
|
||||||
|
|
||||||
if (sx > SourceRect->right) break;
|
|
||||||
|
|
||||||
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
||||||
{
|
{
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -375,7 +384,7 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -394,10 +403,14 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -406,7 +419,7 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -425,10 +438,15 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -437,7 +455,7 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -456,10 +474,15 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -468,7 +491,7 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -487,10 +510,15 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, color);
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, color);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -499,7 +527,7 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -519,10 +547,13 @@ BOOLEAN DIB_24BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -561,6 +561,8 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
|
||||||
DPRINT("DIB_32BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
DPRINT("DIB_32BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
||||||
|
@ -576,13 +578,16 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
case BMF_1BPP:
|
case BMF_1BPP:
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -601,17 +606,24 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
||||||
|
{
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
{
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -621,7 +633,7 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -644,10 +656,13 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -657,7 +672,7 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -677,10 +692,15 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -689,7 +709,7 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -708,10 +728,14 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -720,7 +744,7 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -739,10 +763,15 @@ BOOLEAN DIB_32BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -373,6 +373,9 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
|
|
||||||
SrcSizeY = SourceRect->bottom;
|
SrcSizeY = SourceRect->bottom;
|
||||||
SrcSizeX = SourceRect->right;
|
SrcSizeX = SourceRect->right;
|
||||||
|
@ -383,13 +386,16 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
case BMF_1BPP:
|
case BMF_1BPP:
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -408,18 +414,24 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
||||||
|
{
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
{
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
else
|
else
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (zoomX>1)
|
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
|
||||||
else
|
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
|
if (zoomX>1)
|
||||||
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
else
|
||||||
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -429,7 +441,7 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -451,10 +463,13 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
|
||||||
else
|
else
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, color);
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, color);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -464,7 +479,7 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -497,7 +512,7 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -517,10 +532,13 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -530,7 +548,7 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -550,10 +568,13 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -563,7 +584,7 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -583,11 +604,13 @@ BOOLEAN DIB_4BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -551,6 +551,8 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
int DesY;
|
int DesY;
|
||||||
int color;
|
int color;
|
||||||
int zoomX;
|
int zoomX;
|
||||||
|
int zoomY;
|
||||||
|
int count;
|
||||||
|
|
||||||
DPRINT("DIB_8BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
DPRINT("DIB_8BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
|
||||||
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom,
|
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom,
|
||||||
|
@ -565,13 +567,16 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
zoomX = DesSizeX / SrcSizeX;
|
zoomX = DesSizeX / SrcSizeX;
|
||||||
if (zoomX==0) zoomX=1;
|
if (zoomX==0) zoomX=1;
|
||||||
|
|
||||||
|
zoomY = DesSizeY / SrcSizeY;
|
||||||
|
if (zoomY==0) zoomY=1;
|
||||||
|
|
||||||
switch(SourceSurf->iBitmapFormat)
|
switch(SourceSurf->iBitmapFormat)
|
||||||
{
|
{
|
||||||
case BMF_1BPP:
|
case BMF_1BPP:
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -590,16 +595,24 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
if (sx > SourceRect->right) break;
|
if (sx > SourceRect->right) break;
|
||||||
|
|
||||||
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
|
||||||
|
{
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
{
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -609,7 +622,7 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -631,10 +644,13 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -643,7 +659,7 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -663,10 +679,13 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -676,7 +695,7 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -696,11 +715,13 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -709,7 +730,7 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
|
||||||
/* This is a reference implementation, it hasn't been optimized for speed */
|
/* This is a reference implementation, it hasn't been optimized for speed */
|
||||||
|
|
||||||
for (DesY=0; DesY<DestRect->bottom; DesY++)
|
for (DesY=0; DesY<DestRect->bottom; DesY+=zoomY)
|
||||||
{
|
{
|
||||||
if (DesSizeY>SrcSizeY)
|
if (DesSizeY>SrcSizeY)
|
||||||
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
|
||||||
|
@ -729,10 +750,13 @@ BOOLEAN DIB_8BPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
|
||||||
|
|
||||||
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
|
||||||
|
|
||||||
|
for (count=DesY;count<DesY+zoomY;count++)
|
||||||
|
{
|
||||||
if (zoomX>1)
|
if (zoomX>1)
|
||||||
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
else
|
else
|
||||||
DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
|
DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue