Buffer.BltColorFill(EmptyRect, BackColor);
}
-void DDScrollBuffer_Blt()
+void DDScrollBuffer_Blt_Ext(Bitmap *target_bitmap)
{
RECT DR, SR;
long tX, tY, L;
if (NoDisplayFlag)
return;
-
+#if 0
// --- On Error GoTo BltEH
DirectX.GetWindowRect(mhWnd, DR);
// --- On Error GoTo 0
+#endif
{
tX = (DR.right - DR.left) / Stretch;
// DR.top = DR.top - Stretch * (mScrollY + mDestYOff)
// End If
}
+
+#if 1
+
+#if 0
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_Blt(): blit from %d, %d [%ld, %ld] [%ld, %ld]\n",
+ SR.left, SR.top, mScrollX, mScrollY, mDestXOff, mDestYOff);
+#endif
+
+#if 0
+ /* !!! quick and dirty -- FIX THIS !!! */
+ if (tape.playing && tape.fast_forward &&
+ target_bitmap == window &&
+ (FrameCounter % 2) != 0)
+ printf("::: FrameCounter == %d\n", FrameCounter);
+#endif
+
+#if 1
+ SyncDisplay();
+#endif
+
+#if 1
+ BlitBitmap(screenBitmap, target_bitmap,
+ SR.left, SR.top,
+ SCR_FIELDX * TILEX, SCR_FIELDY * TILEY, SX, SY);
+#endif
+
+#if 1
+ FlushDisplay();
+#endif
+
+ return;
+
+#endif
+
// DDraw.WaitForVerticalBlank DDWAITVB_BLOCKBEGIN, 0
if (IS_NOTHING(&Buffer, sizeof(Buffer)))
return;
// BltEH:
}
+void DDScrollBuffer_Blt()
+{
+ DDScrollBuffer_Blt_Ext(window);
+}
+
void DDScrollBuffer_ScrollTo(int X, int Y)
{
if (NoDisplayFlag)
mScrollY = Y;
ScrollX = mScrollX;
ScrollY = mScrollY;
+
+#if 0
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTo(): mScroll: %ld, %ld [%d, %d]\n",
+ mScrollX, mScrollY, X, Y);
+#endif
}
void DDScrollBuffer_ScrollTowards(int X, int Y, double Step)
if (NoDisplayFlag)
return;
+#if 0
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (1) mScroll: %ld, %ld [%d, %d, %f]\n",
+ mScrollX, mScrollY, X, Y, Step);
+#endif
+
X = X / Stretch;
Y = Y / Stretch;
dx = X - mScrollX;
mScrollY = mScrollY + dY * r;
ScrollX = mScrollX;
ScrollY = mScrollY;
+
+#if 0
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_ScrollTowards(): (2) mScroll: %ld, %ld [%d, %d, %f]\n",
+ mScrollX, mScrollY, X, Y, Step);
+#endif
}
void DDScrollBuffer_SoftScrollTo(int X, int Y, long TimeMS, int FPS)
long oldX, oldY, maxD;
static boolean AlreadyRunning = False;
-#if 1
- printf("::: 1: DDScrollBuffer.c: DDScrollBuffer_SoftScrollTo: X,Y == %d, %d [%f]\n", X, Y, Stretch);
-#endif
-
if (NoDisplayFlag)
return;
Y = Y / Stretch;
dx = X - mScrollX;
dY = Y - mScrollY;
- maxD = (Abs(dx) < Abs(dY) ? Abs(dY) : Abs(dY));
+ maxD = (Abs(dx) < Abs(dY) ? Abs(dY) : Abs(dx));
StepCount = FPS * (TimeMS / (double)1000);
if (StepCount > maxD)
StepCount = maxD;
if (StepCount == 0)
StepCount = 1;
-#if 1
- printf("::: 2: DDScrollBuffer.c: DDScrollBuffer_SoftScrollTo: %f, %d, %ld, %ld [%d, %d, %ld, %ld]\n",
- tStep, FPS, TimeMS, maxD,
- X, Y, mScrollX, mScrollY);
-#endif
-
dT = 1000 / FPS;
tStep = (double)1 / StepCount;
oldX = mScrollX;
SoftScrollEH:
AlreadyRunning = False;
+
+#if 0
+ printf("::: DDScrollBuffer.c: DDScrollBuffer_SoftScrollTo(): mScroll: %ld, %ld\n",
+ mScrollX, mScrollY);
+#endif
}