Class TCastleImageControl
Unit
CastleControls
Declaration
type TCastleImageControl = class(TCastleUserInterface)
Description
Image control. Size is automatically adjusted to the image size, if Stretch is False
(default). You should set TCastleImageControl.Left, TCastleImageControl.Bottom properties, and load your image by setting TCastleImageControl.Url property or straight TCastleImageControl.Image.
We automatically use alpha test or alpha blending based on loaded image alpha channel (see TDrawableImage.Alpha). You can influence this by AlphaChannel property.
Hierarchy
Overview
Methods
Properties
Description
Methods
|
procedure PreferredSize(var PreferredWidth, PreferredHeight: Single); override; |
This item has no description. Showing description inherited from TCastleUserInterface.PreferredSize.
Controls that have a preferred size should override this. By default this contains values derived from Width, WidthFraction, Height, HeightFraction, with Border subtracted.
Note that the arguments should be already scaled, i.e. multiplied by UIScale, i.e. expressed in final device pixels.
Note that the returned PreferredWidth and PreferredHeight must not include the space for Border. Border size will be added later.
|
|
constructor Create(AOwner: TComponent); override; |
This item has no description. |
|
destructor Destroy; override; |
This item has no description. |
|
procedure Render; override; |
This item has no description. Showing description inherited from TCastleUserInterface.Render.
Render a control. Called only when Exists and render context is initialized.
Do not call this method. It will be automatically called by the engine when needed. It will be called when UI is part of TCastleContainer.Controls list or rendered (e.g. for off-screen rendering) by TCastleContainer.RenderControl.
You should only override this method.
See https://castle-engine.io/manual_2d_ui_custom_drawn.php for examples what you can put here.
You can depend on some OpenGL state being set before calling this method. You can depend on it being set, and you can carelessly change it. This state we set:
Beware that GLSL RenderContext.CurrentProgram has undefined value when this is called. You should always set it, before making direct OpenGL drawing calls (all the engine drawing routines do it already, this is only a concern if you make direct OpenGL / OpenGLES calls).
|
|
procedure GLContextOpen; override; |
This item has no description. Showing description inherited from TCastleUserInterface.GLContextOpen.
Initialize your OpenGL resources.
This is called when OpenGL context of the container is created, or when the control is added to the already existing context. In other words, this is the moment when you can initialize OpenGL resources, like display lists, VBOs, OpenGL texture names, etc.
As an exception, this is called regardless of the Exists value. This way a control can prepare it's resources, regardless if it exists now.
|
|
procedure EditorAllowResize( out ResizeWidth, ResizeHeight: Boolean; out Reason: String); override; |
This item has no description. Showing description inherited from TCastleUserInterface.EditorAllowResize.
Override this to prevent resizing some dimension in CGE editor.
|
|
procedure ImageChanged; |
If you modified the Image contents (colors, or maybe even image size) you need to call this.
See also
- TCastleImagePersistent.ImageChanged
- If you modified the Image contents (colors, or maybe even image size) you need to call this.
|
Properties
|
property Image: TEncodedImage read GetImage write SetImage; |
Image contents, or Nil if none. You can set it by setting Url, or by setting this property directly, or by setting DrawableImage.
Note that by default the TEncodedImage instance assigned here is owned by this component (see OwnsImage). So if you set this property to your custom TEncodedImage instance you should leave memory management of this instance to this component. You can either create a copy by TEncodedImage.MakeCopy if you want to give here only a copy, or you can change OwnsImage to False .
It is allowed to modify the contents or even size of this image. Just make sure to call ImageChanged after the modifications are done to update the rendered image (and possibly the UI control size, e.g. in case TCastleImageControl uses this TCastleImagePersistent, and TCastleImageControl.Stretch=false).
See also
- TCastleImagePersistent.Image
- Image contents, or
Nil if none.
|
|
property OwnsImage: boolean read GetOwnsImage write SetOwnsImage default true; |
Whether the memory management of assigned Image is automatic. See Image documentation for details.
Note that setting Url changes Image, and changes OwnsImage unconditionally to True .
Note that setting DrawableImage changes Image too, and changes OwnsImage to the value present in TDrawableImage.OwnsImage.
See also
- TCastleImagePersistent.OwnsImage
- Whether the memory management of assigned Image is automatic.
|
|
property Color: TCastleColor read GetColor write SetColor; |
Color tint of the image. This simply multiplies the image RGBA components, just like TDrawableImage.Color. By default this is opaque white, which means that image colors are unchanged.
See also
- TCastleImagePersistent.Color
- Color tint of the image.
|
|
property Corners: TVector4Integer read GetCorners write SetCorners; deprecated 'use ProtectedSides'; |
Warning: this symbol is deprecated: use ProtectedSides
Corners and edges of the image that are not stretched even when Stretch is used. See TDrawableImage.Draw3x3 for the details how such drawing works.
|
|
property CenterX: Single read GetCenterX write SetCenterX default 0.5; deprecated 'use RotationCenter'; |
Warning: this symbol is deprecated: use RotationCenter
X coordinate of the center of rotation. Value from 0 to 1. Default value 0.5.
|
|
property CenterY: Single read GetCenterY write SetCenterY default 0.5; deprecated 'use RotationCenter'; |
Warning: this symbol is deprecated: use RotationCenter
Y coordinate of the center of rotation. Value from 0 to 1. Default value 0.5.
|
|
property RotationCenter: TVector2 read GetRotationCenter write SetRotationCenter; |
Center of rotation. Expressed as a fraction within the drawn ScreenRectangle, (0,0) means bottom-left corner, (1,1) means top-right corner. Default (0.5,0.5).
See also
- TCastleImagePersistent.RotationCenter
- Center of rotation.
|
|
property ClipLine: TVector3 read GetClipLine write SetClipLine; |
If Clip, this is the line equation used to determine whether we clip the given pixel. Given a line (A, B, C) and pixel (x, y), the pixel is clipped (rejected) if A * x + B * y + C < 0 .
The equation is calculated in the coordinates in which image X, Y spans from (0, 0) (bottom-left) to (1, 1) (top-right). For example ClipLine = (1, 0, -0.5) means that we reject pixels where 1 * x + 0 * y - 0.5 < 0 . In other words, we reject pixels where x < 0.5 , so we reject the left half of the image.
See also
- TCastleImagePersistent.ClipLine
- If Clip, this is the line equation used to determine whether we clip the given pixel.
|
|
property Region: TFloatRectangle read GetRegion write SetRegion; |
Image region to which we should limit the display. Empty (following TFloatRectangle.Empty) means using the whole image.
|
|
property Blending: boolean read GetBlending write SetBlending stored false; deprecated 'use AlphaChannel'; |
Warning: this symbol is deprecated: use AlphaChannel This item has no description. |
|
property Proportional: boolean read GetProportional write SetProportional stored false default false; deprecated 'use ProportionalScaling'; |
Warning: this symbol is deprecated: use ProportionalScaling This item has no description. |
|
property FileName: string read GetUrl write SetUrl stored false; deprecated 'use Url'; |
Warning: this symbol is deprecated: use Url This item has no description. |
|
property Url: String read GetUrl write SetUrl stored false; |
URL of the image. Set this to load a new image, you can set to '' to clear the image.
See also
- TCastleImagePersistent.Url
- URL of the image.
|
|
property AlphaChannel: TAutoAlphaChannel
read GetAlphaChannel write SetAlphaChannel stored false default acAuto; |
How to treat alpha channel of the assigned image. By default, this is acAuto, which means that image contents together with current Color determine how the alpha of image is treated (opaque, alpha test, alpha blending). Set this to force specific treatment.
See also
- TCastleImagePersistent.AlphaChannel
- How to treat alpha channel of the assigned image.
|
|
property SmoothScaling: boolean
read GetSmoothScaling write SetSmoothScaling stored false default true; |
Is the image scaling mode smooth (bilinear filtering) or not (nearest-pixel filtering). See TDrawableImage.SmoothScaling.
See also
- TCastleImagePersistent.SmoothScaling
- Is the image scaling mode smooth (bilinear filtering) or not (nearest-pixel filtering).
|
|
property Stretch: boolean read FStretch write SetStretch default false; |
How does the loaded image size affect the size of the image control.
When FullSize or AutoSizeToChildren is True , then the value of Stretch, and loaded image size, are ignored. When AutoSizeToChildren, the image is always stretched to surround the children. When FullSize, the image is always stretched to fill the parent.
Otherwise:
If Stretch = False (default), then the displayed size corresponds to the underlying image size.
If Stretch = True , the image will be stretched to fill the requested area. The property ProportionalScaling determines how the image will be adjusted to fit the requested size (by Width, WidthFraction, Height, HeightFraction).
- psNone
The image will be scaled to exactly fill the requested Width and Height (without paying attention to the aspect ratio of the image).
This is the case when you fully force the displayed size and position, regardless of image size. Displayed image will always exactly fill the requested area.
- psFit
The image will be proportionally scaled to fit within the requested Width and Height. If the aspect ratio of image will be different than aspect ratio of Width/Height, the scaled image will be centered inside the Width/Height.
- psEnclose
The image will be proportionally scaled to enclode the requested Width and Height. If the aspect ratio of image will be different than aspect ratio of Width/Height, the scaled image will be larger then the requested area.
|
|
property ProportionalScaling: TProportionalScaling
read FProportionalScaling write SetProportionalScaling default psNone; |
This item has no description. |
|
property Cache: boolean read GetCache write SetCache stored false default true; |
If True , the image is loaded and freed using a cache. This can save memory and loading time a lot, if you reuse the same URL in many TCastleImageControl instances.
See also
- TCastleImagePersistent.Cache
- If
True , the DrawableImage is loaded and freed using a cache.
|
|
property FlipHorizontal: Boolean read GetFlipHorizontal write SetFlipHorizontal
stored false default false; |
Display image horizontally flipped.
See also
- TCastleImagePersistent.FlipHorizontal
|
|
property FlipVertical: Boolean read GetFlipVertical write SetFlipVertical
stored false default false; |
Display image vertically flipped.
See also
- TCastleImagePersistent.FlipVertical
|
|
property DetectScaleFromUrl: Boolean
read FDetectScaleFromUrl write SetDetectScaleFromUrl default false; |
Set this to auto-detect that image is scaled compared to it's desired size. This detects URL endings like '[email protected]', and we will automatically adjust to it (the size determined by AutoSize will be actually 2x smaller than the PNG size). Preparing images at a 2x or 4x larger size than "desired" is a useful trick when using UI scaling, when you want the image to look good at various scales.
|
|
property Rotation: Single read GetRotation write SetRotation stored false default 0; |
Rotation in radians. Default value 0.
See also
- TCastleImagePersistent.Rotation
- Rotation in radians.
|
|
property Clip: boolean read GetClip write SetClip stored false default false; |
Clip the image by an arbitrary 2D line defined in ClipLine.
See also
- TCastleImagePersistent.Clip
Clip the image by an arbitrary 2D line defined in ClipLine.
|
|
property ColorPersistent: TCastleColorPersistent read FColorPersistent stored false; |
Color that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write Color directly.
See also
- Color
- Color tint of the image.
|
|
property ClipLinePersistent: TCastleVector3Persistent read FClipLinePersistent stored false; |
ClipLine that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write ClipLine directly.
See also
- ClipLine
- If Clip, this is the line equation used to determine whether we clip the given pixel.
|
|
property RotationCenterPersistent: TCastleVector2Persistent read FRotationCenterPersistent stored false; |
RotationCenter that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write RotationCenter directly.
See also
- RotationCenter
- Center of rotation.
|
|
property RegionPersistent: TFloatRectanglePersistent read FRegionPersistent stored false; |
Region that can be visually edited in Castle Game Engine Editor, Lazarus and Delphi. Normal user code does not need to deal with this, instead read or write Region directly.
See also
- Region
- Image region to which we should limit the display.
|
Generated by PasDoc 0.16.0-snapshot.