return;
}
+#if 1
+
+ /* check if scrolling the playfield requires redrawing the viewport bitmap */
+ if ((mScrollX != mScrollX_last ||
+ mScrollY != mScrollY_last) &&
+ (ABS(mScrollX - mScrollX_last) >= TILEX ||
+ ABS(mScrollY - mScrollY_last) >= TILEY))
+ {
+ int dx = (ABS(mScrollX - mScrollX_last) < TILEX ? 0 :
+ mScrollX < mScrollX_last ? 1 : mScrollX > mScrollX_last ? -1 : 0);
+ int dy = (ABS(mScrollY - mScrollY_last) < TILEY ? 0 :
+ mScrollY < mScrollY_last ? 1 : mScrollY > mScrollY_last ? -1 : 0);
+
+ mScrollX_last -= dx * TILEX;
+ mScrollY_last -= dy * TILEY;
+
+ ScrollPlayfield(dx, dy);
+
+#if 0
+ printf("::: %ld, %ld\n", mScrollX, mScrollY);
+#endif
+ }
+
+#else
+
/* check if scrolling the playfield reached the destination tile position */
if ((mScrollX != mScrollX_last || mScrollY != mScrollY_last) &&
mScrollX % TILEX == 0 && mScrollY % TILEY == 0)
mScrollY_last = mScrollY;
ScrollPlayfield(dx, dy);
+
+#if 0
+ printf("::: %ld, %ld\n", mScrollX, mScrollY);
+#endif
}
+
+#endif
}
static void ScrollPlayfieldIfNeeded()
return Height;
}
+#if 0
+
long DDScrollBuffer_CreateAtSize(long Width, long Height, long hWndViewPort)
{
long CreateAtSize;
Buffer.BltColorFill(EmptyRect, BackColor);
}
+#endif
/* copy the entire screen to the window at the scroll position */
void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
{
+#if 0
+ int px = 2 * TILEX + mScrollX % TILEX;
+ int py = 2 * TILEY + mScrollY % TILEY;
+#else
int px = 2 * TILEX + (mScrollX - mScrollX_last) % TILEX;
int py = 2 * TILEY + (mScrollY - mScrollY_last) % TILEY;
+#endif
int sx, sy, sxsize, sysize;
+#if 0
+ if (mScrollX % TILEX != (mScrollX - mScrollX_last) % TILEX ||
+ mScrollY % TILEY != (mScrollY - mScrollY_last) % TILEY)
+ printf("::: %ld, %ld / %ld, %ld\n",
+ mScrollX, mScrollY, mScrollX_last, mScrollY_last);
+#endif
+
#if 1
int xsize = SXSIZE;
int ysize = SYSIZE;
sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
#endif
+#if 0
+ {
+ static int mScrollX_tmp = -1;
+ static int mScrollY_tmp = -1;
+
+ if (mScrollX != mScrollX_tmp || mScrollY != mScrollY_tmp)
+ {
+ printf("::: %ld, %ld\n", mScrollX, mScrollY);
+
+ mScrollX_tmp = mScrollX;
+ mScrollY_tmp = mScrollY;
+ }
+ }
+#endif
+
+#if 0
+ {
+ static boolean x = 0;
+
+ if (x == 0)
+ {
+ printf("::: %d, %d (%d, %d) (%d, %d) [%ld, %ld] [%ld, %ld] \n",
+ sx, sy, xsize, ysize, full_xsize, full_ysize,
+ mScrollX, mScrollY, mScrollX_last, mScrollY_last);
+
+ x = 1;
+ }
+ }
+#endif
+
#if 1
if (!menBorder.Checked)
{
}
#endif
+#if 0
+ if (mScrollX >= 0 && mScrollX <= 16)
+ {
+ px -= mScrollX;
+ }
+#if 0
+ else if (mScrollX >= 352 && mScrollX <= 368)
+ {
+ px -= mScrollX;
+ }
+#endif
+ else if (mScrollX >= 16) // && mScrollX <= 352)
+ {
+ px -= TILEX / 2;
+ }
+#endif
+
+#if 0
+ /* !!! TEST ONLY !!! */
+ px = py = 0;
+ sx = sy = SX;
+#endif
+
BlitBitmap(screenBitmap, target_bitmap, px, py, sxsize, sysize, sx, sy);
}
void DDScrollBuffer_Blt_Ext(Bitmap *target_bitmap)
{
- RECT DR, SR;
+ MyRECT DR, SR;
+#if 1
+ long tX, tY;
+#else
long tX, tY, L;
+#endif
int sX, sY;
// RECT ERect;
// long Restore;
if (IS_NOTHING(&Buffer, sizeof(Buffer)))
return;
+#if 0
if (IS_NOTHING(&PrimarySurface, sizeof(PrimarySurface)))
return;
+#endif
+
+#if 0
L = PrimarySurface.Blt(DR, &Buffer, SR, DDBLT_WAIT);
if (L != DD_OK)
break;
#endif
+#if 0
case DDERR_SURFACELOST:
DDraw.RestoreAllSurfaces();
if (! PrimarySurface.isLost())
// RestorePrimarySurface
// ClipToWindow 0
break;
+#endif
#if 0
case DDERR_UNSUPPORTED:
}
}
+#endif
+
#if 0
// Buffer.UpdateOverlay SR, PrimarySurface, DR, DDOVER_SHOW
if (EditFlag)
return;
#if 0
- printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (1) mScroll: %ld, %ld [%d, %d, %f]\n",
- mScrollX, mScrollY, X, Y, Step);
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (1) mScroll: %ld, %ld [%d, %d, %f, %f]\n",
+ mScrollX, mScrollY, X, Y, Step, Stretch);
#endif
X = X / Stretch;
long oldX, oldY, maxD;
static boolean AlreadyRunning = False;
+#if 0
+ printf(":a: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+ mScrollX, mScrollY,
+ mScrollX_last, mScrollY_last,
+ ScreenScrollXPos, ScreenScrollYPos,
+ ScrollX, ScrollY);
+#endif
+
if (NoDisplayFlag)
return;
mScrollY = oldY + T * dY;
ScrollX = mScrollX;
ScrollY = mScrollY;
- // Blt();
+
+#if 0
+ Blt();
+#endif
}
+#if 0
+ printf(":x: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+ mScrollX, mScrollY,
+ mScrollX_last, mScrollY_last,
+ ScreenScrollXPos, ScreenScrollYPos,
+ ScrollX, ScrollY);
+#endif
+
if (UserDragFlag)
goto SoftScrollEH;
mScrollY = Y;
ScrollX = mScrollX;
ScrollY = mScrollY;
- // Blt();
+
+#if 0
+ Blt();
+#endif
SoftScrollEH:
AlreadyRunning = False;
mScrollX, mScrollY);
#endif
+#if 0
+ printf(":y: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+ mScrollX, mScrollY,
+ mScrollX_last, mScrollY_last,
+ ScreenScrollXPos, ScreenScrollYPos,
+ ScrollX, ScrollY);
+#endif
+
#if 1
ScrollPlayfieldIfNeeded();
#endif
+
+#if 0
+ printf(":z: %d, %d [%d, %d] [%d, %d] [%d, %d]\n",
+ mScrollX, mScrollY,
+ mScrollX_last, mScrollY_last,
+ ScreenScrollXPos, ScreenScrollYPos,
+ ScrollX, ScrollY);
+#endif
}