Componentes.Terceros.DevExp.../official/x.36/ExpressQuantumGrid 6/Demos/Delphi/EditorsStylesDemo/EditorsStylesDemoConvert.pas
2008-06-02 17:37:37 +00:00

311 lines
9.3 KiB
ObjectPascal

unit EditorsStylesDemoConvert;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, EditorsStylesDemoBase, cxHint, cxLookAndFeelPainters, StdCtrls,
cxButtons, cxImage, cxDropDownEdit, cxCheckBox, cxLabel, cxTextEdit,
cxMaskEdit, cxSpinEdit, cxContainer, cxEdit, cxTrackBar,
cxControls, cxGroupBox, cxSpinButton, cxProgressBar, ComCtrls, ExtCtrls,
cxSplitter, cxPropertiesStore, Menus, jpeg, EditorsStylesDemoUtils, cxMemo,
ImgList, cxGraphics;
type
TEditorsStylesDemoConvertFrame = class(TEditorsStylesDemoBaseFrame)
OpenDialog: TOpenDialog;
pnlImage: TPanel;
ScrollBox: TScrollBox;
cxImage: TcxImage;
Panel2: TPanel;
cxSplitter1: TcxSplitter;
gbConvertingOptions: TcxGroupBox;
gbImageQuality: TcxGroupBox;
lbBestQuality: TcxLabel;
cxBestComp: TcxLabel;
tbImageQuality: TcxTrackBar;
cbGrayScale: TcxCheckBox;
lbProgressive: TcxCheckBox;
sbImageQuality: TcxSpinButton;
Panel4: TPanel;
btnLoadImage: TcxButton;
cxGroupBox1: TcxGroupBox;
cxProgressBar: TcxProgressBar;
cxLabel1: TcxLabel;
cxLabel3: TcxLabel;
cxTrackBar: TcxTrackBar;
cxTextEdit: TcxTextEdit;
cxSplitter2: TcxSplitter;
SaveDialog: TSaveDialog;
Panel3: TPanel;
bntConvert: TcxButton;
cxLabel2: TcxLabel;
ScrollBox1: TScrollBox;
imgPreview: TcxImage;
btnPreview: TcxButton;
gbDisplayOptions: TcxGroupBox;
lbScale: TcxLabel;
cbScale: TcxComboBox;
sbScale: TcxSpinButton;
meCompressionQuality: TcxMaskEdit;
procedure btnLoadImageClick(Sender: TObject);
procedure cxTrackBarPropertiesChange(Sender: TObject);
procedure cxTextEditPropertiesChange(Sender: TObject);
procedure bntConvertClick(Sender: TObject);
procedure tbImageQualityPropertiesChange(Sender: TObject);
procedure sbImageQualityPropertiesChange(Sender: TObject);
procedure btnPreviewClick(Sender: TObject);
procedure btnGetDrawParams(Sender: TcxCustomButton;
AState: TcxButtonState; var AColor: TColor; AFont: TFont);
procedure cbScalePropertiesChange(Sender: TObject);
procedure sbScalePropertiesEditValueChanged(Sender: TObject);
procedure cxTrackBarPropertiesGetThumbRect(Sender: TObject;
var ARect: TRect);
procedure cxTrackBarPropertiesDrawThumb(Sender: TObject;
ACanvas: TcxCanvas; const ARect: TRect);
private
FBitmap: TBitmap;
procedure AdjustTrackBarThumb(AStyleSheetType: TcxStyleSheetType;
ATrackBar: TcxTrackBar; ABitmap: TBitmap);
function GetJpegOptions: TJPEGOptions;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ChangeDisplayStyle(ADisplayStyle: TcxStyleSheetType); override;
function GetStyleBackgroundColor: TColor; override;
function Name: string; override;
function BriefName: string; override;
function StylesIniPath: string; override;
function MenuOpenFileVisible: Boolean; override;
procedure OpenFile(Sender: TObject); override;
function Description: String; override;
end;
var
EditorsStylesDemoConvertFrame: TEditorsStylesDemoConvertFrame;
implementation
{$R *.dfm}
const
AThumbImagesPath = 'StylesFrmStylePalette\';
procedure TEditorsStylesDemoConvertFrame.btnLoadImageClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
cxImage.Picture.LoadFromFile(OpenDialog.FileName);
FFileName := OpenDialog.FileName;
DoOnFileNameChanged;
cxImage.Width := cxImage.Picture.Width;
cxImage.Height := cxImage.Picture.Height;
end;
end;
procedure TEditorsStylesDemoConvertFrame.cxTrackBarPropertiesChange(Sender: TObject);
begin
cxImage.Width := (cxImage.Picture.Width * cxTrackBar.Position) div 100;
cxImage.Height := (cxImage.Picture.Height * cxTrackBar.Position) div 100;
cxProgressBar.Position := cxTrackBar.Position;
end;
procedure TEditorsStylesDemoConvertFrame.cxTextEditPropertiesChange(
Sender: TObject);
var
Val: Integer;
begin
if cxTextEdit.Text <> '' then
begin
Val := StrToInt(cxTextEdit.Text);
cxTrackBar.Properties.Max := Val;
cxProgressBar.Properties.Max := Val;
cxProgressBar.Properties.OverloadValue := 100;
cxProgressBar.Properties.PeakValue := 100;
end;
end;
constructor TEditorsStylesDemoConvertFrame.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FBitmap := TBitmap.Create;
FBitmap.TransparentColor := clFuchsia;
FBitmap.Transparent := True;
if cxImage.Picture <> nil then
begin
cxImage.Width := cxImage.Picture.Width;
cxImage.Height := cxImage.Picture.Height;
end;
HintStyle := hcstLightSlideLeft;
FFileName := 'Untitled';
FDisplayStyle := shtBrick;
FTempDisplayStyle := shtBrick;
btnPreviewClick(Self);
end;
destructor TEditorsStylesDemoConvertFrame.Destroy;
begin
FBitmap.Free;
inherited Destroy;
end;
function TEditorsStylesDemoConvertFrame.GetJpegOptions: TJPEGOptions;
begin
Result.CompressionQuality := meCompressionQuality.EditValue;
Result.Grayscale := cbGrayScale.Checked;
Result.ProgressiveEncoding := lbProgressive.Checked;
end;
procedure TEditorsStylesDemoConvertFrame.bntConvertClick(Sender: TObject);
begin
if SaveDialog.Execute then
ConvertBitmapToJPEG(cxImage.Picture.Bitmap, SaveDialog.FileName, GetJpegOptions());
end;
procedure TEditorsStylesDemoConvertFrame.tbImageQualityPropertiesChange(
Sender: TObject);
begin
sbImageQuality.Value := tbImageQuality.Position;
end;
procedure TEditorsStylesDemoConvertFrame.sbImageQualityPropertiesChange(
Sender: TObject);
begin
tbImageQuality.Position := sbImageQuality.Value;
end;
function TEditorsStylesDemoConvertFrame.Name: string;
begin
Result := 'Image Processing';
end;
function TEditorsStylesDemoConvertFrame.BriefName: string;
begin
Result := 'Image';
end;
function TEditorsStylesDemoConvertFrame.StylesIniPath: string;
begin
Result := 'StylesFrmConvert\';
end;
function TEditorsStylesDemoConvertFrame.MenuOpenFileVisible: Boolean;
begin
Result := True
end;
procedure TEditorsStylesDemoConvertFrame.OpenFile(Sender: TObject);
begin
btnLoadImageClick(nil);
end;
procedure TEditorsStylesDemoConvertFrame.btnPreviewClick(Sender: TObject);
var
J: TJPEGImage;
AJPEGOptions: TJPEGOptions;
begin
J := TJPEGImage.Create;
ScrollBox1.Visible := False;
try
J.Assign(cxImage.Picture.Graphic);
AJPEGOptions := GetJPEGOptions;
J.CompressionQuality := AJPEGOptions.CompressionQuality;
J.ProgressiveEncoding := AJPEGOptions.ProgressiveEncoding;
J.ProgressiveDisplay := True;
J.Compress;
J.Smoothing := not J.Smoothing;
imgPreview.Picture.Assign(J);
TJpegImage(imgPreview.Picture.Graphic).Grayscale := AJPEGOptions.Grayscale;
TJpegImage(imgPreview.Picture.Graphic).ProgressiveDisplay := True;
cbScalePropertiesChange(cbScale);
finally
ScrollBox1.Visible := True;
J.Free;
end;
end;
procedure TEditorsStylesDemoConvertFrame.btnGetDrawParams(
Sender: TcxCustomButton; AState: TcxButtonState; var AColor: TColor;
AFont: TFont);
begin
AFont.Color := Sender.Font.Color;
end;
function TEditorsStylesDemoConvertFrame.GetStyleBackgroundColor: TColor;
begin
Result := gbConvertingOptions.Color;
end;
function TEditorsStylesDemoConvertFrame.Description: String;
begin
Result := 'Image Processing Notes';
end;
procedure TEditorsStylesDemoConvertFrame.cbScalePropertiesChange(
Sender: TObject);
var
JPEGScale: TJPEGScale;
begin
JPEGScale := jsFullSize;
if TcxComboBox(Sender).EditValue = 'Full Size' then
JPEGScale := jsFullSize else
if TcxComboBox(Sender).EditValue = 'Half' then
JPEGScale := jsHalf else
if TcxComboBox(Sender).EditValue = 'Quarter' then
JPEGScale := jsQuarter else
if TcxComboBox(Sender).EditValue = 'Eighth' then
JPEGScale := jsEighth;
TJpegImage(imgPreview.Picture.Graphic).Scale := JPEGScale;
end;
procedure TEditorsStylesDemoConvertFrame.sbScalePropertiesEditValueChanged(
Sender: TObject);
begin
cbScale.ItemIndex := sbScale.Value;
end;
procedure TEditorsStylesDemoConvertFrame.cxTrackBarPropertiesGetThumbRect(
Sender: TObject; var ARect: TRect);
begin
ARect := FBitmap.Canvas.ClipRect;
end;
procedure TEditorsStylesDemoConvertFrame.cxTrackBarPropertiesDrawThumb(
Sender: TObject; ACanvas: TcxCanvas; const ARect: TRect);
begin
ACanvas.Draw(ARect.Left, ARect.Top, FBitmap);
end;
procedure TEditorsStylesDemoConvertFrame.ChangeDisplayStyle(
ADisplayStyle: TcxStyleSheetType);
begin
inherited ChangeDisplayStyle(ADisplayStyle);
AdjustTrackBarThumb(ADisplayStyle, cxTrackBar, FBitmap);
end;
procedure TEditorsStylesDemoConvertFrame.AdjustTrackBarThumb(
AStyleSheetType: TcxStyleSheetType; ATrackBar: TcxTrackBar;
ABitmap: TBitmap);
begin
case AStyleSheetType of
shtWood:
begin
ABitmap.LoadFromFile(AThumbImagesPath + 'Wood.bmp');
ATrackBar.Properties.ThumbType := cxttCustom;
end;
shtDeepSea:
begin
ABitmap.LoadFromFile(AThumbImagesPath + 'DeepSea.bmp');
ATrackBar.Properties.ThumbType := cxttCustom;
end;
else
ATrackBar.Properties.ThumbType := cxttRegular;
end;
end;
initialization
EditorsStylesDemoFrameManager.RegisterFrameClass(TEditorsStylesDemoConvertFrame);
end.