summaryrefslogtreecommitdiff
path: root/src/T2DLL/T2MovieTable.cpp
blob: ee474215016e38331bcad9abf9aa329403fb46ac (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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "T2MoviePlugin.h"
#include "T2MoviePluginList.h"
#include "T2MovieTable.h"

/*virtual*/ int T2MovieTable::OnT2DlgItemCreate(CREATESTRUCT* cs) {
    T2DlgItemTable::SetColWidth(cs->cx, 0, 0);
    return T2DlgItemTable::OnT2DlgItemCreate(cs);
}

T2MovieTable::T2MovieTable(T2TowerDoc* inDoc, T2ImageObj* inImageObj, CPalette* inPalette)
    : T2VerticalTable(inDoc, inImageObj, inPalette)
{
    mClearBackground = true;
    mMovieType = 1;

    SetCellDataSize(sizeof(T2MoviePlugin *));
    InsertCols(1, 0, NULL);
    SetHScrollerStyle(AlwaysHide);
    SetVScrollerStyle(AlwaysShow);
}

void T2MovieTable::SetMovieType(int inType) {
    mMovieType = inType;
}

void T2MovieTable::Add(T2MoviePlugin* inPlugin) {
    unsigned int index = mRows;
    InsertRows(1, index, &inPlugin);
}

void T2MovieTable::Add(CFilePluginList* inList) {
    T2MoviePlugin *thePlugin;
    unsigned int index = mRows;
    POSITION pos = inList->GetHeadPosition();

    while (pos) {
        thePlugin = (T2MoviePlugin *) inList->GetNext(pos);
        InsertRows(1, index, &thePlugin);
        index++;
    }
}

/*virtual*/ void T2MovieTable::DrawCellSelf(CDC* pDC, const TableCellT& inCell, BOOL inSelected) {
    DrawCell(pDC, inCell);
}

/*virtual*/ void T2MovieTable::DrawCell(CDC* pDC, const TableCellT& inCell) {
    int save = pDC->SaveDC();
    pDC->SelectPalette(mPalette, false);
    pDC->RealizePalette();

    CFont font;
    RECT cellRect;

    if (FetchLocalCellFrame(inCell, cellRect)) {
        T2MoviePlugin *thePlugin;
        GetCellData(inCell, &thePlugin);
        if (thePlugin) {
            font.CreateFont(-12, 0, 0, 0, FW_DONTCARE, false, false, false, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_TT_ALWAYS, PROOF_QUALITY, DEFAULT_PITCH, "\x82\x6C\x82\x72 \x83\x53\x83\x56\x83\x62\x83\x4E");

            pDC->SelectObject(&font);
            pDC->SetBkMode(TRANSPARENT);

            CString title;
            thePlugin->GetTitle(title, mMovieType);
            pDC->TextOut(cellRect.left + 4, cellRect.bottom - 12, title, strlen(title));
        }
    }

    pDC->RestoreDC(save);
}

void T2MovieTable::ClickCell(const TableCellT& inCell, const CPoint& inPt) {
    T2DlgItemTable::ClickCell(inCell, inPt);

    if (IsValidCell(mSelectedCell)) {
        T2MoviePlugin *thePlugin;
        GetCellData(mSelectedCell, &thePlugin);

        if (thePlugin)
            BroadcastMessage(-GetDlgCtrlID(), thePlugin);
    }
}

/*virtual*/ void T2MovieTable::OnT2DlgItemLButtonDown(UINT inFlags, CPoint inPt) {
    CPoint pt = inPt;
    ClientToView(&pt, 1);

    TableCellT cell;
    FetchCellHitBy(pt, cell);

    if (IsValidCell(cell))
        ClickCell(cell, inPt);
}

/*virtual*/ BOOL T2MovieTable::OnT2DlgItemEraseBkgnd(CDC* pDC) {
    T2VerticalTable::OnT2DlgItemEraseBkgnd(pDC);

    unsigned int numOfRows, numOfColumns, theRow, theColumn;

    GetTableSize(numOfRows, numOfColumns);
    for (theColumn = 1; theColumn <= numOfColumns; theColumn++) {
        for (theRow = 1; theRow <= numOfRows; theRow++) {
            TableCellT cell;
            cell.row = theRow;
            cell.col = theColumn;
            DrawCell(pDC, cell);
        }
    }

    T2DlgItemTable::HiliteCell(pDC, mSelectedCell);
    return true;
}