1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_sc.hxx" 26 27 // System - Includes ----------------------------------------------------- 28 29 30 31 // INCLUDE --------------------------------------------------------------- 32 33 #include "hintwin.hxx" 34 #include "global.hxx" 35 36 #define HINT_LINESPACE 2 37 #define HINT_INDENT 3 38 #define HINT_MARGIN 4 39 40 //================================================================== 41 42 ScHintWindow::ScHintWindow( Window* pParent, const String& rTit, const String& rMsg ) : 43 Window( pParent, WinBits( WB_BORDER ) ), 44 aTitle( rTit ), 45 aMessage( rMsg ) 46 { 47 aMessage.ConvertLineEnd( LINEEND_CR ); 48 49 // Hellgelb, wie Notizen in detfunc.cxx 50 Color aYellow( 255,255,192 ); // hellgelb 51 SetBackground( aYellow ); 52 53 aTextFont = GetFont(); 54 aTextFont.SetTransparent( sal_True ); 55 aTextFont.SetWeight( WEIGHT_NORMAL ); 56 aHeadFont = aTextFont; 57 aHeadFont.SetWeight( WEIGHT_BOLD ); 58 59 SetFont( aHeadFont ); 60 Size aHeadSize( GetTextWidth( aTitle ), GetTextHeight() ); 61 SetFont( aTextFont ); 62 63 Size aTextSize; 64 xub_StrLen nIndex = 0; 65 while ( nIndex != STRING_NOTFOUND ) 66 { 67 String aLine = aMessage.GetToken( 0, CHAR_CR, nIndex ); 68 Size aLineSize( GetTextWidth( aLine ), GetTextHeight() ); 69 nTextHeight = aLineSize.Height(); 70 aTextSize.Height() += nTextHeight; 71 if ( aLineSize.Width() > aTextSize.Width() ) 72 aTextSize.Width() = aLineSize.Width(); 73 } 74 aTextSize.Width() += HINT_INDENT; 75 76 aTextStart = Point( HINT_MARGIN + HINT_INDENT, 77 aHeadSize.Height() + HINT_MARGIN + HINT_LINESPACE ); 78 79 Size aWinSize( Max( aHeadSize.Width(), aTextSize.Width() ) + 2 * HINT_MARGIN + 1, 80 aHeadSize.Height() + aTextSize.Height() + HINT_LINESPACE + 2 * HINT_MARGIN + 1 ); 81 SetOutputSizePixel( aWinSize ); 82 } 83 84 85 ScHintWindow::~ScHintWindow() 86 { 87 } 88 89 90 void __EXPORT ScHintWindow::Paint( const Rectangle& /* rRect */ ) 91 { 92 SetFont( aHeadFont ); 93 DrawText( Point(HINT_MARGIN,HINT_MARGIN), aTitle ); 94 95 SetFont( aTextFont ); 96 xub_StrLen nIndex = 0; 97 Point aLineStart = aTextStart; 98 while ( nIndex != STRING_NOTFOUND ) 99 { 100 String aLine = aMessage.GetToken( 0, CHAR_CR, nIndex ); 101 DrawText( aLineStart, aLine ); 102 aLineStart.Y() += nTextHeight; 103 } 104 } 105