void ribi::ValentineCardDecrypterMainDialog::Test() noexcept
{
    {
        static bool is_tested{false};
        if (is_tested) return;
        is_tested = true;
    }
    {
        ValentineCardSymbol(0);
        ValentineCardSymbols();
        TextCanvas();
    }
    const TestTimer test_timer(__func__,__FILE__,1.0);
    ValentineCardDecrypterMainDialog d;
    {
        const boost::shared_ptr<TextCanvas> canvas {
            d.ToSymbolsAsString(" ")
        };
        const boost::shared_ptr<TextCanvas> expected {
            new TextCanvas(
            { "   ","   ","   " },
            CanvasCoordinatSystem::screen
            )
        };
        if (*canvas != *expected)
        {
            TRACE("ERROR");
            TRACE(*canvas);
            TRACE(*expected);
            TRACE("BREAK");
        }
        assert(*canvas == *expected);
    }
    {
        const boost::shared_ptr<TextCanvas> canvas {
            d.ToSymbolsAsString("?")
        };
        const boost::shared_ptr<TextCanvas> expected {
            new TextCanvas(
            { "+-+","|x ","+  " },
            CanvasCoordinatSystem::screen
            )
        };
        assert(*canvas == *expected);
    }
}
void ribi::QtTestDrawCanvasMainDialog::Test() noexcept
{
  {
    static bool is_tested{false};
    if (is_tested) return;
    is_tested = true;
  }
  {
    ImageCanvas();
    TextCanvas();
  }
  const TestTimer test_timer(__func__,__FILE__,1.0);
  QtTestDrawCanvasMainDialog d;
  d.on_button_clear_clicked();
  {
    for (const auto r: d.m_canvas->GetGreynesses())
    {
      assert(std::find_if(std::begin(r),std::end(r),[](const double x) { return x > 0.01; } ) == std::end(r)
        && "on_button_clear_clicked must clear the canvas");
    }
  }

  for (int i=0; i!=6; ++i)
  {
    switch (i)
    {
      case 0: d.on_button_arc_clicked(); break;
      case 1: d.on_button_circle_clicked(); break;
      case 2: d.on_button_clear_clicked(); break;
      case 3: d.on_button_dot_clicked(); break;
      case 4: d.on_button_ellipse_clicked(); break;
      case 5: d.on_button_line_clicked(); break;
    }
    const auto v = d.m_canvas->GetGreynesses();
    assert(
      std::count_if(std::begin(v),std::end(v),
        [](const std::vector<double>& r)
        {
          return std::find_if(std::begin(r),std::end(r),[](const double x) { return x > 0.01; } ) == std::end(r);
        }
      ) > 0
      && "At least one row must have some greynesses"
    );
  }
}
Esempio n. 3
0
	void UINodeLink::render( UIMouse* currentMouse, const AABB2D& CanvasBounds ) const
	{
		float zoomScale = getParentCanvas()->getZoomScale();

		ALIGNMENT ali;
		float boxOffset;
		float textOffset;

		if(m_isOutLink)
		{
			ali = ALIGNMENT_RIGHT;
			boxOffset = -10.0f;
			textOffset = -getStyle()->NodeBoxBorderLength -4.0f;
		}
		else
		{
			ali = ALIGNMENT_LEFT;
			boxOffset = -8.0f;
			textOffset = getStyle()->NodeBoxBorderLength + 4.0f;
		}

		Vector2f TextCanvas( getAbsoluteCoordinates() + Vector2f(textOffset, 0.0f)), TextScreen;
		getParentCanvas()->mapPointToScreenSpace(TextCanvas, TextScreen);

		Font::DrawTextToScreen( getName(), 
			getStyle()->subTitleTextFont,
			getStyle()->subTitleColor,
			TextScreen,
			getStyle()->subTitleSize * zoomScale,
			ali);

		//due canvas to screen conversions
		Vector2f LinkBoxMinScreen, LinkBoxMaxScreen, LinkBoxMin(getAbsoluteCoordinates().x + boxOffset, getAbsoluteCoordinates().y - 5), LinkBoxMax(LinkBoxMin + getSize() );

		getParentCanvas()->mapPointToScreenSpace(LinkBoxMin, LinkBoxMinScreen);
		getParentCanvas()->mapPointToScreenSpace(LinkBoxMax, LinkBoxMaxScreen);

		Vector2f LinkBoxSizeScreen = LinkBoxMaxScreen - LinkBoxMinScreen;

		AABB2D screenSpaceBounds = getParentCanvas()->getScreenSpace();

		m_slotShader->load();
		glBindBuffer(GL_ARRAY_BUFFER, Shader::QuadBufferID);
		glDisable(GL_CULL_FACE);
		glEnable(GL_DEPTH_TEST);
		glUniform2f(m_slotShader->getUniformID(HASHED_STRING_u_position), LinkBoxMinScreen.x, LinkBoxMinScreen.y );
		glUniform2f(m_slotShader->getUniformID(HASHED_STRING_u_size), LinkBoxSizeScreen.x, LinkBoxSizeScreen.y);
		glUniform2f(m_slotShader->getUniformID(HASHED_STRING_u_screenMin), screenSpaceBounds.m_vMin.x, screenSpaceBounds.m_vMin.y  );
		glUniform2f(m_slotShader->getUniformID(HASHED_STRING_u_screenMax), screenSpaceBounds.m_vMax.x, screenSpaceBounds.m_vMax.y);
		glUniform2f(m_slotShader->getUniformID(HASHED_STRING_u_inverseScreenResolution), 1.0f / static_cast<float>(ScreenSize.x), 1.0f / static_cast<float>(ScreenSize.y) );

		float glLayer = getAbsoluteLayer() / g_MaxLayer;
		m_slotShader->SetUniformFloat(HASHED_STRING_u_layer, glLayer, 1);

		if(getParentCanvas()->getSelectedWidget() == this)
		{
			if(currentMouse->isPressed)
				glUniform4f(m_slotShader->getUniformID(HASHED_STRING_u_color), 0.0f, 1.0f, .5f, 1.0f);
			else
				glUniform4f(m_slotShader->getUniformID(HASHED_STRING_u_color), 1.0f, .0f, 1.0f, 1.0f);
		}
		else if( currentMouse->hoveringWidget == this )
		{
			glUniform4f(m_slotShader->getUniformID(HASHED_STRING_u_color), 0.0f, 1.0f, 1.0f, 1.0f);
		}
		else
		{
			glUniform4f(m_slotShader->getUniformID(HASHED_STRING_u_color), .7f, .2f, .2f, 1.0f);
		}

		m_slotShader->setAttribute(HASHED_STRING_in_position, 2, GL_FLOAT, sizeof(Vector2f), 0);

		glDrawArrays( GL_QUADS, 0, 4);

		m_slotShader->disableAttribute(HASHED_STRING_in_position);



		UIWidget::render(currentMouse, CanvasBounds);
	}