Esempio n. 1
0
// Select points within rectangle
void
FieldView::SelectPointsInRect(const CC_coord& c1, const CC_coord& c2, bool toggleSelected)
{
	CC_lasso lasso(c1);
	lasso.Append(CC_coord(c1.x, c2.y));
	lasso.Append(c2);
	lasso.Append(CC_coord(c2.x, c1.y));
	lasso.End();
	SelectWithLasso(&lasso, toggleSelected);
}
Esempio n. 2
0
// Return a bounding box of the show of where the marchers are.  If they are outside the show, we don't see them.
std::pair<CC_coord, CC_coord>
GetMarcherBoundingBox(const std::vector<CC_point>& pts)
{
    CC_coord bounding_box_upper_left{10000, 10000};
    CC_coord bounding_box_low_right{-10000, -10000};

    for (auto& i : pts)
    {
        auto position = i.GetPos();
        bounding_box_upper_left = CC_coord(std::min(bounding_box_upper_left.x, position.x), std::min(bounding_box_upper_left.y, position.y));
        bounding_box_low_right = CC_coord(std::max(bounding_box_low_right.x, position.x), std::max(bounding_box_low_right.y, position.y));
    }

    return { bounding_box_upper_left, bounding_box_low_right };
}
Esempio n. 3
0
void CC_point_UnitTests()
{
	// test some defaults:
	CC_point_values values;
	values.mFlags = 0;
	values.mSym = SYMBOL_PLAIN;
	values.mPos = CC_coord();
	for (unsigned i = 0; i < CC_point::kNumRefPoints; ++i)
		values.mRef[i] = CC_coord();
	values.GetFlip = false;

	// test defaults
	CC_point underTest;
	assert(Check_CC_point(underTest, values));

	// test flip
	underTest.Flip(false);
	assert(Check_CC_point(underTest, values));

	values.mFlags = 1;
	values.GetFlip = true;
	underTest.Flip(true);
	assert(Check_CC_point(underTest, values));

	values.mFlags = 0;
	values.GetFlip = false;
	underTest.Flip(false);
	assert(Check_CC_point(underTest, values));

	// test flip toggle
	values.mFlags = 1;
	values.GetFlip = true;
	underTest.FlipToggle();
	assert(Check_CC_point(underTest, values));

	values.mFlags = 0;
	values.GetFlip = false;
	underTest.FlipToggle();
	assert(Check_CC_point(underTest, values));

}
Esempio n. 4
0
void CC_coord_UnitTests()
{
	static const size_t kNumRand = 10;
	// test some defaults:
	{
		CC_coord undertest;
		assert(0.0 == undertest.Magnitude());
		assert(0.0 == undertest.DM_Magnitude());
		assert(0.0 == undertest.Direction());
	}

	// test equality:
	for (size_t i = 0; i < kNumRand; ++i)
	{
		Coord x1, y1, x2, y2;
		x1 = rand(); y1 = rand();
		x2 = rand(); y2 = rand();
		CC_coord undertest1(x1, y1);
		CC_coord undertest2(x2, y2);
		assert(x1 == undertest1.x);
		assert(y1 == undertest1.y);
		assert(x2 == undertest2.x);
		assert(y2 == undertest2.y);
		assert(CC_coord(x1,y1) == undertest1);
		assert(CC_coord(x2,y2) == undertest2);
		assert(!(CC_coord(x1,y1) != undertest1));
		assert(!(CC_coord(x2,y2) != undertest2));

		CC_coord newValue;

		Coord x3, y3;

		newValue = undertest1 + undertest2;
		x3 = undertest1.x + undertest2.x;
		y3 = undertest1.y + undertest2.y;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);
		newValue = undertest1;
		newValue += undertest2;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);
		newValue = undertest1 - undertest2;
		x3 = undertest1.x - undertest2.x;
		y3 = undertest1.y - undertest2.y;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);
		newValue = undertest1;
		newValue -= undertest2;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);

		newValue = -undertest1;
		assert((-undertest1.x) == newValue.x);
		assert((-undertest1.y) == newValue.y);

		short factor = rand();
		newValue = undertest1 * factor;
		x3 = undertest1.x * factor;
		y3 = undertest1.y * factor;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);
		newValue = undertest1;
		newValue *= factor;
		assert((x3) == newValue.x);
		assert((y3) == newValue.y);
		// avoid div by 0
		if (factor)
		{
			newValue = undertest1 / factor;
			x3 = undertest1.x / factor;
			y3 = undertest1.y / factor;
			assert((x3) == newValue.x);
			assert((y3) == newValue.y);
			newValue = undertest1;
			newValue /= factor;
			assert((x3) == newValue.x);
			assert((y3) == newValue.y);
		}
	}
}
Esempio n. 5
0
void ShowModeStandard_DrawHelper(wxDC& dc, const CalChartConfiguration& config, const ShowModeStandard& mode, HowToDraw howToDraw)
{
    wxPoint points[5];
    auto fieldsize = mode.FieldSize();
    CC_coord border1 = mode.Border1();
    if (howToDraw == ShowMode_kOmniView)
    {
        border1 = CC_coord(0, 0);
    }
    auto offsetx = 0;//-fieldsize.x/2;
    auto offsety = 0;//-fieldsize.y/2;
    auto borderoffsetx = 0;//-border1.x;
    auto borderoffsety = 0;//-border1.y;

    points[0] = wxPoint(0+offsetx, 0+offsety);
    points[1] = wxPoint(fieldsize.x+offsetx, 0+offsety);
    points[2] = wxPoint(fieldsize.x+offsetx, fieldsize.y+offsety);
    points[3] = wxPoint(0+offsetx, fieldsize.y+offsety);
    points[4] = points[0];

    // Draw outline
    dc.DrawLines(5, points, border1.x+borderoffsetx, border1.y+borderoffsety);

    // Draw vertical lines
    for (Coord j = Int2Coord(8)+offsetx; j < fieldsize.x+offsetx; j += Int2Coord(8))
    {
        // draw solid yardlines
        points[0] = wxPoint(j, 0+offsety);
        points[1] = wxPoint(j, fieldsize.y+offsety);
        dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
    }

    for (Coord j = Int2Coord(4)+offsetx; (howToDraw == ShowMode_kFieldView || howToDraw == ShowMode_kPrinting) && j < fieldsize.x+offsetx; j += Int2Coord(8))
    {
        // draw mid-dotted lines
        for (Coord k = 0+offsety; k < fieldsize.y+offsety; k += Int2Coord(2))
        {
            points[0] = wxPoint(j, k);
            points[1] = wxPoint(j, k + Int2Coord(1));
            dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
        }
    }

    // Draw horizontal mid-dotted lines
    for (Coord j = Int2Coord(4)+offsety; (howToDraw == ShowMode_kFieldView || howToDraw == ShowMode_kPrinting) && j < fieldsize.y+offsety; j += Int2Coord(4))
    {
        if ((j == Int2Coord(mode.HashW())) || j == Int2Coord(mode.HashE()))
            continue;
        for (Coord k = 0+offsetx; k < fieldsize.x+offsetx; k += Int2Coord(2))
        {
            points[0] = wxPoint(k, j);
            points[1] = wxPoint(k + Int2Coord(1), j);
            dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
        }
    }

    // Draw hashes
    for (Coord j = Int2Coord(0)+offsetx; j < fieldsize.x+offsetx; j += Int2Coord(8))
    {
        points[0] = wxPoint(j+Float2Coord(0.0*8), Int2Coord(mode.HashW()));
        points[1] = wxPoint(j+Float2Coord(0.1*8), Int2Coord(mode.HashW()));
        dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
        points[0] = wxPoint(j+Float2Coord(0.9*8), Int2Coord(mode.HashW()));
        points[1] = wxPoint(j+Float2Coord(1.0*8), Int2Coord(mode.HashW()));
        dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);

        points[0] = wxPoint(j+Float2Coord(0.0*8), Int2Coord(mode.HashE()));
        points[1] = wxPoint(j+Float2Coord(0.1*8), Int2Coord(mode.HashE()));
        dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
        points[0] = wxPoint(j+Float2Coord(0.9*8), Int2Coord(mode.HashE()));
        points[1] = wxPoint(j+Float2Coord(1.0*8), Int2Coord(mode.HashE()));
        dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);

        for (size_t midhash = 1; (howToDraw == ShowMode_kFieldView || howToDraw == ShowMode_kPrinting) && midhash < 5; ++midhash)
        {
            points[0] = wxPoint(j+Float2Coord(midhash/5.0*8), Int2Coord(mode.HashW()));
            points[1] = wxPoint(j+Float2Coord(midhash/5.0*8), Float2Coord(mode.HashW()-(0.2*8)));
            dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);

            points[0] = wxPoint(j+Float2Coord(midhash/5.0*8), Int2Coord(mode.HashE()));
            points[1] = wxPoint(j+Float2Coord(midhash/5.0*8), Float2Coord(mode.HashE()+(0.2*8)));
            dc.DrawLines(2, points, border1.x+borderoffsetx, border1.y+borderoffsety);
        }
    }

    // Draw labels
    wxFont *yardLabelFont = wxTheFontList->FindOrCreateFont((int)Float2Coord(config.Get_YardsSize()),
                            wxSWISS, wxNORMAL, wxNORMAL);
    dc.SetFont(*yardLabelFont);
    for (int i = 0; (howToDraw == ShowMode_kFieldView || howToDraw == ShowMode_kOmniView || howToDraw == ShowMode_kPrinting) && i < Coord2Int(fieldsize.x)/8+1; i++)
    {
        CC_coord fieldedge = mode.Offset() - mode.Border1();
        wxCoord textw, texth, textd;
        auto text = config.Get_yard_text(i+(-Coord2Int(fieldedge.x)+(kYardTextValues-1)*4)/8);
        dc.GetTextExtent(text, &textw, &texth, &textd);
        dc.DrawText(text, offsetx + Int2Coord(i*8) - textw/2 + border1.x+borderoffsetx, border1.y+borderoffsety - offsety - texth + ((howToDraw == ShowMode_kOmniView) ? Int2Coord(8) : 0));
        dc.DrawText(text, offsetx + Int2Coord(i*8) - textw/2 + border1.x+borderoffsetx, border1.y+borderoffsety + fieldsize.y-offsety - ((howToDraw == ShowMode_kOmniView) ? Int2Coord(8) : 0));
    }
}