- added implementation for Qt

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@481 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
tomb0
2008-06-13 10:53:58 +00:00
parent afb07f9425
commit cd26fb9591
9 changed files with 223 additions and 138 deletions

View File

@ -2,12 +2,12 @@
<CONFIG>
<ProjectOptions>
<PathDelim Value="\"/>
<Version Value="5"/>
<Version Value="6"/>
<General>
<MainUnit Value="0"/>
<IconPath Value=".\"/>
<TargetFileExt Value=".exe"/>
<ActiveEditorIndexAtStart Value="4"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
<ProjectVersion Value=""/>
@ -33,14 +33,14 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="35">
<Units Count="40">
<Unit0>
<Filename Value="rgbexample.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="RGBExample"/>
<CursorPos X="28" Y="6"/>
<CursorPos X="1" Y="17"/>
<TopLine Value="1"/>
<UsageCount Value="31"/>
<UsageCount Value="33"/>
</Unit0>
<Unit1>
<Filename Value="rgbunit.pas"/>
@ -48,17 +48,17 @@
<IsPartOfProject Value="True"/>
<ResourceFilename Value="rgbunit.lrs"/>
<UnitName Value="RGBUnit"/>
<CursorPos X="32" Y="38"/>
<CursorPos X="34" Y="29"/>
<TopLine Value="65"/>
<EditorIndex Value="0"/>
<UsageCount Value="31"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\rgbgraphics.pas"/>
<UnitName Value="RGBGraphics"/>
<CursorPos X="19" Y="85"/>
<TopLine Value="72"/>
<CursorPos X="58" Y="872"/>
<TopLine Value="19"/>
<UsageCount Value="10"/>
</Unit2>
<Unit3>
@ -70,22 +70,22 @@
<Unit4>
<Filename Value="..\rgbroutines.pas"/>
<UnitName Value="RGBRoutines"/>
<CursorPos X="15" Y="52"/>
<TopLine Value="47"/>
<CursorPos X="13" Y="61"/>
<TopLine Value="6"/>
<UsageCount Value="12"/>
</Unit4>
<Unit5>
<Filename Value="..\rgbutils.pas"/>
<UnitName Value="RGBUtils"/>
<CursorPos X="29" Y="53"/>
<TopLine Value="35"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="43"/>
<UsageCount Value="10"/>
</Unit5>
<Unit6>
<Filename Value="..\rgbtypes.pas"/>
<UnitName Value="RGBTypes"/>
<CursorPos X="3" Y="500"/>
<TopLine Value="498"/>
<CursorPos X="3" Y="69"/>
<TopLine Value="74"/>
<UsageCount Value="11"/>
</Unit6>
<Unit7>
@ -96,51 +96,51 @@
<UsageCount Value="11"/>
</Unit7>
<Unit8>
<Filename Value="..\rgbwinroutines.pas"/>
<UnitName Value="RGBWinRoutines"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="16"/>
<Filename Value="..\rgbqtroutines.pas"/>
<UnitName Value="RGBQtRoutines"/>
<CursorPos X="85" Y="84"/>
<TopLine Value="72"/>
<UsageCount Value="11"/>
</Unit8>
<Unit9>
<Filename Value="..\rgbgtkroutines.pas"/>
<UnitName Value="RGBGTKRoutines"/>
<CursorPos X="15" Y="38"/>
<TopLine Value="16"/>
<CursorPos X="6" Y="69"/>
<TopLine Value="57"/>
<UsageCount Value="10"/>
</Unit9>
<Unit10>
<Filename Value="..\..\..\lazarus\lcl\include\canvas.inc"/>
<Filename Value="..\..\lazarus\lcl\include\canvas.inc"/>
<CursorPos X="1" Y="1460"/>
<TopLine Value="1446"/>
<UsageCount Value="10"/>
</Unit10>
<Unit11>
<Filename Value="..\..\..\lazarus\lcl\include\customcontrol.inc"/>
<Filename Value="..\..\lazarus\lcl\include\customcontrol.inc"/>
<CursorPos X="1" Y="81"/>
<TopLine Value="67"/>
<UsageCount Value="10"/>
</Unit11>
<Unit12>
<Filename Value="..\..\..\lazarus\lcl\include\customform.inc"/>
<Filename Value="..\..\lazarus\lcl\include\customform.inc"/>
<CursorPos X="1" Y="804"/>
<TopLine Value="790"/>
<UsageCount Value="10"/>
</Unit12>
<Unit13>
<Filename Value="..\..\..\lazarus\lcl\include\wincontrol.inc"/>
<Filename Value="..\..\lazarus\lcl\include\wincontrol.inc"/>
<CursorPos X="1" Y="3062"/>
<TopLine Value="3048"/>
<UsageCount Value="10"/>
</Unit13>
<Unit14>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk\gtkproc.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\gtk\gtkproc.inc"/>
<CursorPos X="1" Y="3645"/>
<TopLine Value="3631"/>
<UsageCount Value="10"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\lazarus\lcl\interfaces\win32\interfaces.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\win32\interfaces.pp"/>
<UnitName Value="Interfaces"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="17"/>
@ -154,179 +154,174 @@
<UsageCount Value="11"/>
</Unit16>
<Unit17>
<Filename Value="\usr\local\share\fpcsrc\packages\extra\gtk2\gtk+\gtk\gtk2.pas"/>
<Filename Value="usr\local\share\fpcsrc\packages\extra\gtk2\gtk+\gtk\gtk2.pas"/>
<UnitName Value="gtk2"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\interfaces.pas"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\interfaces.pas"/>
<UnitName Value="Interfaces"/>
<CursorPos X="52" Y="11"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit18>
<Unit19>
<Filename Value="..\..\..\..\lazarus\lcl\extdlgs.pas"/>
<Filename Value="..\..\lazarus\lcl\extdlgs.pas"/>
<UnitName Value="ExtDlgs"/>
<CursorPos X="30" Y="55"/>
<TopLine Value="41"/>
<UsageCount Value="10"/>
</Unit19>
<Unit20>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carboncanvas.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carboncanvas.pp"/>
<UnitName Value="CarbonCanvas"/>
<CursorPos X="1" Y="708"/>
<TopLine Value="694"/>
<UsageCount Value="10"/>
</Unit20>
<Unit21>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonint.pas"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonint.pas"/>
<UnitName Value="CarbonInt"/>
<CursorPos X="20" Y="114"/>
<TopLine Value="152"/>
<UsageCount Value="10"/>
</Unit21>
<Unit22>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonmenus.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonmenus.pp"/>
<UnitName Value="CarbonMenus"/>
<CursorPos X="52" Y="351"/>
<TopLine Value="324"/>
<UsageCount Value="10"/>
</Unit22>
<Unit23>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonlclintf.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonlclintf.inc"/>
<CursorPos X="67" Y="499"/>
<TopLine Value="484"/>
<UsageCount Value="10"/>
</Unit23>
<Unit24>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonprivate.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonprivate.pp"/>
<UnitName Value="CarbonPrivate"/>
<CursorPos X="17" Y="322"/>
<TopLine Value="312"/>
<UsageCount Value="10"/>
</Unit24>
<Unit25>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonprivatewindow.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonprivatewindow.inc"/>
<CursorPos X="9" Y="748"/>
<TopLine Value="744"/>
<UsageCount Value="10"/>
</Unit25>
<Unit26>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbongdiobjects.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbongdiobjects.pp"/>
<UnitName Value="CarbonGDIObjects"/>
<CursorPos X="24" Y="163"/>
<TopLine Value="161"/>
<UsageCount Value="10"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\lazarus\lcl\interfaces\carbon\carbonwinapi.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonwinapi.inc"/>
<CursorPos X="24" Y="181"/>
<TopLine Value="184"/>
<UsageCount Value="10"/>
</Unit27>
<Unit28>
<Filename Value="..\..\..\lazarus\lcl\lclintf.pas"/>
<Filename Value="..\..\lazarus\lcl\lclintf.pas"/>
<UnitName Value="LCLIntf"/>
<CursorPos X="35" Y="38"/>
<TopLine Value="24"/>
<UsageCount Value="10"/>
</Unit28>
<Unit29>
<Filename Value="..\..\..\lazarus\lcl\interfaces\win32\win32int.pp"/>
<Filename Value="..\..\lazarus\lcl\interfaces\win32\win32int.pp"/>
<UnitName Value="Win32Int"/>
<CursorPos X="22" Y="188"/>
<TopLine Value="182"/>
<EditorIndex Value="1"/>
<CursorPos X="51" Y="11"/>
<TopLine Value="13"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit29>
<Unit30>
<Filename Value="..\..\..\lazarus\lcl\interfaces\win32\win32object.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\win32\win32object.inc"/>
<CursorPos X="16" Y="422"/>
<TopLine Value="420"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\lazarus\lcl\interfacebase.pp"/>
<Filename Value="..\..\lazarus\lcl\interfacebase.pp"/>
<UnitName Value="InterfaceBase"/>
<CursorPos X="5" Y="62"/>
<TopLine Value="48"/>
<UsageCount Value="10"/>
</Unit31>
<Unit32>
<Filename Value="..\..\..\lazarus\lcl\interfaces\carbon\carbonobject.inc"/>
<Filename Value="..\..\lazarus\lcl\interfaces\carbon\carbonobject.inc"/>
<CursorPos X="17" Y="873"/>
<TopLine Value="869"/>
<UsageCount Value="10"/>
</Unit32>
<Unit33>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Filename Value="..\..\lazarus\ide\compileroptionsdlg.pp"/>
<ComponentName Value="frmCompilerOptions"/>
<HasResources Value="True"/>
<UnitName Value="CompilerOptionsDlg"/>
<CursorPos X="31" Y="2452"/>
<TopLine Value="2436"/>
<EditorIndex Value="3"/>
<CursorPos X="31" Y="1735"/>
<TopLine Value="1710"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit33>
<Unit34>
<Filename Value="..\..\..\lazarus\ide\lazconf.pp"/>
<Filename Value="..\..\lazarus\ide\lazconf.pp"/>
<UnitName Value="LazConf"/>
<CursorPos X="38" Y="62"/>
<CursorPos X="102" Y="49"/>
<TopLine Value="44"/>
<EditorIndex Value="4"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit34>
<Unit35>
<Filename Value="..\..\lazarus\lcl\interfaces\qt\qt4.pas"/>
<UnitName Value="qt4"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1883"/>
<UsageCount Value="10"/>
</Unit35>
<Unit36>
<Filename Value="..\..\lazarus\lcl\interfaces\qt\qtwinapi.inc"/>
<CursorPos X="17" Y="4594"/>
<TopLine Value="4579"/>
<UsageCount Value="10"/>
</Unit36>
<Unit37>
<Filename Value="..\rgbwinroutines.pas"/>
<UnitName Value="RGBWinRoutines"/>
<CursorPos X="88" Y="81"/>
<TopLine Value="105"/>
<UsageCount Value="10"/>
</Unit37>
<Unit38>
<Filename Value="..\..\lazarus\lcl\interfaces\qt\qtobjects.pas"/>
<UnitName Value="qtobjects"/>
<CursorPos X="17" Y="111"/>
<TopLine Value="104"/>
<UsageCount Value="10"/>
</Unit38>
<Unit39>
<Filename Value="..\..\lazarus\fpc\2.2.1\source\rtl\objpas\types.pp"/>
<UnitName Value="types"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="142"/>
<UsageCount Value="10"/>
</Unit39>
</Units>
<JumpHistory Count="9" HistoryIndex="8">
<JumpHistory Count="1" HistoryIndex="0">
<Position1>
<Filename Value="rgbunit.pas"/>
<Caret Line="22" Column="36" TopLine="124"/>
<Caret Line="75" Column="54" TopLine="77"/>
</Position1>
<Position2>
<Filename Value="rgbunit.pas"/>
<Caret Line="33" Column="10" TopLine="28"/>
</Position2>
<Position3>
<Filename Value="rgbunit.pas"/>
<Caret Line="33" Column="10" TopLine="28"/>
</Position3>
<Position4>
<Filename Value="..\..\..\lazarus\lcl\interfaces\win32\win32object.inc"/>
<Caret Line="422" Column="16" TopLine="420"/>
</Position4>
<Position5>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Caret Line="89" Column="26" TopLine="73"/>
</Position5>
<Position6>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Caret Line="546" Column="26" TopLine="529"/>
</Position6>
<Position7>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Caret Line="548" Column="26" TopLine="534"/>
</Position7>
<Position8>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Caret Line="863" Column="27" TopLine="849"/>
</Position8>
<Position9>
<Filename Value="..\..\..\lazarus\ide\compileroptionsdlg.pp"/>
<Caret Line="2452" Column="31" TopLine="2436"/>
</Position9>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
<SearchPaths>
<LCLWidgetType Value="win32"/>
<SrcPath Value="$(LazarusDir)\lcl\;$(LazarusDir)\lcl\interfaces\$(LCLWidgetType)\"/>
</SearchPaths>
<CodeGeneration>

View File

@ -12,11 +12,12 @@ object FormExample: TFormExample
OnCreate = FormCreate
OnDestroy = FormDestroy
OnPaint = FormPaint
LCLVersion = '0.9.25'
object ButtonRedLine: TButton
Left = 6
Height = 26
Height = 31
Top = 8
Width = 89
Width = 96
AutoSize = True
BorderSpacing.InnerBorder = 4
Caption = 'Draw red line'
@ -25,7 +26,7 @@ object FormExample: TFormExample
end
object ButtonRotate90: TButton
Left = 6
Height = 26
Height = 31
Top = 39
Width = 131
AutoSize = True
@ -36,9 +37,9 @@ object FormExample: TFormExample
end
object ButtonInvert: TButton
Left = 6
Height = 26
Height = 31
Top = 72
Width = 83
Width = 92
AutoSize = True
BorderSpacing.InnerBorder = 4
Caption = 'Invert colors'
@ -47,9 +48,9 @@ object FormExample: TFormExample
end
object ButtonReplace: TButton
Left = 6
Height = 26
Height = 31
Top = 106
Width = 136
Width = 137
AutoSize = True
BorderSpacing.InnerBorder = 4
Caption = 'Replace red with blue'

View File

@ -5,19 +5,19 @@ LazarusResources.Add('TFormExample','FORMDATA',[
+#3#150#0#5'Width'#3#133#2#18'HorzScrollBar.Page'#3#132#2#18'VertScrollBar.Pa'
+'ge'#3#1#2#13'ActiveControl'#7#13'ButtonRedLine'#7'Caption'#6#22'LazRGBGraph'
+'ics Example'#12'ClientHeight'#3#2#2#11'ClientWidth'#3#133#2#8'OnCreate'#7#10
+'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#7'OnPaint'#7#9'FormPaint'#0#7'TB'
+'utton'#13'ButtonRedLine'#4'Left'#2#6#6'Height'#2#26#3'Top'#2#8#5'Width'#2'Y'
+#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#13'Draw red li'
+'ne'#7'OnClick'#7#18'ButtonRedLineClick'#8'TabOrder'#2#0#0#0#7'TButton'#14'B'
+'uttonRotate90'#4'Left'#2#6#6'Height'#2#26#3'Top'#2''''#5'Width'#3#131#0#8'A'
+'utoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#19'Rotate 90 cloc'
+'kwise'#7'OnClick'#7#19'ButtonRotate90Click'#8'TabOrder'#2#1#0#0#7'TButton'
+#12'ButtonInvert'#4'Left'#2#6#6'Height'#2#26#3'Top'#2'H'#5'Width'#2'S'#8'Aut'
+'oSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#13'Invert colors'#7
+'OnClick'#7#17'ButtonInvertClick'#8'TabOrder'#2#2#0#0#7'TButton'#13'ButtonRe'
+'place'#4'Left'#2#6#6'Height'#2#26#3'Top'#2'j'#5'Width'#3#136#0#8'AutoSize'#9
+#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#21'Replace red with blue'#7
+'OnClick'#7#18'ButtonReplaceClick'#8'TabOrder'#2#3#0#0#18'TOpenPictureDialog'
+#17'OpenPictureDialog'#5'Title'#6#12'Open picture'#4'left'#3#211#0#3'top'#2
+'Q'#0#0#0
+'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#7'OnPaint'#7#9'FormPaint'#10'LCL'
+'Version'#6#6'0.9.25'#0#7'TButton'#13'ButtonRedLine'#4'Left'#2#6#6'Height'#2
+#31#3'Top'#2#8#5'Width'#2'`'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4
+#7'Caption'#6#13'Draw red line'#7'OnClick'#7#18'ButtonRedLineClick'#8'TabOrd'
+'er'#2#0#0#0#7'TButton'#14'ButtonRotate90'#4'Left'#2#6#6'Height'#2#31#3'Top'
+#2''''#5'Width'#3#131#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Ca'
+'ption'#6#19'Rotate 90 clockwise'#7'OnClick'#7#19'ButtonRotate90Click'#8'Tab'
+'Order'#2#1#0#0#7'TButton'#12'ButtonInvert'#4'Left'#2#6#6'Height'#2#31#3'Top'
+#2'H'#5'Width'#2'\'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Captio'
+'n'#6#13'Invert colors'#7'OnClick'#7#17'ButtonInvertClick'#8'TabOrder'#2#2#0
+#0#7'TButton'#13'ButtonReplace'#4'Left'#2#6#6'Height'#2#31#3'Top'#2'j'#5'Wid'
+'th'#3#137#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#21
+'Replace red with blue'#7'OnClick'#7#18'ButtonReplaceClick'#8'TabOrder'#2#3#0
+#0#18'TOpenPictureDialog'#17'OpenPictureDialog'#5'Title'#6#12'Open picture'#4
+'left'#3#211#0#3'top'#2'Q'#0#0#0
]);

View File

@ -4,7 +4,6 @@
<PathDelim Value="\"/>
<Name Value="LazRGBGraphics"/>
<Author Value="Tom Gregorovic (_tom_@centrum.cz)"/>
<AutoUpdate Value="OnRebuildingAll"/>
<CompilerOptions>
<Version Value="5"/>
<PathDelim Value="\"/>
@ -29,8 +28,8 @@
"/>
<License Value="Modified LGPL
"/>
<Version Minor="2" Release="1"/>
<Files Count="7">
<Version Minor="2" Release="2"/>
<Files Count="8">
<Item1>
<Filename Value="rgbgraphics.pas"/>
<UnitName Value="RGBGraphics"/>
@ -62,6 +61,11 @@
<AddToUsesPkgSection Value="False"/>
<UnitName Value="RGBCarbonRoutines"/>
</Item7>
<Item8>
<Filename Value="rgbqtroutines.pas"/>
<AddToUsesPkgSection Value="False"/>
<UnitName Value="RGBQtRoutines"/>
</Item8>
</Files>
<RequiredPkgs Count="2">
<Item1>

View File

@ -1,6 +1,6 @@
{
/***************************************************************************
RGBGTKRoutines.pas
RGBCarbonRoutines.pas
***************************************************************************/
@ -19,7 +19,7 @@
Author: Tom Gregorovic (_tom_@centrum.cz)
Abstract:
This unit contains routines for GTK interfaces.
This unit contains routines for Carbon interface.
}
unit RGBCarbonRoutines;

View File

@ -54,21 +54,12 @@ procedure WidgetSetDrawRGB32Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY, S
var
P: TPoint;
begin
{$IFDEF GTK_POST_0924}
P := TGtkDeviceContext(Dest).Offset;
Inc(DstX, P.X);
Inc(DstY, P.Y);
gdk_draw_rgb_32_image(TGtkDeviceContext(Dest).Drawable, TGtkDeviceContext(Dest).GC,
DstX, DstY, SrcWidth, SrcHeight, GDK_RGB_DITHER_NONE,
Pguchar(Bitmap.GetPixelPtrUnsafe(SrcX, SrcY)), Bitmap.RowPixelStride shl 2);
{$ELSE}
P := GetDCOffset(TGtkDeviceContext(Dest));
Inc(DstX, P.X);
Inc(DstY, P.Y);
gdk_draw_rgb_32_image(TDeviceContext(Dest).Drawable, TDeviceContext(Dest).GC,
DstX, DstY, SrcWidth, SrcHeight, GDK_RGB_DITHER_NONE,
Pguchar(Bitmap.GetPixelPtrUnsafe(SrcX, SrcY)), Bitmap.RowPixelStride shl 2);
{$ENDIF}
end;
procedure WidgetSetDrawRGB8Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY,
@ -76,21 +67,12 @@ procedure WidgetSetDrawRGB8Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY,
var
P: TPoint;
begin
{$IFDEF GTK_POST_0924}
P := TGtkDeviceContext(Dest).Offset;
Inc(DstX, P.X);
Inc(DstY, P.Y);
gdk_draw_gray_image(TGtkDeviceContext(Dest).Drawable, TGtkDeviceContext(Dest).GC,
DstX, DstY, SrcWidth, SrcHeight, GDK_RGB_DITHER_NONE,
Pguchar(Bitmap.Get8PixelPtrUnsafe(SrcX, SrcY)), Bitmap.RowPixelStride);
{$ELSE}
P := GetDCOffset(TDeviceContext(Dest));
Inc(DstX, P.X);
Inc(DstY, P.Y);
gdk_draw_gray_image(TDeviceContext(Dest).Drawable, TDeviceContext(Dest).GC,
DstX, DstY, SrcWidth, SrcHeight, GDK_RGB_DITHER_NONE,
Pguchar(Bitmap.Get8PixelPtrUnsafe(SrcX, SrcY)), Bitmap.RowPixelStride);
{$ENDIF}
end;
initialization

View File

@ -0,0 +1,97 @@
{
/***************************************************************************
RGBQtRoutines.pas
***************************************************************************/
*****************************************************************************
* *
* See the file COPYING.modifiedLGPL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
Author: Tom Gregorovic (_tom_@centrum.cz)
Abstract:
This unit contains routines for Qt interface.
}
unit RGBQtRoutines;
{$ifdef fpc}
{$mode objfpc}{$H+}
{$endif}
interface
uses
SysUtils, Types, LCLType, Qt4, QtObjects, Classes,
RGBTypes;
procedure WidgetSetDrawRGB32Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY, SrcWidth, SrcHeight: Integer;
Bitmap: TRGB32BitmapCore);
procedure WidgetSetStretchDrawRGB32Bitmap(Dest: HDC; DstX, DstY, DstWidth, DstHeight: Integer;
SrcX, SrcY, SrcWidth, SrcHeight: Integer; Bitmap: TRGB32BitmapCore);
procedure WidgetSetDrawRGB8Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY, SrcWidth, SrcHeight: Integer;
Bitmap: TRGB8BitmapCore);
implementation
procedure WidgetSetDrawRGB32Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY, SrcWidth,
SrcHeight: Integer; Bitmap: TRGB32BitmapCore);
begin
WidgetSetStretchDrawRGB32Bitmap(Dest, DstX, DstY, SrcWidth, SrcHeight, SrcX, SrcY, SrcWidth, SrcHeight, Bitmap);
end;
procedure WidgetSetStretchDrawRGB32Bitmap(Dest: HDC; DstX, DstY, DstWidth,
DstHeight: Integer; SrcX, SrcY, SrcWidth, SrcHeight: Integer;
Bitmap: TRGB32BitmapCore);
var
DstQDC: TQtDeviceContext absolute Dest;
SrcRect, DstRect: TRect;
Image: TQtImage;
begin
DstRect := Bounds(DstX, DstY, DstWidth, DstHeight);
SrcRect := Bounds(SrcX, SrcY, SrcWidth, SrcHeight);
Image := TQtImage.Create(Bitmap.Pixels, Bitmap.Width, Bitmap.Height, QImageFormat_RGB32);
try
QPainter_drawImage(DstQDC.Widget, PRect(@DstRect), Image.Handle, @SrcRect, QtAutoColor);
finally
Image.Free;
end;
end;
procedure WidgetSetDrawRGB8Bitmap(Dest: HDC; DstX, DstY: Integer; SrcX, SrcY,
SrcWidth, SrcHeight: Integer; Bitmap: TRGB8BitmapCore);
var
DstQDC: TQtDeviceContext absolute Dest;
SrcRect, DstRect: TRect;
Image: TQtImage;
I: Integer;
begin
DstRect := Bounds(DstX, DstY, SrcWidth, SrcHeight);
SrcRect := Bounds(SrcX, SrcY, SrcWidth, SrcHeight);
Image := TQtImage.Create(Bitmap.Pixels, Bitmap.Width, Bitmap.Height, QImageFormat_Indexed8);
try
// initialize palette
for I := 0 to 255 do
QImage_setColor(Image.Handle, I, I + I shl 8 + I shl 16 + $FF shl 24);
QPainter_drawImage(DstQDC.Widget, PRect(@DstRect), Image.Handle, @SrcRect, QtAutoColor);
finally
Image.Free;
end;
end;
end.

View File

@ -39,6 +39,9 @@ uses
{$IFDEF LCLwin32}
RGBWinRoutines,
{$ENDIF}
{$IFDEF LCLqt}
RGBQtRoutines,
{$ENDIF}
{$IFDEF LCLgtk}
{$DEFINE StretchRGB32}
RGBGTKRoutines,

View File

@ -33,6 +33,9 @@ unit RGBTypes;
{$ifdef LCLwin32}
{$define RGB}
{$endif}
{$ifdef LCLqt}
{$define RGB}
{$endif}
interface