Пример #1
0
// render
void		CWindowControl_Check::render(void)
{
	CGDIPlusUtility::drawRectangleFill(getPosition(), getSize(), getFillColour());
	CGDIPlusUtility::drawRectangleBorder(getPosition(), getSize(), getLineColour());
	if(isChecked())
	{
		CGDIPlusUtility::drawLine(CVector2ui32(getPosition().m_x, getPosition().m_y + getSize().m_y), CVector2ui32(getPosition().m_x + getSize().m_x, getPosition().m_y), getLineColour());
	}
	CGDIPlusUtility::drawText(CVector2ui32(getPosition().m_x + getSize().m_x + getIconRightMargin(), getPosition().m_y), getSize(), getText(), getTextColour(), getFontSize(), isBold());
}
Пример #2
0
//===========================================
// TextEntity::updateModel
//===========================================
void TextEntity::updateModel() const {
   float32_t x = getTranslation_abs().x;
   float32_t y = getTranslation_abs().y;
   float32_t z = getZ();

   float32_t texSectionX1 = m_font->getTextureSection().getPosition().x;
   float32_t texSectionY1 = m_font->getTextureSection().getPosition().y;
   float32_t texSectionX2 = texSectionX1 + m_font->getTextureSection().getSize().x;
   float32_t texSectionY2 = texSectionY1 + m_font->getTextureSection().getSize().y;

   float32_t texW = static_cast<float32_t>(m_font->getTexture()->getWidth());
   float32_t texH = static_cast<float32_t>(m_font->getTexture()->getHeight());

   float32_t pxChW = static_cast<float32_t>(m_font->getCharWidth());    // Char dimensions in pixels
   float32_t pxChH = static_cast<float32_t>(m_font->getCharHeight());

   int rowLen = static_cast<int>(static_cast<float32_t>(texSectionX2 - texSectionX1) / static_cast<float32_t>(pxChW));

   StackAllocator::marker_t marker = gGetMemStack().getMarker();
   vvvtt_t* verts = reinterpret_cast<vvvtt_t*>(gGetMemStack().alloc(m_text.size() * 6 * sizeof(vvvtt_t)));

   int v = 0;
   for (uint_t i = 0; i < m_text.length(); ++i) {
      // Character world coords (pre-transformation)
      float32_t chX = x + static_cast<float32_t>(i) * m_size.x;
      float32_t chY = y;

      float32_t srcX = texSectionX1 + pxChW * static_cast<float32_t>((m_text[i] - ' ') % rowLen);
      float32_t srcY = texSectionY2 - pxChH * static_cast<float32_t>((m_text[i] - ' ') / rowLen + 1);

      float32_t tY1 = srcY / texH;
      float32_t tY2 = (srcY + pxChH) / texH;
      tY1 = 1.f - tY1;
      tY2 = 1.f - tY2;

      verts[v] = vvvtt_t(chX + m_size.x, chY,            z,    (srcX + pxChW) / texW, tY1);    ++v;
      verts[v] = vvvtt_t(chX + m_size.x, chY + m_size.y, z,    (srcX + pxChW) / texW, tY2);    ++v;
      verts[v] = vvvtt_t(chX,            chY,            z,    srcX / texW,           tY1);    ++v;
      verts[v] = vvvtt_t(chX + m_size.x, chY + m_size.y, z,    (srcX + pxChW) / texW, tY2);    ++v;
      verts[v] = vvvtt_t(chX,            chY + m_size.y, z,    srcX / texW,           tY2);    ++v;
      verts[v] = vvvtt_t(chX,            chY,            z,    srcX / texW,           tY1);    ++v;
   }

   m_model.eraseVertices();
   m_model.setVertices(0, verts, 6 * m_text.size());
   m_model.setColour(getFillColour());
   m_model.setLineWidth(0);
   m_model.setTextureHandle(m_font->getTexture()->getHandle());

   m_renderer.bufferModel(&m_model);

   gGetMemStack().freeToMarker(marker);
}
Пример #3
0
// render
void		CWindowControl_Radio::render(void)
{
	float32 fRadius = getSize().m_x / 2;
	CVector2ui32 vecCircleCenterPosition = getPosition() + ((uint32) fRadius); // todo - use CVector2ui32 vecCircleCenterPosition = CMathUtility::getCircleFromRectangle()
	if (isChecked())
	{
		CGDIPlusUtility::drawCircleFill(vecCircleCenterPosition, fRadius, 0x0000FFFF);
	}
	else
	{
		CGDIPlusUtility::drawCircleFill(vecCircleCenterPosition, fRadius, getFillColour());
	}
	CGDIPlusUtility::drawCircleBorder(vecCircleCenterPosition, fRadius, getLineColour());
	CGDIPlusUtility::drawText(CVector2ui32(getPosition().m_x + getSize().m_x + getIconRightMargin(), getPosition().m_y), CVector2ui32(getPosition().m_x + getSize().m_x + getIconRightMargin() + 500, getSize().m_y), getText(), getTextColour(), getFontSize(), isBold());
}
Пример #4
0
//===========================================
// TextEntity::setFillColour
//===========================================
void TextEntity::setFillColour(const Colour& colour) {
   Entity::setFillColour(colour);
   m_model.setColour(getFillColour());
}