You've already forked lazarus-ccr
added setting style for carbon richmemo
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@822 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -5,15 +5,25 @@ unit carbonrichmemo;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
|
MacOSAll,
|
||||||
|
|
||||||
LCLType, Classes, SysUtils,
|
LCLType, Classes, SysUtils,
|
||||||
|
|
||||||
Controls,
|
Controls, Graphics,
|
||||||
|
|
||||||
RichMemoTypes, WSRichMemo,
|
RichMemoTypes, WSRichMemo,
|
||||||
|
|
||||||
CarbonEdits;
|
CarbonProc, CarbonEdits;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
{ TCarbonRichEdit }
|
||||||
|
|
||||||
|
TCarbonRichEdit = class(TCarbonMemo)
|
||||||
|
protected
|
||||||
|
function GetCreationOptions: TXNFrameOptions; override;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TCarbonWSCustomRichMemo }
|
{ TCarbonWSCustomRichMemo }
|
||||||
|
|
||||||
TCarbonWSCustomRichMemo = class(TWSCustomRichMemo)
|
TCarbonWSCustomRichMemo = class(TWSCustomRichMemo)
|
||||||
@ -27,12 +37,76 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
const
|
||||||
|
TXNAttributesMax = 10;
|
||||||
|
|
||||||
|
procedure AttrSetFontName(const FontName: String; var Attr: TXNTypeAttributes);
|
||||||
|
begin
|
||||||
|
Attr.tag := kATSUFontTag;
|
||||||
|
Attr.size := SizeOf(ATSUFontID);
|
||||||
|
Attr.data.dataValue := FindCarbonFontID(FontName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AttrSetColor(var MacColor: RGBColor; var Attr: TXNTypeAttributes);
|
||||||
|
begin
|
||||||
|
Attr.tag := kTXNQDFontColorAttribute;
|
||||||
|
Attr.size := kTXNQDFontColorAttributeSize;
|
||||||
|
Attr.data.dataPtr := @MacColor;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AttrSetSize(FontSize: Integer; var Attr: TXNTypeAttributes);
|
||||||
|
begin
|
||||||
|
Attr.tag := kTXNQDFontSizeAttribute;
|
||||||
|
Attr.size := kTXNQDFontSizeAttributeSize;
|
||||||
|
Attr.data.dataValue := FontSize;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AttrSetStyle(FontStyle: TFontStyles; var Attr: TXNTypeAttributes);
|
||||||
|
begin
|
||||||
|
Attr.tag := kTXNQDFontStyleAttribute;
|
||||||
|
Attr.size := kTXNQDFontStyleAttributeSize;
|
||||||
|
Attr.data.dataValue := normal;
|
||||||
|
|
||||||
|
if fsBold in FontStyle then Attr.data.dataValue := Attr.data.dataValue or bold;
|
||||||
|
if fsItalic in FontStyle then Attr.data.dataValue := Attr.data.dataValue or italic;
|
||||||
|
if fsUnderline in FontStyle then Attr.data.dataValue := Attr.data.dataValue or underline;
|
||||||
|
// if fsStrikeOut in FontStyle then ... can be implemented only by using ATSU
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ParamsToTXNAttribs(ParamsMask: TTextStyleMask; const Params: TFontParams;
|
||||||
|
var Attr: array of TXNTypeAttributes; var AttrCount: Integer; var MacColor: RGBColor);
|
||||||
|
begin
|
||||||
|
AttrCount := 0;
|
||||||
|
//todo: replace QuickDraw style by ATSU style
|
||||||
|
|
||||||
|
if tsm_Color in ParamsMask then begin
|
||||||
|
MacColor := ColorToRGBColor(Params.Color);
|
||||||
|
AttrSetColor(MacColor, Attr[AttrCount] );
|
||||||
|
inc(AttrCount);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if tsm_Name in ParamsMask then begin
|
||||||
|
AttrSetFontName(Params.Name, Attr[AttrCount] );
|
||||||
|
inc(AttrCount);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if tsm_Size in ParamsMask then begin
|
||||||
|
AttrSetSize(Params.Size, Attr[AttrCount] );
|
||||||
|
inc(AttrCount);
|
||||||
|
end;
|
||||||
|
|
||||||
|
if tsm_Styles in ParamsMask then begin
|
||||||
|
AttrSetStyle(Params.Style, Attr[AttrCount]);
|
||||||
|
inc(AttrCount);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TCarbonWSCustomRichMemo }
|
{ TCarbonWSCustomRichMemo }
|
||||||
|
|
||||||
class function TCarbonWSCustomRichMemo.CreateHandle(const AWinControl: TWinControl;
|
class function TCarbonWSCustomRichMemo.CreateHandle(const AWinControl: TWinControl;
|
||||||
const AParams: TCreateParams): HWND;
|
const AParams: TCreateParams): HWND;
|
||||||
begin
|
begin
|
||||||
Result := TLCLIntfHandle(TCarbonMemo.Create(AWinControl, AParams));
|
Result := TLCLIntfHandle(TCarbonRichEdit.Create(AWinControl, AParams));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class function TCarbonWSCustomRichMemo.GetTextAttributes(const AWinControl: TWinControl;
|
class function TCarbonWSCustomRichMemo.GetTextAttributes(const AWinControl: TWinControl;
|
||||||
@ -46,16 +120,31 @@ class procedure TCarbonWSCustomRichMemo.SetTextAttributes(const AWinControl: TWi
|
|||||||
Mask: TTextStyleMask; const Params: TFontParams);
|
Mask: TTextStyleMask; const Params: TFontParams);
|
||||||
var
|
var
|
||||||
memo : TCarbonMemo;
|
memo : TCarbonMemo;
|
||||||
|
attr : array [0..TXNAttributesMax-1] of TXNTypeAttributes;
|
||||||
|
attrcount : Integer;
|
||||||
|
maccolor : RGBColor;
|
||||||
begin
|
begin
|
||||||
if not Assigned(AWinControl) or not Assigned(AWinControl.Handle) then Exit;
|
if not Assigned(AWinControl) or (AWinControl.Handle = 0) then Exit;
|
||||||
memo := TCarbonMemo.Create(AWinControl.Handle);
|
memo := TCarbonMemo(AWinControl.Handle);
|
||||||
|
|
||||||
|
ParamsToTXNAttribs(Mask, Params, attr, attrcount, maccolor);
|
||||||
|
|
||||||
|
TXNSetTypeAttributes(HITextViewGetTXNObject(ControlRef(memo.Widget)), attrcount, @Attr[0],
|
||||||
|
TextStart, TextStart+TextLen);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TCarbonWSCustomRichMemo.SetHideSelection(
|
class procedure TCarbonWSCustomRichMemo.SetHideSelection(const AWinControl: TWinControl;
|
||||||
const AWinControl: TWinControl; AHideSelection: Boolean);
|
AHideSelection: Boolean);
|
||||||
begin
|
begin
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TCarbonRichEdit }
|
||||||
|
|
||||||
|
function TCarbonRichEdit.GetCreationOptions: TXNFrameOptions;
|
||||||
|
begin
|
||||||
|
Result := kOutputTextInUnicodeEncodingMask;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -7,8 +7,9 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
WSLCLClasses,
|
WSLCLClasses,
|
||||||
RichMemo,
|
RichMemo
|
||||||
{$ifdef LCLWin32}Win32RichMemo{$endif}
|
{$ifdef LCLWin32},Win32RichMemo{$endif}
|
||||||
|
{$ifdef LCLCarbon},CarbonRichMemo{$endif}
|
||||||
;
|
;
|
||||||
|
|
||||||
function RegisterCustomRichMemo: Boolean;
|
function RegisterCustomRichMemo: Boolean;
|
||||||
@ -18,6 +19,7 @@ implementation
|
|||||||
function RegisterCustomRichMemo: Boolean; alias : 'WSRegisterCustomRichMemo';
|
function RegisterCustomRichMemo: Boolean; alias : 'WSRegisterCustomRichMemo';
|
||||||
begin
|
begin
|
||||||
{$ifdef LCLWin32}RegisterWSComponent(TCustomRichMemo, TWin32WSCustomRichMemo);{$endif}
|
{$ifdef LCLWin32}RegisterWSComponent(TCustomRichMemo, TWin32WSCustomRichMemo);{$endif}
|
||||||
|
{$ifdef LCLCarbon}RegisterWSComponent(TCustomRichMemo, TCarbonWSCustomRichMemo);{$endif}
|
||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<Version Value="8"/>
|
<Version Value="8"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<OtherUnitFiles Value="win32\"/>
|
<OtherUnitFiles Value="win32\;carbon\"/>
|
||||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
<Other>
|
<Other>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"/>
|
"/>
|
||||||
<License Value="LGPL"/>
|
<License Value="LGPL"/>
|
||||||
<Version Minor="8"/>
|
<Version Minor="8"/>
|
||||||
<Files Count="8">
|
<Files Count="9">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="richmemo.pas"/>
|
<Filename Value="richmemo.pas"/>
|
||||||
<AddToUsesPkgSection Value="False"/>
|
<AddToUsesPkgSection Value="False"/>
|
||||||
@ -58,6 +58,11 @@
|
|||||||
<Filename Value="richmemopackage.lrs"/>
|
<Filename Value="richmemopackage.lrs"/>
|
||||||
<Type Value="LRS"/>
|
<Type Value="LRS"/>
|
||||||
</Item8>
|
</Item8>
|
||||||
|
<Item9>
|
||||||
|
<Filename Value="carbon\carbonrichmemo.pas"/>
|
||||||
|
<AddToUsesPkgSection Value="False"/>
|
||||||
|
<UnitName Value="carbonrichmemo"/>
|
||||||
|
</Item9>
|
||||||
</Files>
|
</Files>
|
||||||
<Type Value="RunAndDesignTime"/>
|
<Type Value="RunAndDesignTime"/>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
|
Reference in New Issue
Block a user