示例#1
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, TopPannels* top_pannels)
	: UIStagePage(parent, frame)
	, ee::MultiSpritesImpl(GetStageImpl())
	, m_sym(new Symbol())
	, m_top_pannels(top_pannels)
	, m_symbols_cfg(this, top_pannels->library->GetUILibrary())
{
	SetDropTarget(new SpriteDropTarget(GetStageImpl(), top_pannels->library->GetUILibrary()));

	auto edit_op = std::make_shared<ee::ArrangeSpriteOP<ecomplex::SelectSpritesOP>>(
		this, GetStageImpl(), this, top_pannels->property, NULL, ee::ArrangeSpriteConfig(), new ArrangeSpriteImpl(this, top_pannels->property));
	auto select_op = std::dynamic_pointer_cast<ecomplex::SelectSpritesOP>(edit_op);
	select_op->SetGuides(&m_guides);
	select_op->SetOpenSymbolDialogViewlist(top_pannels->viewlist);
	SetEditOP(edit_op);

	SetCanvas(std::make_shared<StageCanvas>(this));

	int w, h;
	QueryWindowViewSizeSJ::Instance()->Query(w, h);
	m_sym->SetWidth(w);
	m_sym->SetHeight(h);

	m_toolbar = new ToolbarPanel(top_pannels->toolbar, this);
	m_toolbar_idx = top_pannels->toolbar->AddToolbar(m_toolbar);

	InitSubjects();
}
示例#2
0
ExplainLine::ExplainLine(ExplainShape *from, ExplainShape *to, double weight)
{
    SetCanvas(from->GetCanvas());
    from->AddLine(this, to);
    MakeLineControlPoints(4);

    width = (int) log(from->GetAverageCost());
    if (width > 10)
        width = 10;

    // If we got an average cost of 0, width is probably negative
    // which will look pretty darn ugly as an arrow width!
    // This may happen on Greenplum.
    if (width < 1)
        width = 1;

    wxNode *first = GetLineControlPoints()->GetFirst();
    wxNode *last  = GetLineControlPoints()->GetLast();
    *(wxRealPoint *)first->GetData() = from->GetStartPoint();
    *(wxRealPoint *)last->GetData() = to->GetEndPoint(from->GetKidno());

    wxRealPoint *p1=(wxRealPoint *)first->GetNext()->GetData();
    wxRealPoint *p2=(wxRealPoint *)last->GetPrevious()->GetData();
    *p1 = from->GetStartPoint();
    *p2 = to->GetEndPoint(from->GetKidno());
    p1->x -= (p1->x - p2->x)/3. +8;
    p2->x += (p1->x - p2->x)/3. -8;

    Initialise();
}
void ribi::maziak::QtMaziakCanvas::OnTimerPressKey()
{
  m_dialog->OnTimerPressKeys();
  m_dialog->AnimateFighting();
  m_dialog->RespondToCurrentSquare();
  SetCanvas(m_dialog->ToTextCanvas(m_view_width,m_view_height));
}
示例#4
0
void Task::InitLayout()
{
	auto stage = new ee3::StagePanel(m_parent, m_parent, nullptr);
	auto canvas = std::make_shared<eterrain3d::StageCanvas>(stage);
	stage->SetCanvas(canvas);
	stage->SetEditOP(std::make_shared<ee3::CamControlOP>(
		stage, stage->GetStageImpl(), canvas->GetCamera(), canvas->GetViewport(), stage->GetSubjectMgr()));
}
示例#5
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, 
					   ee::LibraryPanel* library)
	: ee::EditPanel(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl(), library)
	, ee::ShapesPanelImpl(std::make_shared<SymbolContainer>(m_sym = std::make_shared<Symbol>()))
{
	SetEditOP(std::make_shared<ee::ZoomViewOP>(this, GetStageImpl(), true));
	SetCanvas(std::make_shared<StageCanvas>(this));
}
示例#6
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, 
					   wxGLContext* glctx, const ee::SprPtr& edited, 
					   const ee::MultiSpritesImpl* bg_sprites, 
					   ee::LibraryPanel* library)
	: ee::EditPanel(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl(), library)
	, ee::ShapesPanelImpl(std::make_shared<SymbolContainer>(std::dynamic_pointer_cast<Symbol>(edited->GetSymbol())))
{
	SetEditOP(std::make_shared<eshape::EditPolylineOP<eshape::DrawPolygonOP, ee::SelectShapesOP>>(
		this, GetStageImpl(), this, nullptr, new ee::OneFloatValueStatic(5), nullptr));
	SetCanvas(std::make_shared<StageCanvas>(this, glctx, edited, bg_sprites));

	m_sym = std::dynamic_pointer_cast<Symbol>(edited->GetSymbol());
}
示例#7
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, 
					   ee::PropertySettingPanel* property,
					   ee::LibraryPanel* library)
	: ee::EditPanel(parent, frame)
	, ee::MultiSpritesImpl(GetStageImpl())
	, ee::MultiShapesImpl()
	, m_library(library)
	, m_grids(NULL)
	, m_sindex(NULL)
	, m_pathfinding(NULL)
{
	SetDropTarget(new ee::SpriteDropTarget(GetStageImpl(), library));

	if (OPEN_GRIDS) {
		m_grids = new Grids;
		SettingCfg* cfg = SettingCfg::Instance();
		m_grids->Build(cfg->m_map_width, cfg->m_map_height);
	}

	if (TEST_QUADTREE) {
		m_sindex = new Quadtree(sm::rect(sm::vec2(0, 0), MAP_EDGE_LEN, MAP_EDGE_LEN));
	}
	if (PATHFINDING) {
		//	m_pathfinding = new preview::PathGrid(sm::rect(MAP_EDGE_LEN, MAP_EDGE_LEN), 256, 256);
		//m_pathfinding = new preview::PathNavMesh(sm::rect(MAP_EDGE_LEN, MAP_EDGE_LEN));
		m_pathfinding = new preview::PathVisibleSimple(sm::rect(sm::vec2(0, 0), MAP_EDGE_LEN, MAP_EDGE_LEN));
	}

	ArrangeSpriteImpl* arrange_impl = new ArrangeSpriteImpl(library, property, this, &m_chara_dirs);
	m_arrange_op = std::make_shared<ee::ArrangeSpriteOP<SelectSpritesOP>>(
		this, GetStageImpl(), this, property, NULL, ee::ArrangeSpriteConfig(), arrange_impl);

	SetEditOP(m_arrange_op);
	SetCanvas(std::make_shared<StageCanvas>(this));

	ee::MultiSpritesImpl::RegistSubject(ee::ReorderSpriteSJ::Instance());
	ee::MultiSpritesImpl::RegistSubject(ee::ReorderSpriteMostSJ::Instance());
	ee::MultiSpritesImpl::RegistSubject(ee::InsertSpriteSJ::Instance());
	ee::MultiSpritesImpl::RegistSubject(ee::RemoveSpriteSJ::Instance());
	ee::MultiSpritesImpl::RegistSubject(ee::ClearSpriteSJ::Instance());

	ee::MultiShapesImpl::RegistSubject(ee::RemoveShapeSJ::Instance());
	ee::MultiShapesImpl::RegistSubject(ee::InsertShapeSJ::Instance());
	ee::MultiShapesImpl::RegistSubject(ee::ClearShapeSJ::Instance());
}
示例#8
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame,
					   ee::LibraryPanel* library)
	: ee::EditPanel(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl(), library)
	, m_library(library)
	, m_is_flat(false)
	, m_building_cfg(this, library)
	, m_checkboard(this)
{
	SetCanvas(std::make_shared<StageCanvas>(this));
	m_row = m_col = m_edge = 0;

	m_base_level = 1;

	RegistSubject(ee::InsertSpriteSJ::Instance());
	RegistSubject(ee::RemoveSpriteSJ::Instance());
	RegistSubject(ee::ClearSpriteSJ::Instance());
}
示例#9
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, 
					   ee::LibraryPanel* library, ee::PropertySettingPanel* property)
	: ee::EditPanel(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl(), library)
{
	SetCanvas(std::make_shared<StageCanvas>(this));

	ee::OneFloatValue* capture_val = new ee::OneFloatValueStatic(10);
	SetEditOP(std::make_shared<eshape::EditPolylineOP<eshape::DrawPolygonOP, ee::SelectShapesOP>>(
		this, GetStageImpl(), this, property, capture_val, NULL));

	const int HW = 512;
	const int HH = 512;
	m_region.xmin = -HW;
	m_region.xmax =  HW;
	m_region.ymin = -HH;
	m_region.ymax =  HH;

	m_mesh = new Mesh(m_region);
}
示例#10
0
 void Layer::UpdateLayerCanvas()
 {
     // If we have no delegate, that means that whoever constructed the Layer is
     // setting its canvas directly with SetCanvas().
     if(!delegate_ || layer_updated_externally_)
     {
         return;
     }
     gfx::Rect local_bounds = gfx::Rect(gfx::Point(), bounds_.size());
     gfx::Rect draw_rect = invalid_rect_.Intersect(local_bounds);
     if(draw_rect.IsEmpty())
     {
         invalid_rect_ = gfx::Rect();
         return;
     }
     scoped_ptr<gfx::Canvas> canvas(gfx::Canvas::CreateCanvas(
         draw_rect.width(), draw_rect.height(), false));
     canvas->TranslateInt(-draw_rect.x(), -draw_rect.y());
     delegate_->OnPaintLayer(canvas.get());
     SetCanvas(*canvas->AsCanvasSkia(), draw_rect.origin());
 }
示例#11
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame, 
					   wxGLContext* glctx, TopPannels* top_pannels)
	: UIStagePage(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl(), top_pannels->library->GetRawLibrary())
	, m_top_pannels(top_pannels)
{
	SetEditOP(std::make_shared<EditClipboxOP>(this, top_pannels->property));
	SetCanvas(std::make_shared<StageCanvas>(this, glctx));

	ee::LibraryPanel* library = top_pannels->library->GetRawLibrary();

	top_pannels->property->SetEditPanel(GetStageImpl());

	m_toolbar = new ToolbarPanel(top_pannels->toolbar);
	m_toolbar_idx = top_pannels->toolbar->AddToolbar(m_toolbar);

	m_clipbox.xmin = m_clipbox.ymin = -200;
	m_clipbox.xmax = m_clipbox.ymax =  200;

	ee::MODULE_STAGE.impl = this;
}
示例#12
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame,
					   ee::PropertySettingPanel* property,
					   LibraryPanel* library)
	: EditPanel(parent, frame)
	, ee::SpritesPanelImpl(GetStageImpl())
	, m_sym()
	, m_library(library)
{
	m_sym = std::make_shared<Symbol>();
	SetContainer(std::make_shared<SymbolContainer>(m_sym));

	SetEditOP(std::make_shared<ee::ArrangeSpriteOP<SelectSpritesOP>>(
		this, GetStageImpl(), this, property, nullptr, ee::ArrangeSpriteConfig(), new ArrangeSpriteImpl(this, property)));

	SetCanvas(std::make_shared<StageCanvas>(this, library));

	SetDropTarget(new ee::StageDropTarget(this, GetStageImpl(), library));

	ee::MODULE_STAGE.impl = this;

	RegistSubject(ee::ClearSpriteSJ::Instance());
}
示例#13
0
StagePanel::StagePanel(wxWindow* parent, wxTopLevelWindow* frame,
					   const std::shared_ptr<Symbol>& sym,
					   ee::PropertySettingPanel* property,
					   LibraryPanel* library,
					   wxGLContext* glctx,
					   ee::CrossGuides* guides)
	: EditPanel(parent, frame)
	, m_sym(sym)
	, ee::SpritesPanelImpl(GetStageImpl())
	, m_library(library)
{
	SetContainer(std::make_shared<SymbolContainer>(m_sym));

	auto editop = std::make_shared<ee::ArrangeSpriteOP<SelectSpritesOP>>(
		this, GetStageImpl(), this, property, nullptr, ee::ArrangeSpriteConfig(), new ArrangeSpriteImpl(this, property));
	std::dynamic_pointer_cast<SelectSpritesOP>(editop)->SetGuides(guides);
	SetEditOP(editop);

	SetCanvas(std::make_shared<StageCanvas>(this, library, glctx));

	SetDropTarget(new ee::StageDropTarget(this, GetStageImpl(), library));

	RegistSubject(ee::ClearSpriteSJ::Instance());
}
void ribi::maziak::QtMaziakCanvas::OnTimerStartShowingSolution()
{
  m_timer_show_solution->start();
  SetCanvas(m_dialog->ToTextCanvas(m_view_width,m_view_height));
}
void ribi::maziak::QtMaziakCanvas::OnTimerEnemy()
{
  m_dialog->AnimateFighting();
  m_dialog->AnimateEnemiesAndPrisoners(m_view_width,m_view_height);
  SetCanvas(m_dialog->ToTextCanvas(m_view_width,m_view_height));
}
void ribi::QtDasWahreSchlagerfestCanvas::OnChanged()
{
  SetCanvas(m_widget->ToTextCanvas());
}