summaryrefslogtreecommitdiff
path: root/src/wx/dcp_timeline_reel_marker_view.cc
blob: c2eba3b774b23a64a5cb6131fbfbb995af6740bd (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
/*
    Copyright (C) 2023 Carl Hetherington <cth@carlh.net>

    This file is part of DCP-o-matic.

    DCP-o-matic is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    DCP-o-matic is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.

*/


#include "dcp_timeline_reel_marker_view.h"
LIBDCP_DISABLE_WARNINGS
#include <wx/graphics.h>
LIBDCP_ENABLE_WARNINGS


using namespace std;
using namespace dcpomatic;


DCPTimelineReelMarkerView::DCPTimelineReelMarkerView(DCPTimeline& timeline, int y_pos)
	: DCPTimelineView(timeline)
	, _y_pos(y_pos)
{

}


int
DCPTimelineReelMarkerView::x_pos() const
{
	/* Nudge it over slightly so that the full line width is drawn on the left hand side */
	return time_x(_time) + 2;
}


void
DCPTimelineReelMarkerView::do_paint(wxGraphicsContext* gc)
{
	wxColour outline;
	wxColour fill;
	if (_active) {
		outline = gui_is_dark() ? wxColour(190, 190, 190) : wxColour(0, 0, 0);
		fill = gui_is_dark() ? wxColour(190, 0, 0) : wxColour(255, 0, 0);
	} else {
		outline = wxColour(128, 128, 128);
		fill = wxColour(192, 192, 192);
	}

	gc->SetPen(*wxThePenList->FindOrCreatePen(outline, 2, wxPENSTYLE_SOLID));
	gc->SetBrush(*wxTheBrushList->FindOrCreateBrush(fill, wxBRUSHSTYLE_SOLID));

	gc->DrawRectangle(x_pos(), _y_pos, HEAD_SIZE, HEAD_SIZE);

	auto path = gc->CreatePath();
	path.MoveToPoint(x_pos(), _y_pos + HEAD_SIZE + TAIL_LENGTH);
	path.AddLineToPoint(x_pos(), _y_pos);
	gc->StrokePath(path);
	gc->FillPath(path);
}


dcpomatic::Rect<int>
DCPTimelineReelMarkerView::bbox() const
{
	return { x_pos(), _y_pos, HEAD_SIZE, HEAD_SIZE + TAIL_LENGTH };
}