//----------------------------------------------------------------------------//
// Gradient for Dialogs: Thanks to Rick Lipkin
//----------------------------------------------------------------------------//
Function GradDlgs( cTheme )
local x
local aGrad := {}
local aTmp := {}
local aThemes := {;
{ "SolidWhite", { { 0.5, nRGB( 255, 255, 255 ), nRGB( 255, 255, 255 ) } } }, ;
{ "BlueGreen", { { 1.00, 14671839, 7419904 }, { 1.00, 7419904, 14671839 } } }, ;
{ "SolidGreenBlue", { { 0.01, 9994298, 9994298 },{ 0.01, 9994298, 9994298 } } },;
{ "SolidDarkBlue", { { 0.50, 4720905, 4720905 }, { 0.50, 4720905, 4720905 } } }, ;
{ "SolidBlue", { { 0.01, 16711680, 16711680 },{ 0.01, 16711680, 16711680 } } }, ;
{ "DarkBlue", { { 0.0, 8388608, 13619151 },{ 0.0, 13619151, 8388608 } } }, ;
{ "LightGreen", { { .50, nRGB(210,235,216), nRGB( 255, 255, 255 ) } } }, ;
{ "LightBlue", { { .50, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } } }, ;
{ "LightGrey", { { .50, nRGB( 216, 216, 216 ), nRGB( 255, 255, 255 ) } } }, ;
{ "Standard", { { .50, nRGB( 236, 233, 216 ), nRGB( 255, 255, 255 ) } } }, ;
{ "DarkGrey", { { 0.87, 16777215, 11513775 },{ 0.87,11513775, 16777215 } } }, ;
{ "SolidGrey", { { .50, nRGB( 233, 233, 233 ), nRGB( 233, 233, 233 ) } } }, ;
{ "SolidChoral", { { 0.01,8388736,8388736 },{ 0.01,8388736,8388736 } } }, ;
{ "LightYellow", { { 0.01,8440801,16777215 },{ 0.75,16777215,8440801 } } }, ;
{ "GreenBlue", { { .50, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } } } ;
}
DEFAULT cTheme := ""
if Valtype( cTheme ) == "C"
AEVal( aThemes, { | a | AAdd( aTmp, Upper( a[ 1 ] ) ) } )
x := Ascan( aTmp, Upper( cTheme ) )
if !Empty( x )
aGrad := aThemes[ x ][ 2 ]
endif
else
if Valtype( cTheme ) == "A"
aGrad := cTheme
endif
endif
if !Empty( aGrad )
SetDlgGradient( aGrad )
endif
Return aThemes
//----------------------------------------------------------------------------//
Gradient { { 0.0, 8388608, 13619151 },{ 0.0, 13619151, 8388608 } }
is same as { { 1, 13619151, 8388608 } }
The first element of { 0.0, 8388608, 13619151 } is ignored when painting.
Gradient spec is like this
{ { n1, clr11, clr12 }, ;
{ n2, clr21, clr22 }, ;
........
{ nN, clrN1, clrN2 } }
Where n1 + n2 + ... nN = 1
If this total is > 1, gradients above 1 are ignored
if this total is < 1 last gradient is streched.
First gradient is painted in dlg:nheight * n1 pixels
Second gradient is painted in dlg:nheight * n2 pixels
and so on.
To get a better understanding please see the gradient painting logic
If the intention is to paint both gradients the specification should be something like this:
{ { 0.5, 8388608, 13619151 },{ 0.5, 13619151, 8388608 } }
( 0.5 and 0.5 can be 0.3 and 0.7 or 0.6 and 0.4, etc where both add up to 1.0 )
nanoespinoza wrote:Estimados todos.
Se tiene alguna actualización para esta función.
Saludos
Fernando Espinoza A.
// C:\FWH\SAMPLES\GRADDLGS.PRG - 20/12/2017. - Very good.
#Include "FiveWin.ch"
FUNCTION Main()
LOCAL oFont
LOCAL oDlg, oGet, oBtn, aGet := ARRAY(10)
LOCAL cTest := SPACE(12)
LOCAL nTest := 1234567
SET _3DLOOK ON
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -14 BOLD
DEFINE DIALOG oDlg TITLE "DlgGradient" FROM 2, 2 TO 15, 50 FONT oFont
oDlg:lHelpIcon := .F.
@ 1.5, 02 GET aGet[6] VAR cTest OF oDlg SIZE 120, 12 PIXEL FONT oFont ;
PICTURE "@KR 9,999,999.99" UPDATE
@ 4.5, 4 BUTTON oBtn PROMPT "&Ok" SIZE 45, 12 OF oDlg ;
ACTION ( oDlg:End(), MsgInfo( cTest ) ) DEFAULT
@ 4.5, 15 BUTTON "&Cancel" SIZE 45, 12 OF oDlg ACTION ( oDlg:End() ) CANCEL
GradDlgs( "SolidChoral" )
ACTIVATE DIALOG oDlg CENTERED
oFont:End()
RETURN NIL
// ----------------------------------------------------------------------------//
// Gradient for Dialogs: Thanks to Rick Lipkin
// ----------------------------------------------------------------------------//
FUNCTION GradDlgs( cTheme )
LOCAL x
LOCAL aGrad := {}
LOCAL aTmp := {}
LOCAL aThemes := { ;
{ "SolidWhite", { { 0.5, nRGB( 255, 255, 255 ), nRGB( 255, 255, 255 ) } } }, ;
{ "BlueGreen", { { 1.00, 14671839, 7419904 }, { 1.00, 7419904, 14671839 } } }, ;
{ "SolidGreenBlue", { { 0.01, 9994298, 9994298 }, { 0.01, 9994298, 9994298 } } }, ;
{ "SolidDarkBlue", { { 0.50, 4720905, 4720905 }, { 0.50, 4720905, 4720905 } } }, ;
{ "SolidBlue", { { 0.01, 16711680, 16711680 }, { 0.01, 16711680, 16711680 } } }, ;
{ "DarkBlue", { { 0.0, 8388608, 13619151 }, { 0.0, 13619151, 8388608 } } }, ;
{ "LightGreen", { { .50, nRGB( 210, 235, 216 ), nRGB( 255, 255, 255 ) } } }, ;
{ "LightBlue", { { .50, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } } }, ;
{ "LightGrey", { { .50, nRGB( 216, 216, 216 ), nRGB( 255, 255, 255 ) } } }, ;
{ "Standard", { { .50, nRGB( 236, 233, 216 ), nRGB( 255, 255, 255 ) } } }, ;
{ "DarkGrey", { { 0.87, 16777215, 11513775 }, { 0.87, 11513775, 16777215 } } }, ;
{ "SolidGrey", { { .50, nRGB( 233, 233, 233 ), nRGB( 233, 233, 233 ) } } }, ;
{ "SolidChoral", { { 0.01, 8388736, 8388736 }, { 0.01, 8388736, 8388736 } } }, ;
{ "LightYellow", { { 0.01, 8440801, 16777215 }, { 0.75, 16777215, 8440801 } } }, ;
{ "GreenBlue", { { .50, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } } } ;
}
DEFAULT cTheme := ""
IF ValType( cTheme ) == "C"
AEval( aThemes, {| a | AAdd( aTmp, Upper( a[ 1 ] ) ) } )
x := AScan( aTmp, Upper( cTheme ) )
IF !Empty( x )
aGrad := aThemes[ x ][ 2 ]
ENDIF
ELSE
IF ValType( cTheme ) == "A"
aGrad := cTheme
ENDIF
ENDIF
IF .NOT. Empty( aGrad )
SetDlgGradient( aGrad )
ENDIF
RETURN( aThemes )
// -------------------
FUNCTION GreyButtonGrad()
// 2010 grey button skin
LOCAL bGrad
bGrad := {| lInvert | If( ! lInvert, ;
{ { 1, nRGB( 255, 255, 255 ), nRGB( 207, 207, 207 ) } }, ;
{ { 1 / 3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
{ 2 / 3, nRGB( 255, 215, 84 ), nRGB( 255, 233, 162 ) } } ) }
RETURN( bGrad )
// ---------------------------
FUNCTION BlueGreenGrad()
LOCAL xGrad4 := { { 1.00, 14671839, 7419904 }, { 1.00, 7419904, 14671839 } } // med blue
SetDlgGradient( xGrad4 )
RETURN NIL
// ---------------------
FUNCTION SolidGreenBlue()
SetDlgGradient( { { 0.01, 9994298, 9994298 }, { 0.01, 9994298, 9994298 } } )
RETURN NIL
// -------------
FUNCTION SolidDarkBlue()
SetDlgGradient( { { 0.50, 4720905, 4720905 }, { 0.50, 4720905, 4720905 } } )
RETURN NIL
// -------------------
FUNCTION SolidBlue()
SetDlgGradient( { { 0.01, 16711680, 16711680 }, { 0.01, 16711680, 16711680 } } )
RETURN NIL
// ------------------
FUNCTION DarkBlueGrad()
SetDlgGradient( { { 0.0, 8388608, 13619151 }, { 0.0, 13619151, 8388608 } } )
RETURN NIL
// --------------
FUNCTION LightGreenGrad()
SetDlgGradient( { { .50, nRGB( 210, 235, 216 ), nRGB( 255, 255, 255 ) } } )
RETURN NIL
// ------------------
FUNCTION LightBlueGrad()
SetDlgGradient( { { .50, nRGB( 201, 217, 237 ), nRGB( 231, 242, 255 ) } } )
RETURN NIL
// ------------------
FUNCTION LightGreyGrad()
SetDlgGradient( { { .50, nRGB( 216, 216, 216 ), nRGB( 255, 255, 255 ) } } )
RETURN NIL
// -----------------
FUNCTION StandardGrad()
SetDlgGradient( { { .50, nRGB( 236, 233, 216 ), nRGB( 255, 255, 255 ) } } )
RETURN NIL
// --------------------
FUNCTION DarkGreyGrad()
SetDlgGradient( { { 005.9000, 14671839, 4144959 }, { 0.1, 4144959, 14671839 } } ) // .80
RETURN NIL
// ------------------------------------
FUNCTION SolidWhite()
SetDlgGradient( { { 0.01, 16777215, 16777215 }, { 0.01, 16777215, 16777215 } } )
RETURN NIL
// --------------------
FUNCTION SolidGrey()
SetDlgGradient( { { .50, nRGB( 233, 233, 233 ), nRGB( 233, 233, 233 ) } } )
RETURN NIL
// --------------------
FUNCTION SolidChoral()
SetDlgGradient( aGrad := { { 0.01, 8388736, 8388736 }, { 0.01, 8388736, 8388736 } } )
RETURN NIL
// -----------------
FUNCTION LightYellow()
SetDlgGradient( { { 0.01, 8440801, 16777215 }, { 0.75, 16777215, 8440801 } } )
RETURN NIL
// -------------------
FUNCTION GreenBlueGrad()
SetDlgGradient( { { .50, nRGB( 192, 192, 192 ), nRGB( 45, 121, 147 ) } } )
RETURN NIL
// FIN / END
Return to FiveWin for Harbour/xHarbour
Users browsing this forum: Exabot [Bot], Google [Bot] and 78 guests