- Timestamp:
- Aug 26, 2024, 6:30:43 PM (4 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LocalPlayer/IsoEngine.pas
r552 r608 373 373 DitherMask.SetSize(xxt * 2, yyt * 2); 374 374 DitherMask.Canvas.FillRect(0, 0, DitherMask.Width, DitherMask.Height); 375 BitBltBitmap (DitherMask, 0, 0, xxt * 2, yyt * 2,375 BitBltBitmapPrecise(DitherMask, 0, 0, xxt * 2, yyt * 2, 376 376 HGrTerrain.Mask, 1 + 7 * (xxt * 2 + 1), 377 377 1 + yyt + 15 * (yyt * 3 + 1), SRCAND, True); … … 390 390 end; 391 391 for Y := -1 to 6 do 392 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt,392 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, 393 393 xxt * 2, yyt, HGrTerrain.Data, xSrc, ySrc, SRCCOPY, True); 394 394 for Y := -2 to 6 do 395 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, xxt,395 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, xxt, 396 396 yyt, HGrTerrain.Data, xSrc + xxt, ySrc + yyt, SRCPAINT, True); 397 397 for Y := -2 to 6 do 398 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2) + xxt, (Y + 2) * yyt,398 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2) + xxt, (Y + 2) * yyt, 399 399 xxt, yyt, HGrTerrain.Data, xSrc, ySrc + yyt, SRCPAINT, True); 400 400 for Y := -2 to 6 do 401 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, xxt,401 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, xxt, 402 402 yyt, DitherMask, xxt, yyt, SRCAND, True); 403 403 for Y := -2 to 6 do 404 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2) + xxt, (Y + 2) * yyt,404 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2) + xxt, (Y + 2) * yyt, 405 405 xxt, yyt, DitherMask, 0, yyt, SRCAND, True); 406 406 end; … … 419 419 end; 420 420 for X := -2 to 6 do 421 BitBltBitmap (LandMore, (X + 2) * (xxt * 2), (Y + 2) * yyt,421 BitBltBitmapPrecise(LandMore, (X + 2) * (xxt * 2), (Y + 2) * yyt, 422 422 xxt * 2, yyt, HGrTerrain.Data, xSrc, ySrc, SRCCOPY, True); 423 BitBltBitmap (LandMore, xxt * 2, (Y + 2) * yyt, xxt, yyt,423 BitBltBitmapPrecise(LandMore, xxt * 2, (Y + 2) * yyt, xxt, yyt, 424 424 HGrTerrain.Data, xSrc + xxt, ySrc + yyt, SRCPAINT, True); 425 425 for X := 0 to 7 do 426 BitBltBitmap (LandMore, (X + 2) * (xxt * 2) - xxt, (Y + 2) * yyt,426 BitBltBitmapPrecise(LandMore, (X + 2) * (xxt * 2) - xxt, (Y + 2) * yyt, 427 427 xxt * 2, yyt, HGrTerrain.Data, xSrc, ySrc + yyt, SRCPAINT, True); 428 428 for X := -2 to 6 do 429 BitBltBitmap (LandMore, (X + 2) * (xxt * 2), (Y + 2) * yyt,429 BitBltBitmapPrecise(LandMore, (X + 2) * (xxt * 2), (Y + 2) * yyt, 430 430 xxt * 2, yyt, DitherMask, 0, 0, SRCAND, True); 431 431 end; … … 438 438 ySrc := 1 + yyt; 439 439 if (X >= 1) = (Y >= 2) then 440 BitBltBitmap (OceanPatch, X * (xxt * 2), Y * yyt, xxt * 2, yyt,440 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2), Y * yyt, xxt * 2, yyt, 441 441 HGrTerrain.Data, xSrc, ySrc, SRCCOPY, True); 442 442 if (X >= 1) and ((Y < 2) or (X >= 2)) then 443 443 begin 444 BitBltBitmap (OceanPatch, X * (xxt * 2), Y * yyt, xxt, yyt,444 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2), Y * yyt, xxt, yyt, 445 445 HGrTerrain.Data, xSrc + xxt, ySrc + yyt, SRCPAINT, True); 446 BitBltBitmap (OceanPatch, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt,446 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt, 447 447 HGrTerrain.Data, xSrc, ySrc + yyt, SRCPAINT, True); 448 448 end; 449 BitBltBitmap (OceanPatch, X * (xxt * 2), Y * yyt, xxt, yyt,449 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2), Y * yyt, xxt, yyt, 450 450 DitherMask, xxt, yyt, SRCAND, True); 451 BitBltBitmap (OceanPatch, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt,451 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt, 452 452 DitherMask, 0, yyt, SRCAND, True); 453 453 end; … … 461 461 ySrc := 1 + yyt; 462 462 if (X < 1) or (Y >= 2) then 463 BitBltBitmap (OceanMore, X * (xxt * 2), Y * yyt, xxt * 2, yyt,463 BitBltBitmapPrecise(OceanMore, X * (xxt * 2), Y * yyt, xxt * 2, yyt, 464 464 HGrTerrain.Data, xSrc, ySrc, SRCCOPY, True); 465 465 if (X = 1) and (Y < 2) or (X >= 2) and (Y >= 1) then 466 466 begin 467 BitBltBitmap (OceanMore, X * (xxt * 2), Y * yyt, xxt, yyt,467 BitBltBitmapPrecise(OceanMore, X * (xxt * 2), Y * yyt, xxt, yyt, 468 468 HGrTerrain.Data, xSrc + xxt, ySrc + yyt, SRCPAINT, True); 469 BitBltBitmap (OceanMore, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt,469 BitBltBitmapPrecise(OceanMore, X * (xxt * 2) + xxt, Y * yyt, xxt, yyt, 470 470 HGrTerrain.Data, xSrc, ySrc + yyt, SRCPAINT, True); 471 471 end; 472 BitBltBitmap (OceanMore, X * (xxt * 2), Y * yyt, xxt * 2, yyt,472 BitBltBitmapPrecise(OceanMore, X * (xxt * 2), Y * yyt, xxt * 2, yyt, 473 473 DitherMask, 0, 0, SRCAND, True); 474 474 end; 475 475 end; 476 476 477 BitBltBitmap (DitherMask, 0, 0, xxt * 2, yyt * 2,477 BitBltBitmapPrecise(DitherMask, 0, 0, xxt * 2, yyt * 2, 478 478 DitherMask, 0, 0, DSTINVERT, True); { invert dither mask } 479 BitBltBitmap (DitherMask, 0, 0, xxt * 2, yyt * 2,479 BitBltBitmapPrecise(DitherMask, 0, 0, xxt * 2, yyt * 2, 480 480 HGrTerrain.Mask, 1, 1 + yyt, SRCPAINT, True); 481 481 482 482 for X := -1 to 6 do 483 483 for Y := -2 to 6 do 484 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt,484 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2), (Y + 2) * yyt, 485 485 xxt * 2, yyt, DitherMask, 0, 0, SRCAND, True); 486 486 487 487 for Y := -1 to 6 do 488 488 for X := -2 to 7 do 489 BitBltBitmap (LandMore, (X + 2) * (xxt * 2) - xxt, (Y + 2) * yyt,489 BitBltBitmapPrecise(LandMore, (X + 2) * (xxt * 2) - xxt, (Y + 2) * yyt, 490 490 xxt * 2, yyt, DitherMask, 0, yyt, SRCAND, True); 491 491 492 BitBltBitmap (LandPatch, 0, 0, (xxt * 2) * 9, yyt * 9,492 BitBltBitmapPrecise(LandPatch, 0, 0, (xxt * 2) * 9, yyt * 9, 493 493 LandMore, 0, 0, SRCPAINT, True); 494 494 495 495 for X := 0 to 3 do 496 496 for Y := 0 to 3 do 497 BitBltBitmap (OceanPatch, X * (xxt * 2), Y * yyt, xxt * 2, yyt,497 BitBltBitmapPrecise(OceanPatch, X * (xxt * 2), Y * yyt, xxt * 2, yyt, 498 498 DitherMask, 0, 0, SRCAND, True); 499 499 500 500 for Y := 0 to 3 do 501 501 for X := 0 to 4 do 502 BitBltBitmap (OceanMore, X * (xxt * 2) - xxt, Y * yyt, xxt * 2,502 BitBltBitmapPrecise(OceanMore, X * (xxt * 2) - xxt, Y * yyt, xxt * 2, 503 503 yyt, DitherMask, 0, yyt, SRCAND, True); 504 504 505 BitBltBitmap (OceanPatch, 0, 0, (xxt * 2) * 4, yyt * 4, OceanMore, 0, 0,505 BitBltBitmapPrecise(OceanPatch, 0, 0, (xxt * 2) * 4, yyt * 4, OceanMore, 0, 0, 506 506 SRCPAINT, True); 507 507 … … 510 510 FillRect(Rect(0, 0, xxt * 2, yyt)); 511 511 end; 512 BitBltBitmap (DitherMask, 0, 0, xxt * 2, yyt, HGrTerrain.Mask, 1, 1 + yyt,512 BitBltBitmapPrecise(DitherMask, 0, 0, xxt * 2, yyt, HGrTerrain.Mask, 1, 1 + yyt, 513 513 SRCCOPY, True); 514 514 515 515 for X := 0 to 6 do 516 BitBltBitmap (LandPatch, (X + 2) * (xxt * 2), yyt, xxt * 2, yyt,516 BitBltBitmapPrecise(LandPatch, (X + 2) * (xxt * 2), yyt, xxt * 2, yyt, 517 517 DitherMask, 0, 0, SRCAND, True); 518 BitBltBitmap (DitherMask, 0, 0, xxt * 2, yyt, DitherMask, 0, 0, DSTINVERT, True);518 BitBltBitmapPrecise(DitherMask, 0, 0, xxt * 2, yyt, DitherMask, 0, 0, DSTINVERT, True); 519 519 520 520 for Y := 0 to 6 do 521 BitBltBitmap (LandPatch, xxt * 2, (Y + 2) * yyt, xxt * 2, yyt,521 BitBltBitmapPrecise(LandPatch, xxt * 2, (Y + 2) * yyt, xxt * 2, yyt, 522 522 DitherMask, 0, 0, SRCAND, True); 523 523 … … 626 626 627 627 {$IFDEF DPI} 628 BitBltBitmap (FOutput, X, Y, Width, Height, Src, xSrc, ySrc, Rop, Precise);628 BitBltBitmapPrecise(FOutput, X, Y, Width, Height, Src, xSrc, ySrc, Rop, Precise); 629 629 {$ELSE} 630 630 BitBltCanvas(FOutput.Canvas, X, Y, Width, Height, Src.Canvas, xSrc, ySrc, Rop); … … 669 669 Exit; 670 670 671 BitBltBitmap (FOutput, xDst, yDst, Width, Height, HGrTerrain.Mask, xSrc, ySrc, SRCAND, Precise);671 BitBltBitmapPrecise(FOutput, xDst, yDst, Width, Height, HGrTerrain.Mask, xSrc, ySrc, SRCAND, Precise); 672 672 if not PureBlack then 673 BitBltBitmap (FOutput, xDst, yDst, Width, Height, HGrTerrain.Data, xSrc, ySrc, SRCPAINT, Precise);673 BitBltBitmapPrecise(FOutput, xDst, yDst, Width, Height, HGrTerrain.Data, xSrc, ySrc, SRCPAINT, Precise); 674 674 end; 675 675 -
trunk/Packages/CevoComponents/ScreenTools.pas
r589 r608 106 106 function ScaleToNativeDist(Base, Value: Integer): Integer; 107 107 function ScaleFromNative(Value: Integer): Integer; 108 function BitBltBitmapPrecise(Dest: TBitmap; X, Y, Width, Height: Integer; Src: TBitmap; 109 XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY; Precise: Boolean = False): Boolean; 108 110 {$ENDIF} 109 111 procedure UnshareBitmap(Bitmap: TBitmap); … … 1683 1685 Result := Value; 1684 1686 end; 1687 1688 function BitBltBitmapPrecise(Dest: TBitmap; X, Y, Width, Height: Integer; Src: TBitmap; 1689 XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY; Precise: Boolean = False): Boolean; 1690 begin 1691 Result := BitBltBitmap(Dest, X, Y, Width, Height, Src, XSrc, YSrc, Rop); 1692 end; 1685 1693 {$ENDIF} 1686 1694 -
trunk/Packages/DpiControls/Dpi.Common.pas
r568 r608 14 14 function BitBltCanvas(Dest: TCanvas; X, Y, Width, Height: Integer; Src: TCanvas; 15 15 XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY): Boolean; 16 function BitBltBitmap (Dest: TBitmap; X, Y, Width, Height: Integer; Src: TBitmap;16 function BitBltBitmapPrecise(Dest: TBitmap; X, Y, Width, Height: Integer; Src: TBitmap; 17 17 XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY; Precise: Boolean = False): Boolean; 18 18 function CreateRectRgn(X1, Y1, X2, Y2: Integer): HRGN; … … 55 55 end; 56 56 57 function BitBltBitmap (Dest: TBitmap; X, Y, Width, Height: Integer;57 function BitBltBitmapPrecise(Dest: TBitmap; X, Y, Width, Height: Integer; 58 58 Src: TBitmap; XSrc, YSrc: Integer; Rop: DWORD = SRCCOPY; 59 59 Precise: Boolean = False): Boolean; … … 64 64 DstPixelX, DstPixelY: Integer; 65 65 DstPixelWidth, DstPixelHeight: Integer; 66 NewY: Integer;67 66 begin 68 67 if not Precise or (Frac(ScreenInfo.Dpi / 96) = 0) then begin
Note:
See TracChangeset
for help on using the changeset viewer.