| Accessing bytes of an image
The macro commands GetRow, GetColumn, PutRow and PutColumn can be used for accessing the image on a line by line basis. These macro routines use what is know as the LineBuffer array. This array is of the internally defined type known as LineType. Pascal routines such as GetLine use the LineType. If you plan on accessing 'lines' of the image within your macro, it would might be worth your while to examine the pascal examples in the pascal section. After looking at these, you probably will see how to use the LineBuffer array in a macro.
First look at the definition of LineType. LineType is globally declared as:
LineType = packed array [0..MaxLine] of UnsignedByte;
Naturally, UnsignedByte has been type defined as:
UnsignedByte = 0..255;
The example below is a macro which uses the linebuffer array. If you are interested in using a macro to get at image data, this example should be fairly clear.
Macro 'Invert lines of image';
var
i,j,width,height:integer;
begin
GetPicSize(width,height);
for i:=1 to height do begin
GetRow(0,i,width);
for j:=1 to width do begin
LineBuffer[j] := 255-LineBuffer[j];
end;
PutRow(0,i,width);
end;
See the pascal section for examples of reading from disk (non-image data) to User arrays. |