Beispiel #1
0
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);
  }
Beispiel #2
0
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);
	}
}
Beispiel #3
0
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);
        }
Beispiel #4
0
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();
    //}
}
Beispiel #7
0
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;
}
Beispiel #9
0
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);
}
Beispiel #10
0
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);
  }
Beispiel #11
0
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();
    }
}
Beispiel #12
0
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);
}
Beispiel #13
0
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);
}
Beispiel #14
0
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());
*/
}
Beispiel #15
0
	int32_t numText() const {
		if (hasText()) return ond_text->tl_ntext;
		return 0;
	}