Thread: [Wgui-cvs] wgui/src wg_button.cpp,1.39,1.40 wg_checkbox.cpp,1.23,1.24 wg_editbox.cpp,1.95,1.96 wg_fr
Status: Beta
Brought to you by:
greenwire
|
From: Rob W. <gre...@us...> - 2004-12-12 09:08:31
|
Update of /cvsroot/wgui/wgui/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18285/src Modified Files: wg_button.cpp wg_checkbox.cpp wg_editbox.cpp wg_frame.cpp wg_groupbox.cpp wg_label.cpp wg_listbox.cpp wg_menu.cpp wg_picture.cpp wg_progress.cpp wg_scrollbar.cpp wg_textbox.cpp wg_tooltip.cpp wg_window.cpp Log Message: Added some safety checks. Index: wg_editbox.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_editbox.cpp,v retrieving revision 1.95 retrieving revision 1.96 diff -C2 -d -r1.95 -r1.96 *** wg_editbox.cpp 23 Nov 2004 23:05:11 -0000 1.95 --- wg_editbox.cpp 12 Dec 2004 09:08:18 -0000 1.96 *************** *** 173,283 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-3); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! CPoint FontCenterPoint = m_WindowRect.SizeRect().Center(); ! ! if (m_bUseMask) ! { ! m_pRenderedString->SetMaskChar('*'); ! } ! else ! { ! m_pRenderedString->SetMaskChar(' '); ! } ! ! CRGBColor FontColor = m_bReadOnly ? DEFAULT_DISABLED_LINE_COLOR : DEFAULT_LINE_COLOR; ! if (CApplication::Instance()->GetKeyFocus() == dynamic_cast<const CWindow*>(this) && !m_bReadOnly) { ! CPoint BoundedDims; ! CPoint Offset; ! std::vector<CRect> CharRects; ! m_pRenderedString->GetMetrics(&BoundedDims, &Offset, &CharRects); ! std::string::size_type SelStartNorm = 0; ! std::string::size_type SelLenNorm = abs(m_SelLength); ! if (m_SelLength < 0) { ! SelStartNorm = m_SelStart + m_SelLength; } else { ! SelStartNorm = m_SelStart; } ! // Handle scrolling ! // Patch for "Scrolling while selecting to left in editbox" by Oldrich Dlouhy ! if (! m_bMouseDown) { ! if (CharRects.empty() || BoundedDims.XPos() < SubRect.Width()) { ! m_ScrollOffset = 0; } else { ! int iCursorPos = 0; ! if (m_SelStart + m_SelLength >= CharRects.size()) { ! iCursorPos = CharRects.back().Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset; } else { ! iCursorPos = CharRects.at(m_SelStart + m_SelLength).Left() + Offset.XPos() + SubRect.Left() + m_ScrollOffset; ! } ! if (iCursorPos < SubRect.Left()) ! { ! m_ScrollOffset = -(iCursorPos - m_ScrollOffset - SubRect.Left() - Offset.XPos()); ! } ! else if (iCursorPos > SubRect.Right()) ! { ! m_ScrollOffset = -(iCursorPos - m_ScrollOffset - SubRect.Left() - Offset.XPos() - SubRect.Width() + 1); ! } ! if (m_ScrollOffset < 0 && (CharRects.back().Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset < SubRect.Right())) ! { ! m_ScrollOffset = SubRect.Right() - CharRects.back().Right() - 1; ! if (m_ScrollOffset > 0) { ! m_ScrollOffset = 0; } } } - } ! // Selection ! if (m_SelLength != 0) ! { ! CRect SelRect; ! SelRect.SetBottom(SubRect.Bottom()); ! SelRect.SetTop(SubRect.Top()); ! SelRect.SetLeft(CharRects.at(SelStartNorm).Left() + Offset.XPos() + SubRect.Left() + m_ScrollOffset); ! SelRect.SetRight(CharRects.at(SelLenNorm + SelStartNorm - 1).Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset); ! SelRect.ClipTo(SubRect); ! Painter.DrawRect(SelRect, true, CApplication::Instance()->GetDefaultSelectionColor(), CApplication::Instance()->GetDefaultSelectionColor()); ! } ! else if (m_bDrawCursor) ! { ! //RenderStringWithCursor ! int CursorPos = Offset.XPos() + SubRect.Left() + m_ScrollOffset; ! if (m_SelStart + m_SelLength >= CharRects.size() && !CharRects.empty()) ! { ! CursorPos += CharRects.back().Right(); ! } ! else if (m_SelStart + m_SelLength >= 0 && m_SelStart + m_SelLength < CharRects.size()) { ! CursorPos += CharRects.at(m_SelStart + m_SelLength).Left(); } ! if (CursorPos >= SubRect.Left() && CursorPos <= SubRect.Right()) { ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), CursorPos, COLOR_BLACK); } } - } ! if (m_pRenderedString.get()) ! { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, ! CPoint(SubRect.Left() + m_ScrollOffset, SubRect.Bottom() - m_pRenderedString->GetMaxFontHeight() / 4), FontColor); } } --- 173,286 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-3); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! CPoint FontCenterPoint = m_WindowRect.SizeRect().Center(); ! if (m_bUseMask) { ! m_pRenderedString->SetMaskChar('*'); } else { ! m_pRenderedString->SetMaskChar(' '); } ! CRGBColor FontColor = m_bReadOnly ? DEFAULT_DISABLED_LINE_COLOR : DEFAULT_LINE_COLOR; ! if (CApplication::Instance()->GetKeyFocus() == dynamic_cast<const CWindow*>(this) && !m_bReadOnly) { ! CPoint BoundedDims; ! CPoint Offset; ! std::vector<CRect> CharRects; ! m_pRenderedString->GetMetrics(&BoundedDims, &Offset, &CharRects); ! ! std::string::size_type SelStartNorm = 0; ! std::string::size_type SelLenNorm = abs(m_SelLength); ! if (m_SelLength < 0) { ! SelStartNorm = m_SelStart + m_SelLength; } else { ! SelStartNorm = m_SelStart; ! } ! ! // Handle scrolling ! // Patch for "Scrolling while selecting to left in editbox" by Oldrich Dlouhy ! if (! m_bMouseDown) ! { ! if (CharRects.empty() || BoundedDims.XPos() < SubRect.Width()) { ! m_ScrollOffset = 0; } else { ! int iCursorPos = 0; ! if (m_SelStart + m_SelLength >= CharRects.size()) ! { ! iCursorPos = CharRects.back().Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset; ! } ! else ! { ! iCursorPos = CharRects.at(m_SelStart + m_SelLength).Left() + Offset.XPos() + SubRect.Left() + m_ScrollOffset; ! } ! if (iCursorPos < SubRect.Left()) ! { ! m_ScrollOffset = -(iCursorPos - m_ScrollOffset - SubRect.Left() - Offset.XPos()); ! } ! else if (iCursorPos > SubRect.Right()) ! { ! m_ScrollOffset = -(iCursorPos - m_ScrollOffset - SubRect.Left() - Offset.XPos() - SubRect.Width() + 1); ! } ! if (m_ScrollOffset < 0 && (CharRects.back().Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset < SubRect.Right())) { ! m_ScrollOffset = SubRect.Right() - CharRects.back().Right() - 1; ! if (m_ScrollOffset > 0) ! { ! m_ScrollOffset = 0; ! } } } } ! // Selection ! if (m_SelLength != 0) { ! CRect SelRect; ! SelRect.SetBottom(SubRect.Bottom()); ! SelRect.SetTop(SubRect.Top()); ! SelRect.SetLeft(CharRects.at(SelStartNorm).Left() + Offset.XPos() + SubRect.Left() + m_ScrollOffset); ! SelRect.SetRight(CharRects.at(SelLenNorm + SelStartNorm - 1).Right() + Offset.XPos() + SubRect.Left() + m_ScrollOffset); ! SelRect.ClipTo(SubRect); ! Painter.DrawRect(SelRect, true, CApplication::Instance()->GetDefaultSelectionColor(), CApplication::Instance()->GetDefaultSelectionColor()); } ! else if (m_bDrawCursor) { ! //RenderStringWithCursor ! int CursorPos = Offset.XPos() + SubRect.Left() + m_ScrollOffset; ! if (m_SelStart + m_SelLength >= CharRects.size() && !CharRects.empty()) ! { ! CursorPos += CharRects.back().Right(); ! } ! else if (m_SelStart + m_SelLength >= 0 && m_SelStart + m_SelLength < CharRects.size()) ! { ! CursorPos += CharRects.at(m_SelStart + m_SelLength).Left(); ! } ! if (CursorPos >= SubRect.Left() && CursorPos <= SubRect.Right()) ! { ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), CursorPos, COLOR_BLACK); ! } } } ! if (m_pRenderedString.get()) ! { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, ! CPoint(SubRect.Left() + m_ScrollOffset, SubRect.Bottom() - m_pRenderedString->GetMaxFontHeight() / 4), FontColor); ! } } } Index: wg_checkbox.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_checkbox.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** wg_checkbox.cpp 16 Jul 2004 16:41:36 -0000 1.23 --- wg_checkbox.cpp 12 Dec 2004 09:08:18 -0000 1.24 *************** *** 63,80 **** CWindow::Draw(); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! if (m_eCheckBoxState != DISABLED) { ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect.Grow(-2); ! if (m_eCheckBoxState == CHECKED) { ! Painter.DrawLine(SubRect.TopLeft(), SubRect.BottomRight(), DEFAULT_LINE_COLOR); ! Painter.DrawLine(SubRect.BottomLeft(), SubRect.TopRight(), DEFAULT_LINE_COLOR); } } --- 63,83 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! if (m_eCheckBoxState != DISABLED) { ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect.Grow(-2); ! if (m_eCheckBoxState == CHECKED) ! { ! Painter.DrawLine(SubRect.TopLeft(), SubRect.BottomRight(), DEFAULT_LINE_COLOR); ! Painter.DrawLine(SubRect.BottomLeft(), SubRect.TopRight(), DEFAULT_LINE_COLOR); ! } } } Index: wg_tooltip.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_tooltip.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** wg_tooltip.cpp 23 Nov 2004 23:05:17 -0000 1.27 --- wg_tooltip.cpp 12 Dec 2004 09:08:19 -0000 1.28 *************** *** 84,94 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-2); ! if (m_pRenderedString.get()) { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, SubRect.TopLeft(), m_FontColor); } } --- 84,97 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-2); ! if (m_pRenderedString.get()) ! { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, SubRect.TopLeft(), m_FontColor); ! } } } Index: wg_progress.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_progress.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** wg_progress.cpp 16 Jul 2004 16:41:36 -0000 1.16 --- wg_progress.cpp 12 Dec 2004 09:08:19 -0000 1.17 *************** *** 50,69 **** CWindow::Draw(); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect.Grow(-2); ! if (m_Value > m_MinLimit) { ! if (m_Value < m_MaxLimit) { ! SubRect.SetRight(stdex::safe_static_cast<int>(SubRect.Left() + ! SubRect.Width() * (stdex::safe_static_cast<double>(m_Value - m_MinLimit) / (m_MaxLimit - m_MinLimit)))); } - Painter.DrawRect(SubRect, true, m_BarColor, m_BarColor); } } --- 50,72 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect.Grow(-2); ! if (m_Value > m_MinLimit) { ! if (m_Value < m_MaxLimit) ! { ! SubRect.SetRight(stdex::safe_static_cast<int>(SubRect.Left() + ! SubRect.Width() * (stdex::safe_static_cast<double>(m_Value - m_MinLimit) / (m_MaxLimit - m_MinLimit)))); ! } ! Painter.DrawRect(SubRect, true, m_BarColor, m_BarColor); } } } Index: wg_groupbox.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_groupbox.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** wg_groupbox.cpp 23 Nov 2004 23:05:16 -0000 1.19 --- wg_groupbox.cpp 12 Dec 2004 09:08:19 -0000 1.20 *************** *** 64,78 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(CRect(0, 5, m_WindowRect.Width() - 1, m_WindowRect.Height() - 5), ! false, DEFAULT_LINE_COLOR); ! CPoint Dims, Offset; ! m_pRenderedString->GetMetrics(&Dims, &Offset, 0); ! Painter.DrawRect(CRect(CPoint(6, 0), CPoint(14, 0) + Dims), ! true, m_BackgroundColor, m_BackgroundColor); ! ! if (m_pRenderedString.get()) { ! m_pRenderedString->Draw(m_pSDLSurface, m_WindowRect.SizeRect(), CPoint(10, 0), m_FontColor); } } --- 64,81 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(CRect(0, 5, m_WindowRect.Width() - 1, m_WindowRect.Height() - 5), ! false, DEFAULT_LINE_COLOR); ! CPoint Dims, Offset; ! m_pRenderedString->GetMetrics(&Dims, &Offset, 0); ! Painter.DrawRect(CRect(CPoint(6, 0), CPoint(14, 0) + Dims), ! true, m_BackgroundColor, m_BackgroundColor); ! ! if (m_pRenderedString.get()) ! { ! m_pRenderedString->Draw(m_pSDLSurface, m_WindowRect.SizeRect(), CPoint(10, 0), m_FontColor); ! } } } Index: wg_scrollbar.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_scrollbar.cpp,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** wg_scrollbar.cpp 3 Aug 2004 15:03:26 -0000 1.43 --- wg_scrollbar.cpp 12 Dec 2004 09:08:19 -0000 1.44 *************** *** 94,106 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! if (m_MinLimit != m_MaxLimit) { ! Painter.DrawRect(m_ThumbRect, false, COLOR_BLACK); ! CRect SubRect(m_ThumbRect); ! SubRect.Grow(-1); ! Painter.DrawRect(SubRect, true, COLOR_LIGHTGRAY, m_BackgroundColor); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); } } --- 94,109 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! if (m_MinLimit != m_MaxLimit) ! { ! Painter.DrawRect(m_ThumbRect, false, COLOR_BLACK); ! CRect SubRect(m_ThumbRect); ! SubRect.Grow(-1); ! Painter.DrawRect(SubRect, true, COLOR_LIGHTGRAY, m_BackgroundColor); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); ! } } } Index: wg_picture.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_picture.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** wg_picture.cpp 25 Jun 2004 19:37:51 -0000 1.13 --- wg_picture.cpp 12 Dec 2004 09:08:19 -0000 1.14 *************** *** 70,81 **** CWindow::Draw(); ! SDL_Rect SourceRect = m_ClientRect.SizeRect().SDLRect(); ! SDL_Rect DestRect = m_ClientRect.SDLRect(); ! SDL_BlitSurface(m_hBitmap.Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); ! ! CPainter Painter(m_pSDLSurface); ! if (m_bDrawBorder) { ! Painter.DrawRect(m_WindowRect.SizeRect(), false, m_BorderColor); } } --- 70,84 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! SDL_Rect SourceRect = m_ClientRect.SizeRect().SDLRect(); ! SDL_Rect DestRect = m_ClientRect.SDLRect(); ! SDL_BlitSurface(m_hBitmap.Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); ! ! CPainter Painter(m_pSDLSurface); ! if (m_bDrawBorder) ! { ! Painter.DrawRect(m_WindowRect.SizeRect(), false, m_BorderColor); ! } } } Index: wg_menu.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_menu.cpp,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** wg_menu.cpp 23 Nov 2004 20:20:26 -0000 1.54 --- wg_menu.cpp 12 Dec 2004 09:08:19 -0000 1.55 *************** *** 234,254 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! UpdateCachedRects(); ! for (t_MenuItemVector::const_iterator iter = m_MenuItems.begin(); iter != m_MenuItems.end(); ++iter) { ! if (m_pHighlightedItem == &(iter->first)) ! { ! Painter.DrawRect(iter->second.second, true, m_HighlightColor, m_HighlightColor); ! } ! CRect TextRect(iter->second.second); ! TextRect.Grow(-2); ! if (iter->first.bSpacer) { ! Painter.DrawVLine(TextRect.Top(), TextRect.Bottom(), TextRect.Left(), COLOR_LIGHTGRAY); ! Painter.DrawVLine(TextRect.Top(), TextRect.Bottom(), TextRect.Right(), COLOR_DARKGRAY); } - else - iter->second.first.Draw(m_pSDLSurface, TextRect, CPoint(TextRect.Left(), (TextRect.Top() + TextRect.Bottom()) * 3 / 4)); } } --- 234,257 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! UpdateCachedRects(); ! for (t_MenuItemVector::const_iterator iter = m_MenuItems.begin(); iter != m_MenuItems.end(); ++iter) { ! if (m_pHighlightedItem == &(iter->first)) ! { ! Painter.DrawRect(iter->second.second, true, m_HighlightColor, m_HighlightColor); ! } ! CRect TextRect(iter->second.second); ! TextRect.Grow(-2); ! if (iter->first.bSpacer) ! { ! Painter.DrawVLine(TextRect.Top(), TextRect.Bottom(), TextRect.Left(), COLOR_LIGHTGRAY); ! Painter.DrawVLine(TextRect.Top(), TextRect.Bottom(), TextRect.Right(), COLOR_DARKGRAY); ! } ! else ! iter->second.first.Draw(m_pSDLSurface, TextRect, CPoint(TextRect.Left(), (TextRect.Top() + TextRect.Bottom()) * 3 / 4)); } } } *************** *** 523,563 **** CWindow::Draw(); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(0, m_WindowRect.Width(), m_WindowRect.Height(), COLOR_DARKGRAY); ! Painter.DrawVLine(0, m_WindowRect.Height(), m_WindowRect.Width(), COLOR_DARKGRAY); ! UpdateCachedRects(); ! for (t_MenuItemVector::const_iterator iter = m_MenuItems.begin(); iter != m_MenuItems.end(); ++iter) { ! if (m_pHighlightedItem == &(iter->first)) ! { ! Painter.DrawRect(iter->second.second, true, m_HighlightColor, m_HighlightColor); ! } ! CRect TextRect(iter->second.second); ! TextRect.Grow(-2); ! if (iter->first.bSpacer) ! { ! Painter.DrawHLine(TextRect.Left(), TextRect.Right(), TextRect.Top(), COLOR_LIGHTGRAY); ! Painter.DrawHLine(TextRect.Left(), TextRect.Right(), TextRect.Bottom(), COLOR_DARKGRAY); ! } ! else ! iter->second.first.Draw(m_pSDLSurface, TextRect, TextRect.TopLeft()); ! if (iter->first.pPopup) { ! CRect ArrowRect(iter->second.second); ! ArrowRect.SetLeft(ArrowRect.Right() - m_hRightArrowBitmap.Bitmap()->w); ! SDL_Rect SourceRect; ! SourceRect.x = stdex::safe_static_cast<short int>(0); ! SourceRect.y = stdex::safe_static_cast<short int>((m_hRightArrowBitmap.Bitmap()->h - ArrowRect.Height()) / 2 < 0 ? ! 0 : (m_hRightArrowBitmap.Bitmap()->h - ArrowRect.Height()) / 2); ! SourceRect.w = stdex::safe_static_cast<short int>(m_hRightArrowBitmap.Bitmap()->w); ! SourceRect.h = stdex::safe_static_cast<short int>(std::min(ArrowRect.Height(), m_hRightArrowBitmap.Bitmap()->h)); ! SDL_Rect DestRect; ! DestRect.x = stdex::safe_static_cast<short int>(ArrowRect.Left()); ! DestRect.y = stdex::safe_static_cast<short int>((ArrowRect.Height() - m_hRightArrowBitmap.Bitmap()->h) / 2 < 0 ? ! ArrowRect.Top() : ArrowRect.Top() + (ArrowRect.Height() - m_hRightArrowBitmap.Bitmap()->h) / 2); ! DestRect.w = stdex::safe_static_cast<short int>(m_hRightArrowBitmap.Bitmap()->w); ! DestRect.h = stdex::safe_static_cast<short int>(std::min(ArrowRect.Height(), m_hRightArrowBitmap.Bitmap()->h)); ! SDL_BlitSurface(m_hRightArrowBitmap.Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); } } --- 526,569 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(0, m_WindowRect.Width(), m_WindowRect.Height(), COLOR_DARKGRAY); ! Painter.DrawVLine(0, m_WindowRect.Height(), m_WindowRect.Width(), COLOR_DARKGRAY); ! UpdateCachedRects(); ! for (t_MenuItemVector::const_iterator iter = m_MenuItems.begin(); iter != m_MenuItems.end(); ++iter) { ! if (m_pHighlightedItem == &(iter->first)) ! { ! Painter.DrawRect(iter->second.second, true, m_HighlightColor, m_HighlightColor); ! } ! CRect TextRect(iter->second.second); ! TextRect.Grow(-2); ! if (iter->first.bSpacer) ! { ! Painter.DrawHLine(TextRect.Left(), TextRect.Right(), TextRect.Top(), COLOR_LIGHTGRAY); ! Painter.DrawHLine(TextRect.Left(), TextRect.Right(), TextRect.Bottom(), COLOR_DARKGRAY); ! } ! else ! iter->second.first.Draw(m_pSDLSurface, TextRect, TextRect.TopLeft()); ! if (iter->first.pPopup) ! { ! CRect ArrowRect(iter->second.second); ! ArrowRect.SetLeft(ArrowRect.Right() - m_hRightArrowBitmap.Bitmap()->w); ! SDL_Rect SourceRect; ! SourceRect.x = stdex::safe_static_cast<short int>(0); ! SourceRect.y = stdex::safe_static_cast<short int>((m_hRightArrowBitmap.Bitmap()->h - ArrowRect.Height()) / 2 < 0 ? ! 0 : (m_hRightArrowBitmap.Bitmap()->h - ArrowRect.Height()) / 2); ! SourceRect.w = stdex::safe_static_cast<short int>(m_hRightArrowBitmap.Bitmap()->w); ! SourceRect.h = stdex::safe_static_cast<short int>(std::min(ArrowRect.Height(), m_hRightArrowBitmap.Bitmap()->h)); ! SDL_Rect DestRect; ! DestRect.x = stdex::safe_static_cast<short int>(ArrowRect.Left()); ! DestRect.y = stdex::safe_static_cast<short int>((ArrowRect.Height() - m_hRightArrowBitmap.Bitmap()->h) / 2 < 0 ? ! ArrowRect.Top() : ArrowRect.Top() + (ArrowRect.Height() - m_hRightArrowBitmap.Bitmap()->h) / 2); ! DestRect.w = stdex::safe_static_cast<short int>(m_hRightArrowBitmap.Bitmap()->w); ! DestRect.h = stdex::safe_static_cast<short int>(std::min(ArrowRect.Height(), m_hRightArrowBitmap.Bitmap()->h)); ! SDL_BlitSurface(m_hRightArrowBitmap.Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); ! } } } Index: wg_button.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_button.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** wg_button.cpp 23 Nov 2004 23:05:10 -0000 1.39 --- wg_button.cpp 12 Dec 2004 09:08:18 -0000 1.40 *************** *** 78,110 **** CWindow::Draw(); ! CPoint FontCenterPoint = m_WindowRect.SizeRect().Center(); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! CRGBColor FontColor = DEFAULT_LINE_COLOR; ! switch (m_eButtonState) ! { ! case UP: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); ! break; ! case DOWN: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! FontCenterPoint = FontCenterPoint + CPoint(1, 1); ! break; ! case DISABLED: ! FontColor = DEFAULT_DISABLED_LINE_COLOR; ! break; ! default: ! break; ! } ! SubRect.Grow(-2); ! if (m_pRenderedString.get()) { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, FontCenterPoint, FontColor); } } --- 78,113 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CPoint FontCenterPoint = m_WindowRect.SizeRect().Center(); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! CRGBColor FontColor = DEFAULT_LINE_COLOR; ! switch (m_eButtonState) ! { ! case UP: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); ! break; ! case DOWN: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! FontCenterPoint = FontCenterPoint + CPoint(1, 1); ! break; ! case DISABLED: ! FontColor = DEFAULT_DISABLED_LINE_COLOR; ! break; ! default: ! break; ! } ! SubRect.Grow(-2); ! if (m_pRenderedString.get()) ! { ! m_pRenderedString->Draw(m_pSDLSurface, SubRect, FontCenterPoint, FontColor); ! } } } *************** *** 235,272 **** CWindow::Draw(); ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! switch (m_eButtonState) { ! case UP: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); ! break; ! case DOWN: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect = SubRect + CPoint(1, 1); ! break; ! case DISABLED: ! break; ! default: ! break; } - SubRect.Grow(-1); - SDL_Rect SourceRect; - SourceRect.x = stdex::safe_static_cast<short int>((m_phBitmap->Bitmap()->w - SubRect.Width()) / 2 < 0 ? 0 : (m_phBitmap->Bitmap()->w - SubRect.Width()) / 2); - SourceRect.y = stdex::safe_static_cast<short int>((m_phBitmap->Bitmap()->h - SubRect.Height()) / 2 < 0 ? 0 : (m_phBitmap->Bitmap()->w - SubRect.Height()) / 2); - SourceRect.w = stdex::safe_static_cast<short int>(std::min(SubRect.Width(), m_phBitmap->Bitmap()->w)); - SourceRect.h = stdex::safe_static_cast<short int>(std::min(SubRect.Height(), m_phBitmap->Bitmap()->h)); - SDL_Rect DestRect; - DestRect.x = stdex::safe_static_cast<short int>((SubRect.Width() - m_phBitmap->Bitmap()->w) / 2 < 0 ? SubRect.Left() : SubRect.Left() + (SubRect.Width() - m_phBitmap->Bitmap()->w) / 2); - DestRect.y = stdex::safe_static_cast<short int>((SubRect.Height() - m_phBitmap->Bitmap()->h) / 2 < 0 ? SubRect.Top() : SubRect.Top() + (SubRect.Height() - m_phBitmap->Bitmap()->h) / 2); - DestRect.w = stdex::safe_static_cast<short int>(std::min(SubRect.Width(), m_phBitmap->Bitmap()->w)); - DestRect.h = stdex::safe_static_cast<short int>(std::min(SubRect.Height(), m_phBitmap->Bitmap()->h)); - SDL_BlitSurface(m_phBitmap->Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); } --- 238,278 ---- CWindow::Draw(); ! if (m_pSDLSurface) { ! CRect SubRect(m_WindowRect.SizeRect()); ! SubRect.Grow(-1); ! CPainter Painter(m_pSDLSurface); ! Painter.DrawRect(m_WindowRect.SizeRect(), false, COLOR_BLACK); ! switch (m_eButtonState) ! { ! case UP: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Bottom(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Right(), COLOR_DARKGRAY); ! break; ! case DOWN: ! Painter.DrawRect(SubRect, false, COLOR_LIGHTGRAY); ! Painter.DrawHLine(SubRect.Left(), SubRect.Right(), SubRect.Top(), COLOR_DARKGRAY); ! Painter.DrawVLine(SubRect.Top(), SubRect.Bottom(), SubRect.Left(), COLOR_DARKGRAY); ! SubRect = SubRect + CPoint(1, 1); ! break; ! case DISABLED: ! break; ! default: ! break; ! } ! SubRect.Grow(-1); ! SDL_Rect SourceRect; ! SourceRect.x = stdex::safe_static_cast<short int>((m_phBitmap->Bitmap()->w - SubRect.Width()) / 2 < 0 ? 0 : (m_phBitmap->Bitmap()->w - SubRect.Width()) / 2); ! SourceRect.y = stdex::safe_static_cast<short int>((m_phBitmap->Bitmap()->h - SubRect.Height()) / 2 < 0 ? 0 : (m_phBitmap->Bitmap()->w - SubRect.Height()) / 2); ! SourceRect.w = stdex::safe_static_cast<short int>(std::min(SubRect.Width(), m_phBitmap->Bitmap()->w)); ! SourceRect.h = stdex::safe_static_cast<short int>(std::min(SubRect.Height(), m_phBitmap->Bitmap()->h)); ! SDL_Rect DestRect; ! DestRect.x = stdex::safe_static_cast<short int>((SubRect.Width() - m_phBitmap->Bitmap()->w) / 2 < 0 ? SubRect.Left() : SubRect.Left() + (SubRect.Width() - m_phBitmap->Bitmap()->w) / 2); ! DestRect.y = stdex::safe_static_cast<short int>((SubRect.Height() - m_phBitmap->Bitmap()->h) / 2 < 0 ? SubRect.Top() : SubRect.Top() + (SubRect.Height() - m_phBitmap->Bitmap()->h) / 2); ! DestRect.w = stdex::safe_static_cast<short int>(std::min(SubRect.Width(), m_phBitmap->Bitmap()->w)); ! DestRect.h = stdex::safe_static_cast<short int>(std::min(SubRect.Height(), m_phBitmap->Bitmap()->h)); ! SDL_BlitSurface(m_phBitmap->Bitmap(), &SourceRect, m_pSDLSurface, &DestRect); } } Index: wg_label.cpp ============================... [truncated message content] |