You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@487 8e941d3f-bd1b-0410-a28a-d453659cc2b4
441 lines
17 KiB
PHP
441 lines
17 KiB
PHP
{%mainunit appkit.pas}
|
|
(*
|
|
NSImageRep.h
|
|
Application Kit
|
|
Copyright (c) 1994-2005, Apple Computer, Inc.
|
|
All rights reserved.
|
|
*)
|
|
|
|
{$ifdef HEADER}
|
|
{$ifndef NSIMAGEREP_PAS_H}
|
|
{$define NSIMAGEREP_PAS_H}
|
|
|
|
{$include AppKitDefines.inc}
|
|
//const
|
|
// NSImageRepRegistryChangedNotification = NSImageRepRegistryDidChangeNotification { obsolete name };
|
|
|
|
// NSImageRepMatchesDevice indicates the value is variable, depending on the output
|
|
// device. It can be passed in (or received back) as the value of bitsPerSample, pixelsWide,
|
|
// and pixelsHigh.
|
|
const
|
|
NSImageRepMatchesDevice = 0;
|
|
|
|
//APPKIT_EXTERN NSString *NSImageRepRegistryDidChangeNotification;
|
|
{$endif}
|
|
{$endif}
|
|
|
|
{$ifdef FORWARD}
|
|
NSImageRep = class;
|
|
|
|
{$endif}
|
|
|
|
{$ifdef CLASSES}
|
|
{$ifndef NSIMAGEREP_PAS_C}
|
|
{$define NSIMAGEREP_PAS_C}
|
|
|
|
{$include AppKitDefines.inc}
|
|
|
|
{ NSImageRep }
|
|
|
|
NSImageRep = class(NSObject)
|
|
public
|
|
class function getClass: objc.id; override;
|
|
// All instance variables are private
|
|
// Drawing methods. drawAtPoint: and drawInRect: go through draw after modifying the
|
|
// CTM.
|
|
function draw: LongBool;
|
|
function drawAtPoint(_point: NSPoint): LongBool;
|
|
function drawInRect(_rect: NSRect): LongBool;
|
|
// Methods to return info about the image. NSImageRep provides storage for all of these;
|
|
// however, it's illegal to set them in some subclasses.
|
|
procedure setSize(_aSize: NSSize);
|
|
function size: NSSize;
|
|
procedure setAlpha(_flag: LongBool);
|
|
function hasAlpha: LongBool;
|
|
procedure setOpaque(_flag: LongBool);
|
|
function isOpaque: LongBool;
|
|
procedure setColorSpaceName(__string: CFStringRef);
|
|
function colorSpaceName: CFStringRef;
|
|
procedure setBitsPerSample(_anInt: Integer);
|
|
function bitsPerSample: Integer;
|
|
procedure setPixelsWide(_anInt: Integer);
|
|
function pixelsWide: Integer;
|
|
procedure setPixelsHigh(_anInt: Integer);
|
|
function pixelsHigh: Integer;
|
|
// The rest of the methods all deal with subclassers which can read/write data in files
|
|
// or pasteboards.
|
|
// Registry management: Subclasses which deal with file & pasteboard types should register
|
|
// themselves. These classes should also implement imageUnfilteredFileTypes, imageUnfilteredPasteboardTypes,
|
|
// initWithData:, canInitWithData:, imageRepWithData:, and, if they have the ability
|
|
// to read multiple images from a file, imageRepsWithData:. These last three should
|
|
// not do any filtering; all filtering is automatic.
|
|
class procedure registerImageRepClass(_imageRepClass: _Class);
|
|
class procedure unregisterImageRepClass(_imageRepClass: _Class);
|
|
class function registeredImageRepClasses: CFArrayRef;
|
|
class function imageRepClassForFileType(__type: CFStringRef): _Class;
|
|
class function imageRepClassForPasteboardType(__type: CFStringRef): _Class;
|
|
class function imageRepClassForData(_data: CFDataRef): _Class;
|
|
// Should be overridden by subclassers to load an unfiltered image.
|
|
class function canInitWithData(_data: CFDataRef): LongBool;
|
|
// Implemented by subclassers to indicate what data types they can deal with.
|
|
class function imageUnfilteredFileTypes: CFArrayRef;
|
|
class function imageUnfilteredPasteboardTypes: CFArrayRef;
|
|
// These expand the unfiltered lists returned by imageUnfilteredFileTypes and imageUnfilteredPasteboardTypes.
|
|
class function imageFileTypes: CFArrayRef;
|
|
class function imagePasteboardTypes: CFArrayRef;
|
|
// Convenience method: Checks to see if any of the types on the pasteboard can be understood
|
|
// by a registered imagerep class after filtering or if the pasteboard contains a filename
|
|
// that can be understood by a registered imagerep class after filtering. If sent to
|
|
// a subclass, does this for just the types understood by the subclass.
|
|
class function canInitWithPasteboard(_pasteboard: objc.id {NSPasteboard}): LongBool;
|
|
// Convenience methods: Checks to see if the provided file or pasteboard types can
|
|
// be understood by a registered imagerep class after filtering; if so, calls imageRepsWithData:
|
|
// or imageRepWithData:. If sent to a subclass, does this just for the types understood
|
|
// by that subclass.
|
|
class function imageRepsWithContentsOfFile(_filename: CFStringRef): CFArrayRef;
|
|
constructor imageRepWithContentsOfFile(_filename: CFStringRef);
|
|
class function imageRepsWithContentsOfURL(_url: CFURLRef): CFArrayRef;
|
|
constructor imageRepWithContentsOfURL(_url: CFURLRef);
|
|
class function imageRepsWithPasteboard(_pasteboard: objc.id {NSPasteboard}): CFArrayRef;
|
|
constructor imageRepWithPasteboard(_pasteboard: objc.id {NSPasteboard});
|
|
end;
|
|
|
|
{$endif}
|
|
{$endif}
|
|
|
|
{$ifdef IMPLEMENTATION}
|
|
const
|
|
StrNSImageRep_NSImageRep = 'NSImageRep';
|
|
StrNSImageRep_draw = 'draw';
|
|
StrNSImageRep_drawAtPoint = 'drawAtPoint:';
|
|
StrNSImageRep_drawInRect = 'drawInRect:';
|
|
StrNSImageRep_setSize = 'setSize:';
|
|
StrNSImageRep_size = 'size';
|
|
StrNSImageRep_setAlpha = 'setAlpha:';
|
|
StrNSImageRep_hasAlpha = 'hasAlpha';
|
|
StrNSImageRep_setOpaque = 'setOpaque:';
|
|
StrNSImageRep_isOpaque = 'isOpaque';
|
|
StrNSImageRep_setColorSpaceName = 'setColorSpaceName:';
|
|
StrNSImageRep_colorSpaceName = 'colorSpaceName';
|
|
StrNSImageRep_setBitsPerSample = 'setBitsPerSample:';
|
|
StrNSImageRep_bitsPerSample = 'bitsPerSample';
|
|
StrNSImageRep_setPixelsWide = 'setPixelsWide:';
|
|
StrNSImageRep_pixelsWide = 'pixelsWide';
|
|
StrNSImageRep_setPixelsHigh = 'setPixelsHigh:';
|
|
StrNSImageRep_pixelsHigh = 'pixelsHigh';
|
|
StrNSImageRep_registerImageRepClass = 'registerImageRepClass:';
|
|
StrNSImageRep_unregisterImageRepClass = 'unregisterImageRepClass:';
|
|
StrNSImageRep_registeredImageRepClasses = 'registeredImageRepClasses';
|
|
StrNSImageRep_imageRepClassForFileType = 'imageRepClassForFileType:';
|
|
StrNSImageRep_imageRepClassForPasteboardType = 'imageRepClassForPasteboardType:';
|
|
StrNSImageRep_imageRepClassForData = 'imageRepClassForData:';
|
|
StrNSImageRep_canInitWithData = 'canInitWithData:';
|
|
StrNSImageRep_imageUnfilteredFileTypes = 'imageUnfilteredFileTypes';
|
|
StrNSImageRep_imageUnfilteredPasteboardTypes = 'imageUnfilteredPasteboardTypes';
|
|
StrNSImageRep_imageFileTypes = 'imageFileTypes';
|
|
StrNSImageRep_imagePasteboardTypes = 'imagePasteboardTypes';
|
|
StrNSImageRep_canInitWithPasteboard = 'canInitWithPasteboard:';
|
|
StrNSImageRep_imageRepsWithContentsOfFile = 'imageRepsWithContentsOfFile:';
|
|
StrNSImageRep_imageRepWithContentsOfFile = 'imageRepWithContentsOfFile:';
|
|
StrNSImageRep_imageRepsWithContentsOfURL = 'imageRepsWithContentsOfURL:';
|
|
StrNSImageRep_imageRepWithContentsOfURL = 'imageRepWithContentsOfURL:';
|
|
StrNSImageRep_imageRepsWithPasteboard = 'imageRepsWithPasteboard:';
|
|
StrNSImageRep_imageRepWithPasteboard = 'imageRepWithPasteboard:';
|
|
|
|
{ NSImageRep }
|
|
|
|
class function NSImageRep.getClass: objc.id;
|
|
begin
|
|
Result := objc_getClass(StrNSImageRep_NSImageRep);
|
|
end;
|
|
|
|
function NSImageRep.draw: LongBool;
|
|
begin
|
|
Result := LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_draw)), []));
|
|
end;
|
|
|
|
function NSImageRep.drawAtPoint(_point: NSPoint): LongBool;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_point: NSPoint): LongBool; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := LongBool(vmethod(Handle, sel_registerName(PChar(StrNSImageRep_drawAtPoint)), _point));
|
|
end;
|
|
|
|
function NSImageRep.drawInRect(_rect: NSRect): LongBool;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_rect: NSRect): LongBool; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := LongBool(vmethod(Handle, sel_registerName(PChar(StrNSImageRep_drawInRect)), _rect));
|
|
end;
|
|
|
|
procedure NSImageRep.setSize(_aSize: NSSize);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_aSize: NSSize); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setSize)), _aSize);
|
|
end;
|
|
|
|
function NSImageRep.size: NSSize;
|
|
begin
|
|
objc_msgSend_stret(@Result, Handle, sel_registerName(PChar(StrNSImageRep_size)), []);
|
|
end;
|
|
|
|
procedure NSImageRep.setAlpha(_flag: LongBool);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_flag: LongBool); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setAlpha)), _flag);
|
|
end;
|
|
|
|
function NSImageRep.hasAlpha: LongBool;
|
|
begin
|
|
Result := LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_hasAlpha)), []));
|
|
end;
|
|
|
|
procedure NSImageRep.setOpaque(_flag: LongBool);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_flag: LongBool); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setOpaque)), _flag);
|
|
end;
|
|
|
|
function NSImageRep.isOpaque: LongBool;
|
|
begin
|
|
Result := LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_isOpaque)), []));
|
|
end;
|
|
|
|
procedure NSImageRep.setColorSpaceName(__string: CFStringRef);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;__string: CFStringRef); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setColorSpaceName)), __string);
|
|
end;
|
|
|
|
function NSImageRep.colorSpaceName: CFStringRef;
|
|
begin
|
|
Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_colorSpaceName)), []));
|
|
end;
|
|
|
|
procedure NSImageRep.setBitsPerSample(_anInt: Integer);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_anInt: Integer); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setBitsPerSample)), _anInt);
|
|
end;
|
|
|
|
function NSImageRep.bitsPerSample: Integer;
|
|
begin
|
|
Result := Integer(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_bitsPerSample)), []));
|
|
end;
|
|
|
|
procedure NSImageRep.setPixelsWide(_anInt: Integer);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_anInt: Integer); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setPixelsWide)), _anInt);
|
|
end;
|
|
|
|
function NSImageRep.pixelsWide: Integer;
|
|
begin
|
|
Result := Integer(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_pixelsWide)), []));
|
|
end;
|
|
|
|
procedure NSImageRep.setPixelsHigh(_anInt: Integer);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_anInt: Integer); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(Handle, sel_registerName(PChar(StrNSImageRep_setPixelsHigh)), _anInt);
|
|
end;
|
|
|
|
function NSImageRep.pixelsHigh: Integer;
|
|
begin
|
|
Result := Integer(objc_msgSend(Handle, sel_registerName(PChar(StrNSImageRep_pixelsHigh)), []));
|
|
end;
|
|
|
|
class procedure NSImageRep.registerImageRepClass(_imageRepClass: _Class);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_imageRepClass: _Class); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(getClass, sel_registerName(PChar(StrNSImageRep_registerImageRepClass)), _imageRepClass);
|
|
end;
|
|
|
|
class procedure NSImageRep.unregisterImageRepClass(_imageRepClass: _Class);
|
|
type
|
|
TmsgSendWrapper = procedure (param1: objc.id; param2: SEL;_imageRepClass: _Class); cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
vmethod(getClass, sel_registerName(PChar(StrNSImageRep_unregisterImageRepClass)), _imageRepClass);
|
|
end;
|
|
|
|
class function NSImageRep.registeredImageRepClasses: CFArrayRef;
|
|
begin
|
|
Result := CFArrayRef(objc_msgSend(getClass, sel_registerName(PChar(StrNSImageRep_registeredImageRepClasses)), []));
|
|
end;
|
|
|
|
class function NSImageRep.imageRepClassForFileType(__type: CFStringRef): _Class;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;__type: CFStringRef): _Class; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := _Class(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepClassForFileType)), __type));
|
|
end;
|
|
|
|
class function NSImageRep.imageRepClassForPasteboardType(__type: CFStringRef): _Class;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;__type: CFStringRef): _Class; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := _Class(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepClassForPasteboardType)), __type));
|
|
end;
|
|
|
|
class function NSImageRep.imageRepClassForData(_data: CFDataRef): _Class;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_data: CFDataRef): _Class; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := _Class(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepClassForData)), _data));
|
|
end;
|
|
|
|
class function NSImageRep.canInitWithData(_data: CFDataRef): LongBool;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_data: CFDataRef): LongBool; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := LongBool(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_canInitWithData)), _data));
|
|
end;
|
|
|
|
class function NSImageRep.imageUnfilteredFileTypes: CFArrayRef;
|
|
begin
|
|
Result := CFArrayRef(objc_msgSend(getClass, sel_registerName(PChar(StrNSImageRep_imageUnfilteredFileTypes)), []));
|
|
end;
|
|
|
|
class function NSImageRep.imageUnfilteredPasteboardTypes: CFArrayRef;
|
|
begin
|
|
Result := CFArrayRef(objc_msgSend(getClass, sel_registerName(PChar(StrNSImageRep_imageUnfilteredPasteboardTypes)), []));
|
|
end;
|
|
|
|
class function NSImageRep.imageFileTypes: CFArrayRef;
|
|
begin
|
|
Result := CFArrayRef(objc_msgSend(getClass, sel_registerName(PChar(StrNSImageRep_imageFileTypes)), []));
|
|
end;
|
|
|
|
class function NSImageRep.imagePasteboardTypes: CFArrayRef;
|
|
begin
|
|
Result := CFArrayRef(objc_msgSend(getClass, sel_registerName(PChar(StrNSImageRep_imagePasteboardTypes)), []));
|
|
end;
|
|
|
|
class function NSImageRep.canInitWithPasteboard(_pasteboard: objc.id {NSPasteboard}): LongBool;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_pasteboard: objc.id {NSPasteboard}): LongBool; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := LongBool(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_canInitWithPasteboard)), _pasteboard));
|
|
end;
|
|
|
|
class function NSImageRep.imageRepsWithContentsOfFile(_filename: CFStringRef): CFArrayRef;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_filename: CFStringRef): CFArrayRef; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := CFArrayRef(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepsWithContentsOfFile)), _filename));
|
|
end;
|
|
|
|
constructor NSImageRep.imageRepWithContentsOfFile(_filename: CFStringRef);
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_filename: CFStringRef): objc.id; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
ClassID := getClass();
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Handle := vmethod(ClassID, sel_registerName(PChar(StrNSImageRep_imageRepWithContentsOfFile)), _filename);
|
|
end;
|
|
|
|
class function NSImageRep.imageRepsWithContentsOfURL(_url: CFURLRef): CFArrayRef;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_url: CFURLRef): CFArrayRef; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := CFArrayRef(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepsWithContentsOfURL)), _url));
|
|
end;
|
|
|
|
constructor NSImageRep.imageRepWithContentsOfURL(_url: CFURLRef);
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_url: CFURLRef): objc.id; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
ClassID := getClass();
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Handle := vmethod(ClassID, sel_registerName(PChar(StrNSImageRep_imageRepWithContentsOfURL)), _url);
|
|
end;
|
|
|
|
class function NSImageRep.imageRepsWithPasteboard(_pasteboard: objc.id {NSPasteboard}): CFArrayRef;
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_pasteboard: objc.id {NSPasteboard}): CFArrayRef; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Result := CFArrayRef(vmethod(getClass, sel_registerName(PChar(StrNSImageRep_imageRepsWithPasteboard)), _pasteboard));
|
|
end;
|
|
|
|
constructor NSImageRep.imageRepWithPasteboard(_pasteboard: objc.id {NSPasteboard});
|
|
type
|
|
TmsgSendWrapper = function (param1: objc.id; param2: SEL;_pasteboard: objc.id {NSPasteboard}): objc.id; cdecl;
|
|
var
|
|
vmethod: TmsgSendWrapper;
|
|
begin
|
|
ClassID := getClass();
|
|
vmethod := TmsgSendWrapper(@objc_msgSend);
|
|
Handle := vmethod(ClassID, sel_registerName(PChar(StrNSImageRep_imageRepWithPasteboard)), _pasteboard);
|
|
end;
|
|
|
|
{$endif}
|