Changeset 52 for trunk/LocalPlayer/CityScreen.pas
- Timestamp:
- Jan 11, 2017, 10:14:11 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LocalPlayer/CityScreen.pas
r38 r52 431 431 end; 432 432 433 procedure MakeRed(x, y, w, h: integer); 434 type 435 TLine = array [0 .. 99999, 0 .. 2] of byte; 436 PLine = ^TLine; 437 438 procedure RedLine(line: PLine; length: integer); 439 var 440 i, gray: integer; 441 begin 442 for i := 0 to length - 1 do 443 begin 444 gray := (integer(line[i, 0]) + integer(line[i, 1]) + integer(line[i, 2]) 433 procedure MakeRed(X, Y, W, H: Integer); 434 var 435 XX, YY: Integer; 436 Gray: Integer; 437 PixelPtr: PPixel32; 438 LinePtr: PPixel32; 439 begin 440 Offscreen.BeginUpdate; 441 LinePtr := GetBitmapPixelPtr(Offscreen, X, Y); 442 for YY := 0 to h - 1 do begin 443 PixelPtr := LinePtr; 444 for XX := 0 to w - 1 do begin 445 Gray := (Integer(PixelPtr^.B) + Integer(PixelPtr^.G) + Integer(PixelPtr^.R) 445 446 ) * 85 shr 8; 446 line[i, 0] := 0; 447 line[i, 1] := 0; 448 line[i, 2] := gray; // 255-(255-gray) div 2; 447 PixelPtr^.B := 0; 448 PixelPtr^.G := 0; 449 PixelPtr^.R := Gray; // 255-(255-gray) div 2; 450 PixelPtr := Pointer(PixelPtr) + (Offscreen.RawImage.Description.BitsPerPixel shr 3); 449 451 end; 450 end; 451 452 var 453 i: integer; 454 begin 455 Offscreen.BeginUpdate; 456 for i := 0 to h - 1 do 457 RedLine(@(PLine(offscreen.ScanLine[y + i])[x]), w); 452 LinePtr := Pointer(LinePtr) + Offscreen.RawImage.Description.BytesPerLine; 453 end; 458 454 Offscreen.EndUpdate; 459 455 end;
Note:
See TracChangeset
for help on using the changeset viewer.