Previous: 4.51.2.4.10. ogCopyLineTo() To the Table of Contents Next: 4.51.2.4.12. ogCopyPal()
4.51.2.4.10. ogCopyLineTo() Table of Contents 4.51.2.4.12. ogCopyPal()

- 4.51.2.4.11. -
Table of Contents
4. Standard Units
4.51. ObjGfx40 - ObjectGraphics 4.0 Unit
4.51.2. ObjGfx40 Unit Object Types
4.51.2.4. ogSurface object
4.51.2.4.11. ogCopyBuf()


4.51.2.4.11. ogCopyBuf()

Targets: MS-DOS, Win32 console


ObjGfx40 Unit

Copies a portion of another surface.

Declaration:
  procedure ogCopyBuf(dX1, dY1:int32;
                       var srcObject:ogSurface; 
                       sX1, sY1, sX2, sY2:int32);
Remarks:

Copies the region (sX1,sY1),(sX2,sY2) from srcObject to (dX1,dY1) of the destination object. This function is useful for copying a specific region of another ogSurface object.

If the source and dest have different bit-depths or pixel formats this function will automatically convert to the destination's pixel format.

Clips to the destination surface if necessary.

Restrictions:

If any of the source region is outside the bounds of srcObject this function will copy nothing.

See also:

Sample code:
{ogCopyBuf.pas}

uses
  ObjGfx40, CRT;

var
  buf:^ogSurface;
  xx, yy:uInt32;
  colour:uInt8;
  
begin

  new(buf, ogInit);

  {Create an 8BPP buffer}
  if not buf^.ogCreate(32, 32, OG_PIXFMT_8BPP) then
    begin
      writeln('Error alloctating memory for buffer');
      halt
    end;

  {Set the video mode to true colour}
  if not screen^.ogCreate(640, 480, OG_PIXFMT_32BPP) then
    begin
      writeln('Error setting video mode');
      halt
    end;

  colour:=0;  {used for ogFillCircle()}
  repeat
    {Draw circles in the 8bpp buffer}
    with buf^ do
      for xx:=ogGetMaxX-1 downto 0 do
        ogFillCircle((ogGetMaxX+1) div 2, (ogGetMaxY+1) div 2, xx,colour+xx);

    {Now tile the smaller buffer onto the screen.  The ogCopyBuf() method
     handles the pixel conversion from 8bpp to true colour}
    for yy:=0 to ((screen^.ogGetMaxY+1) div (buf^.ogGetMaxY+1))-1 do
      for xx:=0 to ((screen^.ogGetMaxX+1) div (buf^.ogGetMaxX+1))-1 do
        screen^.ogCopyBuf(xx*(buf^.ogGetMaxX+1), yy*(buf^.ogGetMaxY+1),
                          buf^,
                          0, 0, buf^.ogGetMaxX, buf^.ogGetMaxY);

    inc(colour);
  until keyPressed;
  while keyPressed do readkey;

  dispose(buf, ogDone);
end.



Previous: 4.51.2.4.10. ogCopyLineTo() To the Table of Contents Next: 4.51.2.4.12. ogCopyPal()
4.51.2.4.10. ogCopyLineTo() Table of Contents 4.51.2.4.12. ogCopyPal()

- 4.51.2.4.11. -