blob: 3e5e9906aaa69b97039cfc07fa6d1bd146b1b597 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_AUTOFMT_HXX
#define SC_AUTOFMT_HXX
#ifndef _VIRDEV_HXX //autogen
#include <vcl/virdev.hxx>
#endif
#ifndef SV_FIXED_HXX
#include <vcl/fixed.hxx>
#endif
#ifndef SV_LSTBOX_HXX
#include <vcl/lstbox.hxx>
#endif
#ifndef SV_BUTTON_HXX
#include <vcl/button.hxx>
#endif
#ifndef SV_MOREBTN_HXX
#include <vcl/morebtn.hxx>
#endif
#ifndef _DIALOG_HXX //autogen
#include <vcl/dialog.hxx>
#endif
#include <svtools/scriptedtext.hxx>
#include <svx/framelinkarray.hxx>
#include "scdllapi.h"
//------------------------------------------------------------------------
class ScAutoFormat;
class ScAutoFormatData;
class SvxBoxItem;
class SvxLineItem;
class ScAutoFmtPreview; // s.u.
class SvNumberFormatter;
class ScDocument;
//------------------------------------------------------------------------
enum AutoFmtLine { TOP_LINE, BOTTOM_LINE, LEFT_LINE, RIGHT_LINE };
//========================================================================
//CHINA001 class ScAutoFormatDlg : public ModalDialog
//CHINA001 {
//CHINA001 public:
//CHINA001 ScAutoFormatDlg( Window* pParent,
//CHINA001 ScAutoFormat* pAutoFormat,
//CHINA001 const ScAutoFormatData* pSelFormatData,
//CHINA001 ScDocument* pDoc );
//CHINA001 ~ScAutoFormatDlg();
//CHINA001
//CHINA001 sal_uInt16 GetIndex() const { return nIndex; }
//CHINA001 String GetCurrFormatName();
//CHINA001
//CHINA001 private:
//CHINA001 FixedLine aFlFormat;
//CHINA001 ListBox aLbFormat;
//CHINA001 ScAutoFmtPreview* pWndPreview;
//CHINA001 OKButton aBtnOk;
//CHINA001 CancelButton aBtnCancel;
//CHINA001 HelpButton aBtnHelp;
//CHINA001 PushButton aBtnAdd;
//CHINA001 PushButton aBtnRemove;
//CHINA001 MoreButton aBtnMore;
//CHINA001 FixedLine aFlFormatting;
//CHINA001 CheckBox aBtnNumFormat;
//CHINA001 CheckBox aBtnBorder;
//CHINA001 CheckBox aBtnFont;
//CHINA001 CheckBox aBtnPattern;
//CHINA001 CheckBox aBtnAlignment;
//CHINA001 CheckBox aBtnAdjust;
//CHINA001 PushButton aBtnRename;
//CHINA001 String aStrTitle;
//CHINA001 String aStrLabel;
//CHINA001 String aStrClose;
//CHINA001 String aStrDelTitle;
//CHINA001 String aStrDelMsg;
//CHINA001 String aStrRename;
//CHINA001
//CHINA001 //------------------------
//CHINA001 ScAutoFormat* pFormat;
//CHINA001 const ScAutoFormatData* pSelFmtData;
//CHINA001 sal_uInt16 nIndex;
//CHINA001 sal_Bool bCoreDataChanged;
//CHINA001 sal_Bool bFmtInserted;
//CHINA001
//CHINA001 void Init ();
//CHINA001 void UpdateChecks ();
//CHINA001 //------------------------
//CHINA001 DECL_LINK( CheckHdl, Button * );
//CHINA001 DECL_LINK( AddHdl, void * );
//CHINA001 DECL_LINK( RemoveHdl, void * );
//CHINA001 DECL_LINK( SelFmtHdl, void * );
//CHINA001 DECL_LINK( CloseHdl, PushButton * );
//CHINA001 DECL_LINK( DblClkHdl, void * );
//CHINA001 DECL_LINK( RenameHdl, void *);
//CHINA001
//CHINA001 };
//CHINA001
//========================================================================
class SC_DLLPUBLIC ScAutoFmtPreview : public Window
{
public:
ScAutoFmtPreview( Window* pParent, const ResId& rRes, ScDocument* pDoc );
~ScAutoFmtPreview();
void NotifyChange( ScAutoFormatData* pNewData );
protected:
virtual void Paint( const Rectangle& rRect );
private:
ScAutoFormatData* pCurData;
VirtualDevice aVD;
SvtScriptedTextHelper aScriptedText;
::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > xBreakIter;
sal_Bool bFitWidth;
svx::frame::Array maArray; /// Implementation to draw the frame borders.
bool mbRTL;
Size aPrvSize;
long mnLabelColWidth;
long mnDataColWidth1;
long mnDataColWidth2;
long mnRowHeight;
const String aStrJan;
const String aStrFeb;
const String aStrMar;
const String aStrNorth;
const String aStrMid;
const String aStrSouth;
const String aStrSum;
SvNumberFormatter* pNumFmt;
//-------------------------------------------
SC_DLLPRIVATE void Init ();
SC_DLLPRIVATE void DoPaint ( const Rectangle& rRect );
SC_DLLPRIVATE void CalcCellArray ( sal_Bool bFitWidth );
SC_DLLPRIVATE void CalcLineMap ();
SC_DLLPRIVATE void PaintCells ();
/* Usage of type size_t instead of SCCOL/SCROW is correct here - used in
conjunction with class svx::frame::Array (svx/framelinkarray.hxx), which
expects size_t coordinates. */
SC_DLLPRIVATE sal_uInt16 GetFormatIndex( size_t nCol, size_t nRow ) const;
SC_DLLPRIVATE const SvxBoxItem& GetBoxItem( size_t nCol, size_t nRow ) const;
SC_DLLPRIVATE const SvxLineItem& GetDiagItem( size_t nCol, size_t nRow, bool bTLBR ) const;
SC_DLLPRIVATE void DrawString( size_t nCol, size_t nRow );
SC_DLLPRIVATE void DrawStrings();
SC_DLLPRIVATE void DrawBackground();
SC_DLLPRIVATE void MakeFonts ( sal_uInt16 nIndex,
Font& rFont,
Font& rCJKFont,
Font& rCTLFont );
SC_DLLPRIVATE String MakeNumberString( String cellString, sal_Bool bAddDec );
SC_DLLPRIVATE void DrawFrameLine ( const SvxBorderLine& rLineD,
Point from,
Point to,
sal_Bool bHorizontal,
const SvxBorderLine& rLineLT,
const SvxBorderLine& rLineL,
const SvxBorderLine& rLineLB,
const SvxBorderLine& rLineRT,
const SvxBorderLine& rLineR,
const SvxBorderLine& rLineRB );
SC_DLLPRIVATE void CheckPriority ( sal_uInt16 nCurLine,
AutoFmtLine eLine,
SvxBorderLine& rLine );
SC_DLLPRIVATE void GetLines ( sal_uInt16 nIndex, AutoFmtLine eLine,
SvxBorderLine& rLineD,
SvxBorderLine& rLineLT,
SvxBorderLine& rLineL,
SvxBorderLine& rLineLB,
SvxBorderLine& rLineRT,
SvxBorderLine& rLineR,
SvxBorderLine& rLineRB );
};
#endif // SC_AUTOFMT_HXX