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" ); } }
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); }