summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2DlgItemAPTable.cpp
blob: 11282ffb85b0d8d0d57390f120b680c358f24d3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "T2DlgItemAPTable.h"

T2DlgItemAPTable::T2DlgItemAPTable(T2TowerDoc* inDoc, T2ImageObj* inImageObj, CPalette* inPalette)
    : T2DlgItemImageTable(inDoc, inImageObj, inPalette)
{
    mClickPoint = CPoint(-1, -1);
    mClickedCell.row = 0;
    mClickedCell.col = 0;
}

T2DlgItemAPTable::T2DlgItemAPTable(int inRows, int inCols, int inRowHeight, int inColWidth, int inCellDataSize, T2TowerDoc* inDoc, T2ImageObj* inImageObj, CPalette* inPalette)
    : T2DlgItemImageTable(inRows, inCols, inRowHeight, inColWidth, inCellDataSize, inDoc, inImageObj, inPalette)
{
}

/*virtual*/ void T2DlgItemAPTable::DrawCell(CDC* pDC, const TableCellT& inCell) {
    if (EqualCell(inCell, mSelectedCell))
        DrawCellSelf(pDC, inCell, true);
    else
        DrawCellSelf(pDC, inCell, false);
}

/*virtual*/ void T2DlgItemAPTable::DrawCellSelf(CDC* pDC, const TableCellT& inCell, BOOL selected) {
    CRect rect;
    if (FetchLocalCellFrame(inCell, rect)) {
        int save = pDC->SaveDC();

        CBrush brush;
        brush.CreateSolidBrush(PALETTEINDEX(0));

        CPen pen;
        pen.CreatePen(PS_SOLID, 0, PALETTEINDEX(255));

        pDC->SelectObject(&brush);
        pDC->SelectObject(&pen);
        pDC->SetBkMode(TRANSPARENT);

        pDC->Rectangle(rect);

        char *text = new char[128];
        GetCellData(inCell, text);
        pDC->DrawText(text, rect, DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
        delete[] text;

        pDC->RestoreDC(save);
    }
}

/*virtual*/ void T2DlgItemAPTable::HiliteCell(CDC* pDC, const TableCellT& inCell) {
    T2DlgItemImageTable::HiliteCell(pDC, inCell);
}

/*virtual*/ void T2DlgItemAPTable::UnhiliteCell(CDC* pDC, const TableCellT& inCell) {
    T2DlgItemImageTable::UnhiliteCell(pDC, inCell);
}

/*virtual*/ void T2DlgItemAPTable::ClickCell(const TableCellT& inCell, const POINT& inPt) {
    CRect rect;
    if (FetchLocalCellFrame(inCell, rect)) {
        mClickPoint = inPt;
        mClickedCell = inCell;
        Notify(GetDlgCtrlID(), 0, (void *) &inPt);
    }
}