1{%mainunit foundation.pas}
2(*	NSAttributedString.h
3	Copyright (c) 1994-2005, Apple, Inc. All rights reserved.
4*)
5
6{$ifdef HEADER}
7{$ifndef NSATTRIBUTEDSTRING_PAS_H}
8{$define NSATTRIBUTEDSTRING_PAS_H}
9
10var
11  NSFontAttributeName: CFStringRef; external name '_NSFontAttributeName'; // NSFont, default Helvetica 12
12
13//#import <Foundation/NSString.h>
14//#import <Foundation/NSDictionary.h>
15{$endif}
16{$endif}
17
18{$ifdef FORWARD}
19  NSAttributedString = class;
20  NSMutableAttributedString = class;
21
22{$endif}
23
24{$ifdef CLASSES}
25{$ifndef NSATTRIBUTEDSTRING_PAS_C}
26{$define NSATTRIBUTEDSTRING_PAS_C}
27
28
29  { NSAttributedString }
30
31  NSAttributedString = class(NSObject)
32  public
33    class function getClass: lobjc.id; override;
34    function string_: CFStringRef;
35    function attributesAtIndex_effectiveRange(_location: LongWord; _range: NSRangePointer): CFDictionaryRef;
36    function length: LongWord;
37    function attribute_atIndex_effectiveRange(_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer): lobjc.id;
38    function attributedSubstringFromRange(_range: NSRange): lobjc.id;{NSAttributedString}
39    function attributesAtIndex_longestEffectiveRange_inRange(_location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): CFDictionaryRef;
40    function attribute_atIndex_longestEffectiveRange_inRange(_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): lobjc.id;
41    function isEqualToAttributedString(_other: lobjc.id {NSAttributedString}): LongBool;
42    constructor initWithString(_str: CFStringRef);
43    constructor initWithString_attributes(_str: CFStringRef; _attrs: CFDictionaryRef);
44    constructor initWithAttributedString(_attrStr: lobjc.id {NSAttributedString});
45    { Application Kit Additions }
46    constructor initWithHTML_documentAttributes(data: lobjc.id {NSData}; docAttributes: Pointer {PNSDictionary});
47  end;
48
49
50  { NSMutableAttributedString }
51
52  NSMutableAttributedString = class(NSAttributedString)
53  public
54    class function getClass: lobjc.id; override;
55    procedure replaceCharactersInRange_withString(_range: NSRange; _str: CFStringRef);
56    procedure setAttributes_range(_attrs: CFDictionaryRef; _range: NSRange);
57    function mutableString: CFMutableStringRef;
58    procedure addAttribute_value_range(_name: CFStringRef; _value: lobjc.id; _range: NSRange);
59    procedure addAttributes_range(_attrs: CFDictionaryRef; _range: NSRange);
60    procedure removeAttribute_range(_name: CFStringRef; _range: NSRange);
61    procedure replaceCharactersInRange_withAttributedString(_range: NSRange; _attrString: lobjc.id {NSAttributedString});
62    procedure insertAttributedString_atIndex(_attrString: lobjc.id {NSAttributedString}; _loc: LongWord);
63    procedure appendAttributedString(_attrString: lobjc.id {NSAttributedString});
64    procedure deleteCharactersInRange(_range: NSRange);
65    procedure setAttributedString(_attrString: lobjc.id {NSAttributedString});
66    procedure beginEditing;
67    procedure endEditing;
68  end;
69
70{$endif}
71{$endif}
72
73{$ifdef IMPLEMENTATION}
74const
75  StrNSAttributedString_NSAttributedString = 'NSAttributedString';
76  StrNSAttributedString_string = 'string';
77  StrNSAttributedString_attributesAtIndex_effectiveRange = 'attributesAtIndex:effectiveRange:';
78
79  StrNSAttributedString_length = 'length';
80  StrNSAttributedString_attribute_atIndex_effectiveRange = 'attribute:atIndex:effectiveRange:';
81  StrNSAttributedString_attributedSubstringFromRange = 'attributedSubstringFromRange:';
82  StrNSAttributedString_attributesAtIndex_longestEffectiveRange_inRange = 'attributesAtIndex:longestEffectiveRange:inRange:';
83  StrNSAttributedString_attribute_atIndex_longestEffectiveRange_inRange = 'attribute:atIndex:longestEffectiveRange:inRange:';
84  StrNSAttributedString_isEqualToAttributedString = 'isEqualToAttributedString:';
85  StrNSAttributedString_initWithString = 'initWithString:';
86  StrNSAttributedString_initWithString_attributes = 'initWithString:attributes:';
87  StrNSAttributedString_initWithAttributedString = 'initWithAttributedString:';
88
89  StrNSMutableAttributedString_NSMutableAttributedString = 'NSMutableAttributedString';
90  StrNSMutableAttributedString_replaceCharactersInRange_withString = 'replaceCharactersInRange:withString:';
91  StrNSMutableAttributedString_setAttributes_range = 'setAttributes:range:';
92
93  StrNSMutableAttributedString_mutableString = 'mutableString';
94  StrNSMutableAttributedString_addAttribute_value_range = 'addAttribute:value:range:';
95  StrNSMutableAttributedString_addAttributes_range = 'addAttributes:range:';
96  StrNSMutableAttributedString_removeAttribute_range = 'removeAttribute:range:';
97  StrNSMutableAttributedString_replaceCharactersInRange_withAttributedString = 'replaceCharactersInRange:withAttributedString:';
98  StrNSMutableAttributedString_insertAttributedString_atIndex = 'insertAttributedString:atIndex:';
99  StrNSMutableAttributedString_appendAttributedString = 'appendAttributedString:';
100  StrNSMutableAttributedString_deleteCharactersInRange = 'deleteCharactersInRange:';
101  StrNSMutableAttributedString_setAttributedString = 'setAttributedString:';
102  StrNSMutableAttributedString_beginEditing = 'beginEditing';
103  StrNSMutableAttributedString_endEditing = 'endEditing';
104
105  { Application Kit Additions }
106  StrNSAttributedString_initWithHTML_documentAttributes = 'initWithHTML:documentAttributes:';
107
108{ NSAttributedString }
109
110class function NSAttributedString.getClass: lobjc.id;
111begin
112  Result := objc_getClass(StrNSAttributedString_NSAttributedString);
113end;
114
115function NSAttributedString.string_: CFStringRef;
116begin
117  Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSAttributedString_string)), []));
118end;
119
120function NSAttributedString.attributesAtIndex_effectiveRange(_location: LongWord; _range: NSRangePointer): CFDictionaryRef;
121type
122  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_location: LongWord; _range: NSRangePointer): CFDictionaryRef; cdecl;
123var
124  vmethod: TmsgSendWrapper;
125begin
126  vmethod := TmsgSendWrapper(@objc_msgSend);
127  Result := CFDictionaryRef(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_attributesAtIndex_effectiveRange)), _location, _range));
128end;
129
130function NSAttributedString.length: LongWord;
131begin
132  Result := {%H-}LongWord(objc_msgSend(Handle, sel_registerName(PChar(StrNSAttributedString_length)), []));
133end;
134
135function NSAttributedString.attribute_atIndex_effectiveRange(_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer): lobjc.id;
136type
137  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer): lobjc.id; cdecl;
138var
139  vmethod: TmsgSendWrapper;
140begin
141  vmethod := TmsgSendWrapper(@objc_msgSend);
142  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_attribute_atIndex_effectiveRange)), _attrName, _location, _range));
143end;
144
145function NSAttributedString.attributedSubstringFromRange(_range: NSRange): lobjc.id;
146type
147  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_range: NSRange): lobjc.id; cdecl;
148var
149  vmethod: TmsgSendWrapper;
150begin
151  vmethod := TmsgSendWrapper(@objc_msgSend);
152  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_attributedSubstringFromRange)), _range));
153end;
154
155function NSAttributedString.attributesAtIndex_longestEffectiveRange_inRange(_location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): CFDictionaryRef;
156type
157  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): CFDictionaryRef; cdecl;
158var
159  vmethod: TmsgSendWrapper;
160begin
161  vmethod := TmsgSendWrapper(@objc_msgSend);
162  Result := CFDictionaryRef(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_attributesAtIndex_longestEffectiveRange_inRange)), _location, _range, _rangeLimit));
163end;
164
165function NSAttributedString.attribute_atIndex_longestEffectiveRange_inRange(_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): lobjc.id;
166type
167  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_attrName: CFStringRef; _location: LongWord; _range: NSRangePointer; _rangeLimit: NSRange): lobjc.id; cdecl;
168var
169  vmethod: TmsgSendWrapper;
170begin
171  vmethod := TmsgSendWrapper(@objc_msgSend);
172  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_attribute_atIndex_longestEffectiveRange_inRange)), _attrName, _location, _range, _rangeLimit));
173end;
174
175function NSAttributedString.isEqualToAttributedString(_other: lobjc.id {NSAttributedString}): LongBool;
176type
177  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_other: lobjc.id {NSAttributedString}): LongBool; cdecl;
178var
179  vmethod: TmsgSendWrapper;
180begin
181  vmethod := TmsgSendWrapper(@objc_msgSend);
182  Result := LongBool(vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_isEqualToAttributedString)), _other));
183end;
184
185constructor NSAttributedString.initWithString(_str: CFStringRef);
186type
187  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_str: CFStringRef): lobjc.id; cdecl;
188var
189  vmethod: TmsgSendWrapper;
190begin
191  ClassID := getClass();
192  allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []);
193  vmethod := TmsgSendWrapper(@objc_msgSend);
194  Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSAttributedString_initWithString)), _str);
195end;
196
197constructor NSAttributedString.initWithString_attributes(_str: CFStringRef; _attrs: CFDictionaryRef);
198type
199  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_str: CFStringRef; _attrs: CFDictionaryRef): lobjc.id; cdecl;
200var
201  vmethod: TmsgSendWrapper;
202begin
203  ClassID := getClass();
204  allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []);
205  vmethod := TmsgSendWrapper(@objc_msgSend);
206  Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSAttributedString_initWithString_attributes)), _str, _attrs);
207end;
208
209constructor NSAttributedString.initWithAttributedString(_attrStr: lobjc.id {NSAttributedString});
210type
211  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_attrStr: lobjc.id {NSAttributedString}): lobjc.id; cdecl;
212var
213  vmethod: TmsgSendWrapper;
214begin
215  ClassID := getClass();
216  allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []);
217  vmethod := TmsgSendWrapper(@objc_msgSend);
218  Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSAttributedString_initWithAttributedString)), _attrStr);
219end;
220
221{ Application Kit Additions }
222
223constructor NSAttributedString.initWithHTML_documentAttributes(data: lobjc.id {NSData}; docAttributes: Pointer {PNSDictionary});
224type
225  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL; _data: lobjc.id; _attr: Pointer): lobjc.id; cdecl;
226var
227  vmethod: TmsgSendWrapper;
228begin
229  ClassID := getClass();
230  allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []);
231  vmethod := TmsgSendWrapper(@objc_msgSend);
232  Handle := vmethod(Handle, sel_registerName(PChar(StrNSAttributedString_initWithHTML_documentAttributes)), data, docAttributes);
233end;
234
235{ NSMutableAttributedString }
236
237class function NSMutableAttributedString.getClass: lobjc.id;
238begin
239  Result := objc_getClass(StrNSMutableAttributedString_NSMutableAttributedString);
240end;
241
242procedure NSMutableAttributedString.replaceCharactersInRange_withString(_range: NSRange; _str: CFStringRef);
243type
244  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_range: NSRange; _str: CFStringRef); cdecl;
245var
246  vmethod: TmsgSendWrapper;
247begin
248  vmethod := TmsgSendWrapper(@objc_msgSend);
249  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_replaceCharactersInRange_withString)), _range, _str);
250end;
251
252procedure NSMutableAttributedString.setAttributes_range(_attrs: CFDictionaryRef; _range: NSRange);
253type
254  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_attrs: CFDictionaryRef; _range: NSRange); cdecl;
255var
256  vmethod: TmsgSendWrapper;
257begin
258  vmethod := TmsgSendWrapper(@objc_msgSend);
259  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_setAttributes_range)), _attrs, _range);
260end;
261
262function NSMutableAttributedString.mutableString: CFMutableStringRef;
263begin
264  Result := CFMutableStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSMutableAttributedString_mutableString)), []));
265end;
266
267procedure NSMutableAttributedString.addAttribute_value_range(_name: CFStringRef; _value: lobjc.id; _range: NSRange);
268type
269  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_name: CFStringRef; _value: lobjc.id; _range: NSRange); cdecl;
270var
271  vmethod: TmsgSendWrapper;
272begin
273  vmethod := TmsgSendWrapper(@objc_msgSend);
274  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_addAttribute_value_range)), _name, _value, _range);
275end;
276
277procedure NSMutableAttributedString.addAttributes_range(_attrs: CFDictionaryRef; _range: NSRange);
278type
279  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_attrs: CFDictionaryRef; _range: NSRange); cdecl;
280var
281  vmethod: TmsgSendWrapper;
282begin
283  vmethod := TmsgSendWrapper(@objc_msgSend);
284  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_addAttributes_range)), _attrs, _range);
285end;
286
287procedure NSMutableAttributedString.removeAttribute_range(_name: CFStringRef; _range: NSRange);
288type
289  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_name: CFStringRef; _range: NSRange); cdecl;
290var
291  vmethod: TmsgSendWrapper;
292begin
293  vmethod := TmsgSendWrapper(@objc_msgSend);
294  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_removeAttribute_range)), _name, _range);
295end;
296
297procedure NSMutableAttributedString.replaceCharactersInRange_withAttributedString(_range: NSRange; _attrString: lobjc.id {NSAttributedString});
298type
299  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_range: NSRange; _attrString: lobjc.id {NSAttributedString}); cdecl;
300var
301  vmethod: TmsgSendWrapper;
302begin
303  vmethod := TmsgSendWrapper(@objc_msgSend);
304  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_replaceCharactersInRange_withAttributedString)), _range, _attrString);
305end;
306
307procedure NSMutableAttributedString.insertAttributedString_atIndex(_attrString: lobjc.id {NSAttributedString}; _loc: LongWord);
308type
309  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_attrString: lobjc.id {NSAttributedString}; _loc: LongWord); cdecl;
310var
311  vmethod: TmsgSendWrapper;
312begin
313  vmethod := TmsgSendWrapper(@objc_msgSend);
314  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_insertAttributedString_atIndex)), _attrString, _loc);
315end;
316
317procedure NSMutableAttributedString.appendAttributedString(_attrString: lobjc.id {NSAttributedString});
318type
319  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_attrString: lobjc.id {NSAttributedString}); cdecl;
320var
321  vmethod: TmsgSendWrapper;
322begin
323  vmethod := TmsgSendWrapper(@objc_msgSend);
324  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_appendAttributedString)), _attrString);
325end;
326
327procedure NSMutableAttributedString.deleteCharactersInRange(_range: NSRange);
328type
329  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_range: NSRange); cdecl;
330var
331  vmethod: TmsgSendWrapper;
332begin
333  vmethod := TmsgSendWrapper(@objc_msgSend);
334  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_deleteCharactersInRange)), _range);
335end;
336
337procedure NSMutableAttributedString.setAttributedString(_attrString: lobjc.id {NSAttributedString});
338type
339  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_attrString: lobjc.id {NSAttributedString}); cdecl;
340var
341  vmethod: TmsgSendWrapper;
342begin
343  vmethod := TmsgSendWrapper(@objc_msgSend);
344  vmethod(Handle, sel_registerName(PChar(StrNSMutableAttributedString_setAttributedString)), _attrString);
345end;
346
347procedure NSMutableAttributedString.beginEditing;
348begin
349  objc_msgSend(Handle, sel_registerName(PChar(StrNSMutableAttributedString_beginEditing)), []);
350end;
351
352procedure NSMutableAttributedString.endEditing;
353begin
354  objc_msgSend(Handle, sel_registerName(PChar(StrNSMutableAttributedString_endEditing)), []);
355end;
356
357{$endif}
358