2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* OpenOffice.org 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. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-10 19:31:19 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
2006-09-17 13:43:51 +00:00
|
|
|
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_svtools.hxx"
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2007-06-27 20:27:29 +00:00
|
|
|
#include <svtools/svtdata.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include "colrdlg.hrc"
|
2007-06-27 20:27:29 +00:00
|
|
|
#include <svtools/colrdlg.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
// ---------------
|
|
|
|
// - ColorDialog -
|
|
|
|
// ---------------
|
|
|
|
|
|
|
|
SvColorDialog::SvColorDialog( Window* pWindow ) :
|
|
|
|
ModalDialog ( pWindow, SvtResId( DLG_COLOR ) ),
|
|
|
|
maColMixCtrl ( this, SvtResId( VAL_SET_COLOR ), 8, 8 ),
|
|
|
|
maBtn1 ( this, SvtResId( BTN_1 ) ),
|
|
|
|
maBtn2 ( this, SvtResId( BTN_2 ) ),
|
|
|
|
//maBtn3 ( this, SvtResId( BTN_3 ) ),
|
|
|
|
//maBtn4 ( this, SvtResId( BTN_4 ) ),
|
|
|
|
//maFtRGB ( this, SvtResId( FT_RGB ) ),
|
|
|
|
maCtlColor ( this, SvtResId( CTL_COLOR ) ),
|
|
|
|
|
|
|
|
maFtCyan ( this, SvtResId( FT_CYAN ) ),
|
|
|
|
maNumCyan ( this, SvtResId( NUM_CYAN ) ),
|
|
|
|
maFtMagenta ( this, SvtResId( FT_MAGENTA ) ),
|
|
|
|
maNumMagenta ( this, SvtResId( NUM_MAGENTA ) ),
|
|
|
|
maFtYellow ( this, SvtResId( FT_YELLOW ) ),
|
|
|
|
maNumYellow ( this, SvtResId( NUM_YELLOW ) ),
|
|
|
|
maFtKey ( this, SvtResId( FT_KEY ) ),
|
|
|
|
maNumKey ( this, SvtResId( NUM_KEY ) ),
|
|
|
|
|
2006-06-19 19:59:12 +00:00
|
|
|
maFtRed ( this, SvtResId( FT_RED ) ),
|
|
|
|
maNumRed ( this, SvtResId( NUM_RED ) ),
|
|
|
|
maFtGreen ( this, SvtResId( FT_GREEN ) ),
|
|
|
|
maNumGreen ( this, SvtResId( NUM_GREEN ) ),
|
|
|
|
maFtBlue ( this, SvtResId( FT_BLUE ) ),
|
|
|
|
maNumBlue ( this, SvtResId( NUM_BLUE ) ),
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
maFtHue ( this, SvtResId( FT_HUE ) ),
|
|
|
|
maNumHue ( this, SvtResId( NUM_HUE ) ),
|
|
|
|
maFtSaturation ( this, SvtResId( FT_SATURATION ) ),
|
|
|
|
maNumSaturation ( this, SvtResId( NUM_SATURATION ) ),
|
|
|
|
maFtLuminance ( this, SvtResId( FT_LUMINANCE ) ),
|
|
|
|
maNumLuminance ( this, SvtResId( NUM_LUMINANCE ) ),
|
2006-06-19 19:59:12 +00:00
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
maCtlPreview ( this, SvtResId( CTL_PREVIEW ) ),
|
|
|
|
maCtlPreviewOld ( this, SvtResId( CTL_PREVIEW_OLD ) ),
|
|
|
|
|
|
|
|
maBtnOK ( this, SvtResId( BTN_OK ) ),
|
|
|
|
maBtnCancel ( this, SvtResId( BTN_CANCEL ) ),
|
|
|
|
maBtnHelp ( this, SvtResId( BTN_HELP ) )
|
|
|
|
{
|
|
|
|
FreeResource();
|
|
|
|
|
|
|
|
maColMixCtrl.SetDoubleClickHdl( LINK( this, SvColorDialog, ClickMixCtrlHdl ) );
|
|
|
|
maColMixCtrl.SetSelectHdl( LINK( this, SvColorDialog, SelectMixCtrlHdl ) );
|
|
|
|
|
|
|
|
Link aLink( LINK( this, SvColorDialog, ColorModifyHdl ) );
|
|
|
|
maCtlColor.SetModifyHdl( aLink );
|
|
|
|
|
|
|
|
maNumRed.SetModifyHdl( aLink );
|
|
|
|
maNumGreen.SetModifyHdl( aLink );
|
|
|
|
maNumBlue.SetModifyHdl( aLink );
|
|
|
|
|
|
|
|
maNumCyan.SetModifyHdl( aLink );
|
|
|
|
maNumMagenta.SetModifyHdl( aLink );
|
|
|
|
maNumYellow.SetModifyHdl( aLink );
|
|
|
|
maNumKey.SetModifyHdl( aLink );
|
|
|
|
|
|
|
|
maNumHue.SetModifyHdl( aLink );
|
|
|
|
maNumSaturation.SetModifyHdl( aLink );
|
|
|
|
maNumLuminance.SetModifyHdl( aLink );
|
|
|
|
|
|
|
|
aLink = ( LINK( this, SvColorDialog, ClickBtnHdl ) );
|
|
|
|
maBtn1.SetClickHdl( aLink );
|
|
|
|
maBtn2.SetClickHdl( aLink );
|
|
|
|
//maBtn3.SetClickHdl( aLink );
|
|
|
|
//maBtn4.SetClickHdl( aLink );
|
|
|
|
|
|
|
|
maColMixCtrl.SetExtraSpacing( 0 );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
SvColorDialog::~SvColorDialog()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
void SvColorDialog::Initialize()
|
|
|
|
{
|
|
|
|
maNumRed.SetValue( maColor.GetRed() );
|
|
|
|
maNumGreen.SetValue( maColor.GetGreen() );
|
|
|
|
maNumBlue.SetValue( maColor.GetBlue() );
|
|
|
|
|
|
|
|
ColorCMYK aColorCMYK( maColor );
|
|
|
|
|
|
|
|
long aCyan = (long) ( (double)aColorCMYK.GetCyan() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aMagenta = (long) ( (double)aColorCMYK.GetMagenta() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aYellow = (long) ( (double)aColorCMYK.GetYellow() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aKey = (long) ( (double)aColorCMYK.GetKey() * 100.0 / 255.0 + 0.5 );
|
|
|
|
maNumCyan.SetValue( aCyan );
|
|
|
|
maNumMagenta.SetValue( aMagenta );
|
|
|
|
maNumYellow.SetValue( aYellow );
|
|
|
|
maNumKey.SetValue( aKey );
|
|
|
|
|
|
|
|
ColorHSB aColorHSB( maColor );
|
|
|
|
maNumHue.SetValue( aColorHSB.GetHue() );
|
|
|
|
maNumSaturation.SetValue( aColorHSB.GetSat() );
|
|
|
|
maNumLuminance.SetValue( aColorHSB.GetBri() );
|
|
|
|
|
|
|
|
maCtlColor.SetColor( aColorHSB );
|
|
|
|
|
|
|
|
maColMixCtrl.SelectItem( 1 );
|
|
|
|
|
|
|
|
maCtlPreview.SetColor( maColor );
|
|
|
|
maCtlPreviewOld.SetColor( maColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
void SvColorDialog::SetColor( const Color& rColor )
|
|
|
|
{
|
|
|
|
maColor = rColor;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
const Color& SvColorDialog::GetColor() const
|
|
|
|
{
|
|
|
|
return( maColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
IMPL_LINK( SvColorDialog, ColorModifyHdl, void *, p )
|
|
|
|
{
|
|
|
|
UINT16 n = 0x00; // 1 == RGB, 2 == CMYK, 4 == HSB
|
|
|
|
|
|
|
|
if( p == &maCtlColor )
|
|
|
|
{
|
|
|
|
maColor = maCtlColor.GetColor();
|
|
|
|
maNumRed.SetValue( maColor.GetRed() );
|
|
|
|
maNumGreen.SetValue( maColor.GetGreen() );
|
|
|
|
maNumBlue.SetValue( maColor.GetBlue() );
|
|
|
|
|
|
|
|
n = 7;
|
|
|
|
}
|
|
|
|
else if( p == &maNumRed )
|
|
|
|
{
|
|
|
|
maColor.SetRed( (UINT8)maNumRed.GetValue() );
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
n = 6;
|
|
|
|
}
|
|
|
|
else if( p == &maNumGreen )
|
|
|
|
{
|
|
|
|
maColor.SetGreen( (UINT8)maNumGreen.GetValue() );
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
n = 6;
|
|
|
|
}
|
|
|
|
else if( p == &maNumBlue )
|
|
|
|
{
|
|
|
|
maColor.SetBlue( (UINT8)maNumBlue.GetValue() );
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
n = 6;
|
|
|
|
}
|
|
|
|
else if( p == &maNumHue ||
|
|
|
|
p == &maNumSaturation ||
|
|
|
|
p == &maNumLuminance )
|
|
|
|
{
|
|
|
|
|
|
|
|
ColorHSB aColorHSB( (UINT16) maNumHue.GetValue(),
|
|
|
|
(UINT16) maNumSaturation.GetValue(),
|
|
|
|
(UINT16) maNumLuminance.GetValue() );
|
|
|
|
maCtlColor.SetColor( aColorHSB );
|
|
|
|
maColor = maCtlColor.GetColor();
|
|
|
|
n = 3;
|
|
|
|
}
|
|
|
|
else if( p == &maNumCyan ||
|
|
|
|
p == &maNumMagenta ||
|
|
|
|
p == &maNumYellow ||
|
|
|
|
p == &maNumKey )
|
|
|
|
{
|
|
|
|
long aCyan = (long) ( (double)maNumCyan.GetValue() * 255.0 / 100.0 + 0.5 );
|
|
|
|
long aMagenta = (long) ( (double)maNumMagenta.GetValue() * 255.0 / 100.0 + 0.5 );
|
|
|
|
long aYellow = (long) ( (double)maNumYellow.GetValue() * 255.0 / 100.0 + 0.5 );
|
|
|
|
long aKey = (long) ( (double)maNumKey.GetValue() * 255.0 / 100.0 + 0.5 );
|
|
|
|
|
|
|
|
ColorCMYK aColorCMYK( (UINT16) aCyan,
|
|
|
|
(UINT16) aMagenta,
|
|
|
|
(UINT16) aYellow,
|
|
|
|
(UINT16) aKey );
|
|
|
|
maColor = aColorCMYK.GetRGB();
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
n = 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
if( n & 1 ) // RGB setzen
|
|
|
|
{
|
|
|
|
maNumRed.SetValue( maColor.GetRed() );
|
|
|
|
maNumGreen.SetValue( maColor.GetGreen() );
|
|
|
|
maNumBlue.SetValue( maColor.GetBlue() );
|
|
|
|
}
|
|
|
|
if( n & 2 ) // CMYK setzen
|
|
|
|
{
|
|
|
|
ColorCMYK aColorCMYK( maColor );
|
|
|
|
long aCyan = (long) ( (double)aColorCMYK.GetCyan() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aMagenta = (long) ( (double)aColorCMYK.GetMagenta() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aYellow = (long) ( (double)aColorCMYK.GetYellow() * 100.0 / 255.0 + 0.5 );
|
|
|
|
long aKey = (long) ( (double)aColorCMYK.GetKey() * 100.0 / 255.0 + 0.5 );
|
|
|
|
maNumCyan.SetValue( aCyan );
|
|
|
|
maNumMagenta.SetValue( aMagenta );
|
|
|
|
maNumYellow.SetValue( aYellow );
|
|
|
|
maNumKey.SetValue( aKey );
|
|
|
|
}
|
|
|
|
if( n & 4 ) // HSB setzen
|
|
|
|
{
|
|
|
|
ColorHSB aColorHSB( maColor );
|
|
|
|
maNumHue.SetValue( aColorHSB.GetHue() );
|
|
|
|
maNumSaturation.SetValue( aColorHSB.GetSat() );
|
|
|
|
maNumLuminance.SetValue( aColorHSB.GetBri() );
|
|
|
|
}
|
|
|
|
|
|
|
|
maCtlPreview.SetColor( maColor );
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
IMPL_LINK( SvColorDialog, ClickBtnHdl, void *, p )
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
Color aColor = maCtlColor.GetColor();
|
|
|
|
if( p == &maBtn1 )
|
|
|
|
maColMixCtrl.SetColor( CMC_TOPLEFT, aColor );
|
|
|
|
if( p == &maBtn2 )
|
|
|
|
maColMixCtrl.SetColor( CMC_TOPRIGHT, aColor );
|
|
|
|
if( p == &maBtn3 )
|
|
|
|
maColMixCtrl.SetColor( CMC_BOTTOMLEFT, aColor );
|
|
|
|
if( p == &maBtn4 )
|
|
|
|
maColMixCtrl.SetColor( CMC_BOTTOMRIGHT, aColor );
|
|
|
|
*/
|
|
|
|
|
|
|
|
if( p == &maBtn1 )
|
|
|
|
{
|
|
|
|
CMCPosition ePos = maColMixCtrl.GetCMCPosition();
|
|
|
|
if( ePos != CMC_OTHER )
|
|
|
|
maColMixCtrl.SetColor( ePos, maColor );
|
|
|
|
}
|
|
|
|
else if( p == &maBtn2 )
|
|
|
|
{
|
|
|
|
USHORT nPos = maColMixCtrl.GetSelectItemId();
|
|
|
|
maColor = maColMixCtrl.GetItemColor( nPos );
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
ColorModifyHdl( &maCtlColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
2006-06-19 19:59:12 +00:00
|
|
|
IMPL_LINK( SvColorDialog, ClickMixCtrlHdl, void *, EMPTYARG )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
USHORT nPos = maColMixCtrl.GetSelectItemId();
|
|
|
|
CMCPosition ePos = maColMixCtrl.GetCMCPosition();
|
|
|
|
|
|
|
|
if( ePos != CMC_OTHER )
|
|
|
|
maColMixCtrl.SetColor( ePos, maColor );
|
|
|
|
else
|
|
|
|
{
|
|
|
|
maColor = maColMixCtrl.GetItemColor( nPos );
|
|
|
|
maCtlColor.SetColor( maColor );
|
|
|
|
ColorModifyHdl( &maCtlColor );
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
2006-06-19 19:59:12 +00:00
|
|
|
IMPL_LINK( SvColorDialog, SelectMixCtrlHdl, void *, EMPTYARG )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
//USHORT nPos = maColMixCtrl.GetSelectItemId();
|
|
|
|
//maFtRGB.SetText( maColMixCtrl.GetItemText( nPos ) );
|
|
|
|
|
|
|
|
CMCPosition ePos = maColMixCtrl.GetCMCPosition();
|
|
|
|
if( ePos == CMC_OTHER )
|
|
|
|
maBtn1.Enable( FALSE );
|
|
|
|
else
|
|
|
|
maBtn1.Enable();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
short SvColorDialog::Execute()
|
|
|
|
{
|
|
|
|
Initialize();
|
|
|
|
|
|
|
|
short nRet = ModalDialog::Execute();
|
|
|
|
|
|
|
|
return( nRet );
|
|
|
|
}
|
|
|
|
|