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
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
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,
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
case BMF_1BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
- if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
+ if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
{
- if (zoomX>1)
- DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
- else
- DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ else
+ DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ }
} 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));
+ }
}
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
}
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_16BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_16BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_16BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
}
}
break;
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
SrcSizeY = SourceRect->bottom;
SrcSizeX = SourceRect->right;
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_1BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, color);
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, color);
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
case BMF_32BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_1BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_1BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_1BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
SrcSizeY = SourceRect->bottom;
SrcSizeX = SourceRect->right;
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
case BMF_1BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
else
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));
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ }
+
} else {
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ }
}
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- }
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
+
}
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, color);
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, color);
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_24BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_24BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_24BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
DPRINT("DIB_32BPP_StretchBlt: Source BPP: %u, srcRect: (%d,%d)-(%d,%d), dstRect: (%d,%d)-(%d,%d)\n",
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
-
+
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
case BMF_1BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
{
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ }
} else {
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ }
}
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
+
+
}
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- }
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_32BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- }
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_32BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_32BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ }
+
+ }
}
break;
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
+
SrcSizeY = SourceRect->bottom;
SrcSizeX = SourceRect->right;
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
case BMF_1BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if (sx > SourceRect->right) break;
- if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
+ if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
{
- if (zoomX>1)
- DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
- else
- DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ else
+ DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ }
- } 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));
-
+ } else {
+
+ 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));
+ }
}
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, color);
- else
- DIB_4BPP_PutPixel(DestSurf, DesX, DesY, color);
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, color);
+ else
+ DIB_4BPP_PutPixel(DestSurf, DesX, count, color);
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_4BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_4BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_4BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
int DesY;
int color;
int zoomX;
+ int zoomY;
+ int count;
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,
zoomX = DesSizeX / SrcSizeX;
if (zoomX==0) zoomX=1;
+ zoomY = DesSizeY / SrcSizeY;
+ if (zoomY==0) zoomY=1;
+
switch(SourceSurf->iBitmapFormat)
{
case BMF_1BPP:
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
if(DIB_1BPP_GetPixel(SourceSurf, sx, sy) == 0)
{
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 0));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 0));
+ }
+
} else {
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, 1));
+
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, 1));
+ }
}
}
}
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+ }
}
break;
/* FIXME : MaskOrigin, BrushOrigin, ClipRegion, Mode ? */
/* 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)
sy = (int) ((ULONG) SrcSizeY * (ULONG) DesY) / ((ULONG) DesSizeY);
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
- if (zoomX>1)
- DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
- else
- DIB_8BPP_PutPixel(DestSurf, DesX, DesY, XLATEOBJ_iXlate(ColorTranslation, color));
-
+ for (count=DesY;count<DesY+zoomY;count++)
+ {
+ if (zoomX>1)
+ DIB_8BPP_HLine(DestSurf, DesX, DesX + zoomX, count, XLATEOBJ_iXlate(ColorTranslation, color));
+ else
+ DIB_8BPP_PutPixel(DestSurf, DesX, count, XLATEOBJ_iXlate(ColorTranslation, color));
}
+
+ }
}
break;