void Window::onPreferredSize(PreferredSizeEvent& ev) { Widget* manager = getManager(); if (m_isDesktop) { Rect cpos = manager->getChildrenBounds(); ev.setPreferredSize(cpos.w, cpos.h); } else { Size maxSize(0, 0); Size reqSize; UI_FOREACH_WIDGET(getChildren(), it) { Widget* child = *it; if (!child->isDecorative()) { reqSize = child->getPreferredSize(); maxSize.w = MAX(maxSize.w, reqSize.w); maxSize.h = MAX(maxSize.h, reqSize.h); } } if (hasText()) maxSize.w = MAX(maxSize.w, jwidget_get_text_length(this)); ev.setPreferredSize(this->border_width.l + maxSize.w + this->border_width.r, this->border_width.t + maxSize.h + this->border_width.b); }
void Label::render() { Renderer* r; if (m_rectBgType == COLORED) { r = &Control::r_coloredRect; r->enableShader(); r->setData(R_COLORED_RECT::u_color, m_rectColor); updatePipeline(r); m_quadModel.render(); r->disableShader(); } else { r = &Control::r_texturedRect; r->enableShader(); r->setData(R_TEXTURED_RECT::u_texture, 0, GL_TEXTURE_2D, m_rectTexture); updatePipeline(r); m_quadModel.render(); r->disableShader(); } if (hasText()) { Control::m_textEngine.render(m_text, m_textStartingXs[0], m_textStartingYs[0], m_font.size, m_font.color, m_lineBreakInfos[0].lineBreaks); } }
void PopupWindow::onPreferredSize(PreferredSizeEvent& ev) { ScreenGraphics g; g.setFont(getFont()); Size resultSize(0, 0); if (hasText()) resultSize = g.fitString(getText(), (getClientBounds() - getBorder()).w, getAlign()); resultSize.w += border_width.l + border_width.r; resultSize.h += border_width.t + border_width.b; if (!getChildren().empty()) { Size maxSize(0, 0); Size reqSize; UI_FOREACH_WIDGET(getChildren(), it) { Widget* child = *it; reqSize = child->getPreferredSize(); maxSize.w = MAX(maxSize.w, reqSize.w); maxSize.h = MAX(maxSize.h, reqSize.h); }
String DataObjectGtk::urlLabel() const { if (hasText()) return text(); if (hasURL()) return url(); return String(); }
void FlatTextarea::updatePlaceholder() { bool vis = !hasText(); if (vis == _phVisible) return; a_phLeft.start(vis ? 0 : _st.phShift); a_phAlpha.start(vis ? 1 : 0); anim::start(this); _phVisible = vis; }
/** * @brief haven't done yet */ void MainWindow::dragEnterEvent(QDragEnterEvent *event) { qDebug()<<"drag enter event"; auto data = event->mimeData(); qDebug()<<"has image : "<<data->hasImage(); qDebug()<<"has text : "<<data->hasText(); qDebug()<<"has urls : "<<data->hasUrls(); //if (event->mimeData()->hasImage()){ event->acceptProposedAction(); //} }
void Label::onPreferredSize(PreferredSizeEvent& ev) { gfx::Size sz(0, 0); if (hasText()) { // Labels are not UIString sz.w = getFont()->textLength(getText().c_str()); sz.h = getTextHeight(); } sz.w += border().width(); sz.h += border().height(); ev.setPreferredSize(sz); }
bool CodeCompletionsExtractor::peek(const Utf8String &name) { const uint cxCodeCompleteResultCount = cxCodeCompleteResults->NumResults; uint peekCxCodeCompleteResultIndex = cxCodeCompleteResultIndex + 1; while (peekCxCodeCompleteResultIndex < cxCodeCompleteResultCount) { if (hasText(name, cxCodeCompleteResults->Results[peekCxCodeCompleteResultIndex].CompletionString)) return true; ++peekCxCodeCompleteResultIndex; } return false; }
void Label::onSizeHint(SizeHintEvent& ev) { gfx::Size sz(0, 0); if (hasText()) { // Labels are not UIString sz.w = font()->textLength(text().c_str()); sz.h = textHeight(); } sz.w += border().width(); sz.h += border().height(); ev.setSizeHint(sz); }
void ListItem::onPreferredSize(PreferredSizeEvent& ev) { int w = 0, h = 0; Size maxSize; if (hasText()) maxSize = getTextSize(); else maxSize.w = maxSize.h = 0; UI_FOREACH_WIDGET(getChildren(), it) { Size reqSize = (*it)->getPreferredSize(); maxSize.w = MAX(maxSize.w, reqSize.w); maxSize.h = MAX(maxSize.h, reqSize.h); }
void Surface::prepareGL(bool layerTilesDisabled, bool updateWithBlit) { bool tilesDisabled = layerTilesDisabled && !isBase(); if (!m_surfaceBacking) { ALOGV("prepareGL on Surf %p, no SurfBack, needsTexture? %d", this, m_surfaceBacking, needsTexture()); if (needsTexture() || (isBase() && layerTilesDisabled)) m_surfaceBacking = new SurfaceBacking(isBase()); else return; } if (tilesDisabled) { m_surfaceBacking->discardTextures(); } else { bool allowZoom = hasText(); // only allow for scale > 1 if painting vectors IntRect prepareArea = computePrepareArea(); IntRect fullArea = fullContentArea(); ALOGV("prepareGL on Surf %p with SurfBack %p, %d layers, first layer %s (%d) " "prepareArea(%d, %d - %d x %d) fullArea(%d, %d - %d x %d)", this, m_surfaceBacking, m_layers.size(), getFirstLayer()->subclassName().ascii().data(), getFirstLayer()->uniqueId(), prepareArea.x(), prepareArea.y(), prepareArea.width(), prepareArea.height(), fullArea.x(), fullArea.y(), fullArea.width(), fullArea.height()); m_surfaceBacking->prepareGL(getFirstLayer()->state(), allowZoom, prepareArea, fullArea, this, useAggressiveRendering(), updateWithBlit); } for (size_t i = 0; i < m_layers.size(); i++) { LayerContent* content = m_layers[i]->content(); if (content) content->clearPrerenders(); } }
void Window::onHitTest(HitTestEvent& ev) { HitTest ht = HitTestNowhere; if (!m_isMoveable) { ev.setHit(ht); return; } int x = ev.getPoint().x; int y = ev.getPoint().y; gfx::Rect pos = getBounds(); gfx::Rect cpos = getChildrenBounds(); // Move if ((hasText()) && (((x >= cpos.x) && (x < cpos.x2()) && (y >= pos.y+this->border_width.b) && (y < cpos.y)))) { ht = HitTestCaption; } // Resize else if (m_isSizeable) { if ((x >= pos.x) && (x < cpos.x)) { if ((y >= pos.y) && (y < cpos.y)) ht = HitTestBorderNW; else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) ht = HitTestBorderSW; else ht = HitTestBorderW; } else if ((y >= pos.y) && (y < cpos.y)) { if ((x >= pos.x) && (x < cpos.x)) ht = HitTestBorderNW; else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) ht = HitTestBorderNE; else ht = HitTestBorderN; } else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) { if ((y >= pos.y) && (y < cpos.y)) ht = HitTestBorderNE; else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) ht = HitTestBorderSE; else ht = HitTestBorderE; } else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) { if ((x >= pos.x) && (x < cpos.x)) ht = HitTestBorderSW; else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) ht = HitTestBorderSE; else ht = HitTestBorderS; } } else { // Client area ht = HitTestClient; } ev.setHit(ht); }
void Window::onHitTest(HitTestEvent& ev) { HitTest ht = HitTestNowhere; // If this window is not movable or we are not completely visible. if (!m_isMoveable || // TODO check why this is necessary, there should be a bug in // the manager where we are receiving mouse events and are not // the top most window. getManager()->pick(ev.getPoint()) != this) { ev.setHit(ht); return; } int x = ev.getPoint().x; int y = ev.getPoint().y; gfx::Rect pos = getBounds(); gfx::Rect cpos = getChildrenBounds(); // Move if ((hasText()) && (((x >= cpos.x) && (x < cpos.x2()) && (y >= pos.y+this->border_width.b) && (y < cpos.y)))) { ht = HitTestCaption; } // Resize else if (m_isSizeable) { if ((x >= pos.x) && (x < cpos.x)) { if ((y >= pos.y) && (y < cpos.y)) ht = HitTestBorderNW; else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) ht = HitTestBorderSW; else ht = HitTestBorderW; } else if ((y >= pos.y) && (y < cpos.y)) { if ((x >= pos.x) && (x < cpos.x)) ht = HitTestBorderNW; else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) ht = HitTestBorderNE; else ht = HitTestBorderN; } else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) { if ((y >= pos.y) && (y < cpos.y)) ht = HitTestBorderNE; else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) ht = HitTestBorderSE; else ht = HitTestBorderE; } else if ((y > cpos.y2()-1) && (y <= pos.y2()-1)) { if ((x >= pos.x) && (x < cpos.x)) ht = HitTestBorderSW; else if ((x > cpos.x2()-1) && (x <= pos.x2()-1)) ht = HitTestBorderSE; else ht = HitTestBorderS; } } else { // Client area ht = HitTestClient; } ev.setHit(ht); }
void Button::render() { #if 1 Control::r_coloredRect.enableShader(); /* if(m_isInside && !m_down) Control::r_coloredRectRenderer.setData(RENDER_PASS1, "u_color", m_highlightColor); else if (m_down) Control::r_coloredRectRenderer.setData(RENDER_PASS1, "u_color", m_pressedColor); else Control::r_coloredRectRenderer.setData(RENDER_PASS1, "u_color", m_rectColor); */ if(m_isInside && !m_down) Control::r_coloredRect.setData(R_COLORED_RECT::u_color, m_highlightColor); else if (m_down) Control::r_coloredRect.setData(R_COLORED_RECT::u_color, m_pressedColor); else Control::r_coloredRect.setData(R_COLORED_RECT::u_color, m_rectColor); updatePipeline(&Control::r_coloredRect); m_quadModel.render(); // Control::m_textEngine.render(m_text, m_textStartingXs[0], m_textStartingYs[0], m_font.size, m_font.color); if (hasText()) { Control::m_textEngine.render(m_text, m_textStartingXs[0], m_textStartingYs[0], m_font.size, m_font.color, m_lineBreakInfos[0].lineBreaks); } Control::r_coloredRect.disableShader(); #endif // cout << "offset_x " << offset_x << endl; // cout << "offset_y " << offset_y << endl; // Control::m_textEngine.render(m_pipeline, offset_x, offset_y, m_text.c_str()); /* Renderer->enableShader(RenderPassID); if(m_isInside && !m_down) { p.pushMatrix(); p.scale(m_rect.w, m_rect.y, 0); p.translate(m_rect.x, m_rect.y, 0); Renderer->setUniLocs(p, RenderPassID); m_quadModel.render(); p.popMatrix(); float offset_x = 0.025 * m_rect.w; float offset_y = 0.05 * m_rect.h; m_pipeline.pushMatrix(); m_pipeline.translate( glm::vec3(m_rect.x + offset_x, m_rect.y + offset_y, 0) ); m_pipeline.scale(0.95,0.9,1.0); Control::customMatrixRender(m_pipeline, Renderer, RENDER_PASS1); m_pipeline.popMatrix(); } else if (m_down) { p_model = &m_pressed; Control::render(m_pipeline, Renderer, RENDER_PASS1, p_model); } else Control::render(m_pipeline, Renderer, RENDER_PASS1); int offset_x = computeTextStartingX(m_text); int offset_y = computeTextStartingY(); Renderer->disableShader(RenderPassID); // cout << "offset_x " << offset_x << endl; // cout << "offset_y " << offset_y << endl; // Control::m_textEngine.render(m_pipeline, offset_x, offset_y, m_text.c_str()); */ }
int32_t numText() const { if (hasText()) return ond_text->tl_ntext; return 0; }