Reactos
at master 94 lines 2.1 kB view raw
1/* 2* PROJECT: ReactOS Character Map 3* LICENSE: GPL - See COPYING in the top level directory 4* FILE: base/applications/charmap/cell.cpp 5* PURPOSE: Class for each individual cell 6* COPYRIGHT: Copyright 2015 Ged Murphy <gedmurphy@reactos.org> 7*/ 8 9 10#include "precomp.h" 11#include "Cell.h" 12 13 14/* DATA *****************************************************/ 15 16 17/* PUBLIC METHODS **********************************************/ 18 19CCell::CCell( 20 _In_ HWND hParent 21 ) : 22 CCell(hParent, RECT{0}) 23{ 24} 25 26CCell::CCell( 27 _In_ HWND hParent, 28 _In_ RECT& CellCoordinates 29 ) : 30 m_hParent(hParent), 31 m_CellCoordinates(CellCoordinates), 32 m_Char(L'*'), 33 m_bHasFocus(false), 34 m_bIsLarge(false) 35{ 36} 37 38CCell::~CCell() 39{ 40} 41 42bool 43CCell::OnPaint(_In_ PAINTSTRUCT &PaintStruct) 44{ 45 // Check if this cell is in our paint region 46 BOOL NeedsPaint; RECT rect; 47 NeedsPaint = IntersectRect(&rect, 48 &PaintStruct.rcPaint, 49 &m_CellCoordinates); 50 if (NeedsPaint == FALSE) 51 return false; 52 53 54 55 // Draw the cell border 56 BOOL b = Rectangle(PaintStruct.hdc, 57 m_CellCoordinates.left, 58 m_CellCoordinates.top, 59 m_CellCoordinates.right, 60 m_CellCoordinates.bottom); 61 62 // Calculate an internal drawing canvas for the cell 63 RECT Internal; 64 CopyRect(&Internal, &m_CellCoordinates); 65 InflateRect(&Internal, -1, -1); 66 67 // Check if this cell has focus 68 if (m_bHasFocus) 69 { 70 // Draw the smaller cell to make it look selected 71 Rectangle(PaintStruct.hdc, 72 Internal.left, 73 Internal.top, 74 Internal.right, 75 Internal.bottom); 76 } 77 78 int Success; 79 Success = DrawTextW(PaintStruct.hdc, 80 &m_Char, 81 1, 82 &Internal, 83 DT_CENTER | DT_VCENTER | DT_SINGLELINE); 84 85 return (Success != 0); 86} 87 88void 89CCell::SetCellCoordinates( 90 _In_ RECT& Coordinates 91 ) 92{ 93 m_CellCoordinates = Coordinates; 94}