Menu

[r3207]: / trunk / Src / ULEDImageList.pas  Maximize  Restore  History

Download this file

116 lines (95 with data), 3.3 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/
*
* Copyright (C) 2009-2012, Peter Johnson (www.delphidabbler.com).
*
* $Rev$
* $Date$
*
* Defines a custom image list that provides a list of LED images. Image list is
* automatically loaded from resources when class is instantiated.
}
unit ULEDImageList;
interface
uses
// Delphi
SysUtils, Classes, ImgList, Windows, Graphics,
// Project
Compilers.UGlobals;
type
{
TLEDImageList:
Custom image list that provides a list of LED images. Image list is
automatically loaded from resources when class is instantiated. Image list
can be accessed by compile result as well as by the normal integer indexing.
}
TLEDImageList = class(TCustomImageList)
strict private
function CompResToIdx(const CompRes: TCompileResult): Integer;
{Maps a compile result onto an image index.
@param CompRes [in] Compile result to be mapped.
@return Match image index.
}
public
constructor Create(AOwner: TComponent); override;
{Constructor. Sets up object and reads images from resources.
}
procedure Draw(const Canvas: TCanvas; const TopLeft: TPoint;
const CompRes: TCompileResult); overload;
{Overloaded method that draws a LED specified by its compile result.
@param Canvas [in] Canvas on which to draw LED.
@param TopLeft [in] Offset of top left corner of drawing in Canvas.
@param CompRes [in] Compile result that specifies the LED to draw.
}
end;
implementation
uses
// Project
UClassHelpers;
{
Note: resources must contain a valid bitmap named "LEDS" that combines all
four bitmaps, each 18px x 18px. This combined bitmap may be in one of three
formats:
18px x 72px => LEDs are in a vertical column
36px x 36px => LEDs are in two rows of two, varying by row
72px x 18px => LEDs are in a horizontal row
Ordering must be
S or SW or SWEQ
W EQ
E
Q
Where S = success (green), W = warning (yellow), E = error (red) and
Q = query (grey).
The mask colour must be clFuchsia.
}
{ TLEDImageList }
function TLEDImageList.CompResToIdx(const CompRes: TCompileResult): Integer;
{Maps a compile result onto an image index.
@param CompRes [in] Compile result to be mapped.
@return Match image index.
}
begin
// Assumes images are ordered in same order as TCompileResult enumeration
Result := Ord(CompRes);
end;
constructor TLEDImageList.Create(AOwner: TComponent);
{Constructor. Sets up object and reads images from resources.
}
begin
inherited;
// Loads images: uses class helper method from TImageListHelper
LoadFromResource(RT_RCDATA, 'LEDS', 18, clFuchsia);
end;
procedure TLEDImageList.Draw(const Canvas: TCanvas; const TopLeft: TPoint;
const CompRes: TCompileResult);
{Overloaded method that draws a LED specified by its compile result.
@param Canvas [in] Canvas on which to draw LED.
@param TopLeft [in] Offset of top left corner of drawing in Canvas.
@param CompRes [in] Compile result that specifies the LED to draw.
}
begin
Self.Draw(Canvas, TopLeft.X, TopLeft.Y, CompResToIdx(CompRes));
end;
end.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.