//! Map view.

use super::qobj::*;
use crate::cc;

impl IMapViewTrait for IMapView
{
	/// Returns a new `IMapView` instance.
	fn new(emit: IMapViewEmitter) -> Self
	{
		if cfg!(debug_assertions) {
			eprintln!("new IMapView");
		}

		Self{emit}
	}

	/// Returns the emitter of `self`.
	fn emit(&mut self) -> &mut IMapViewEmitter {&mut self.emit}

	fn draw_view(&self, paint: *mut cc::QPainter)
	{
		cc::paint_fg(paint, 0, 255, 0, 255);
		cc::paint_arc(paint, 30, 30, 100, 100, 77, 440);
		cc::paint_chord(paint, 50, 50, 100, 100, 77, 440);
		cc::paint_ellipse(paint, 80, 80, 30, 30);
		cc::paint_image(paint, 200, 10, ":/tycho/images/tycho1.png");
		cc::paint_line(paint, 100, 60, 140, 100);
		cc::paint_point(paint, 20, 20);
		cc::paint_polygon(paint, &[cc::Int2{x: 250, y: 170},
		                           cc::Int2{x: 270, y: 190},
		                           cc::Int2{x: 230, y: 190}]);
		cc::paint_rect(paint, 150, 170, 20, 20);
		cc::paint_squircle(paint, 90, 170, 30, 30, 7, 9);
		cc::paint_text(paint, 50, 50, "hello, world");
	}
}

impl Drop for IMapView
{
	fn drop(&mut self)
	{
		if cfg!(debug_assertions) {
			eprintln!("drop IMapView");
		}
	}
}

pub struct IMapView {
	emit: IMapViewEmitter,
}

// EOF
