123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- unit GR32.Design.Misc;
- (* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1 or LGPL 2.1 with linking exception
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * Alternatively, the contents of this file may be used under the terms of the
- * Free Pascal modified version of the GNU Lesser General Public License
- * Version 2.1 (the "FPC modified LGPL License"), in which case the provisions
- * of this license are applicable instead of those above.
- * Please see the file LICENSE.txt for additional information concerning this
- * license.
- *
- * The Original Code is Graphics32
- *
- * The Initial Developers of the Original Code are
- * Mattias Andersson <[email protected]>
- * Andre Beckedorf <[email protected]>
- *
- * Portions created by the Initial Developer are Copyright (C) 2005-2009
- * the Initial Developer. All Rights Reserved.
- *
- * ***** END LICENSE BLOCK ***** *)
- interface
- {$include GR32.inc}
- uses
- {$IFDEF FPC} LCLIntf, LazIDEIntf, PropEdits,{$ELSE}
- Windows, DesignIntf, DesignEditors, ToolsAPI,{$ENDIF}
- Classes, TypInfo, GR32_Containers;
- type
- TCustomClassProperty = class(TClassProperty)
- private
- function HasSubProperties: Boolean;
- protected
- class function GetClassList: TClassList; virtual;
- procedure SetClassName(const CustomClass: string); virtual; {$IFNDEF BCB} abstract; {$ENDIF}
- function GetObject: TObject; virtual; {$IFNDEF BCB} abstract; {$ENDIF}
- public
- function GetAttributes: TPropertyAttributes; override;
- procedure GetValues(Proc: TGetStrProc); override;
- procedure SetValue(const Value: string); override;
- function GetValue: string; override;
- end;
- TKernelClassProperty = class(TCustomClassProperty)
- protected
- class function GetClassList: TClassList; override;
- procedure SetClassName(const CustomClass: string); override;
- function GetObject: TObject; override;
- end;
- TResamplerClassProperty = class(TCustomClassProperty)
- protected
- class function GetClassList: TClassList; override;
- procedure SetClassName(const CustomClass: string); override;
- function GetObject: TObject; override;
- end;
- implementation
- uses
- GR32,
- GR32_Resamplers;
- { TCustomClassProperty }
- function TCustomClassProperty.GetAttributes: TPropertyAttributes;
- begin
- Result := inherited GetAttributes - [paReadOnly] +
- [paValueList, paRevertable, paVolatileSubProperties];
- if not HasSubProperties then Exclude(Result, paSubProperties);
- end;
- class function TCustomClassProperty.GetClassList: TClassList;
- begin
- Result := nil;
- end;
- function TCustomClassProperty.GetValue: string;
- begin
- if PropCount > 0 then
- Result := GetObject.ClassName
- else
- Result := '';
- end;
- procedure TCustomClassProperty.GetValues(Proc: TGetStrProc);
- var
- I: Integer;
- L: TClassList;
- begin
- L := GetClassList;
- if Assigned(L) then
- for I := 0 to L.Count - 1 do
- Proc(L.Items[I].ClassName);
- end;
- function TCustomClassProperty.HasSubProperties: Boolean;
- begin
- if PropCount > 0 then
- Result := GetTypeData(GetObject.ClassInfo)^.PropCount > 0
- else
- Result := False;
- end;
- procedure TCustomClassProperty.SetValue(const Value: string);
- var
- L: TClassList;
- begin
- L := GetClassList;
- if Assigned(L) and Assigned(L.Find(Value)) then
- SetClassName(Value)
- else SetStrValue('');
- Modified;
- end;
- {$IFDEF BCB}
- procedure TCustomClassProperty.SetClassName(const CustomClass: string);
- begin
- end;
- function TCustomClassProperty.GetObject: TObject;
- begin
- Result := nil;
- end;
- {$ENDIF}
- { TKernelClassProperty }
- class function TKernelClassProperty.GetClassList: TClassList;
- begin
- Result := TClassList(KernelList);
- end;
- function TKernelClassProperty.GetObject: TObject;
- begin
- Result := TKernelResampler(GetComponent(0)).Kernel;
- end;
- procedure TKernelClassProperty.SetClassName(const CustomClass: string);
- begin
- TKernelResampler(GetComponent(0)).KernelClassName := CustomClass;
- end;
- { TResamplerClassProperty }
- class function TResamplerClassProperty.GetClassList: TClassList;
- begin
- Result := TClassList(ResamplerList);
- end;
- function TResamplerClassProperty.GetObject: TObject;
- begin
- Result := TBitmap32(GetComponent(0)).Resampler;
- end;
- procedure TResamplerClassProperty.SetClassName(
- const CustomClass: string);
- begin
- TBitmap32(GetComponent(0)).ResamplerClassName := CustomClass;
- end;
- {$IFNDEF FPC}
- var
- GSplashScreen : HBITMAP;
- {$ENDIF}
- initialization
- {$IFNDEF FPC}
- // Add Splash Screen
- GSplashScreen := LoadBitmap(hInstance, 'GR32');
- (SplashScreenServices as IOTasplashScreenServices).AddPluginBitmap('Graphics32', GSplashScreen, False, 'Open Source', Graphics32Version);
- {$ENDIF}
- end.
|