Example #1
0
//------------------------------------------------------------------------------
void QLabel::init()
{
	// This needs to be called after the LUA variables have been submitted to
    // the object.  TODO we want to support TTF rendering, but not through the
    // CQabelTTF class as the implimentation they chose is teh suck!
	QAssert(font != NULL, "label font is null");

    // Create and retain the node
    CCLabelNode *node = new CCLabelNode(this);
    m_CCNode = node;
    m_CCNode->retain();

    // Set the width to the box width if one is specified
    float width = GetCalculatedWidth();
    float text_width = width - textBorderLeft - textBorderRight;
    float height = GetCalculatedHeight();

    // Get the alignment information
    cocos2d::CCTextAlignment halign_val;
    cocos2d::CCVerticalTextAlignment valign_val;
    GetCurrentAlignment( &halign_val, &valign_val);

    // Create the label and add it to the node (node holds the reference)
    m_CCFontNode = CCLabelBMFont::create( text.c_str(),
                                          font->get_fileName().c_str(),
                                          text_width,
                                          halign_val);
    m_CCNode->addChild(m_CCFontNode);

    // Calculate the size of the text if we aren't rendering into a box
    CalculateSize();

    // Now set the anchor and position of the CQabel
    SetAlignmentAnchors( halign_val, valign_val);

    m_CCNode->setPosition( x, y);
	m_CCNode->setAnchorPoint(ccp(xAnchor, yAnchor));

    m_CachedWidth = width;
    m_CachedHeight = height;
    m_CachedHAlignment = hAlignment;
	m_CachedVAlignment = vAlignment;

    m_CachedTextBorderTop = textBorderTop;
    m_CachedTextBorderBottom = textBorderBottom;
    m_CachedTextBorderLeft = textBorderLeft;
    m_CachedTextBorderRight = textBorderRight;

    m_CachedTextXScale = textXScale;
    m_CachedTextYScale = textYScale;
}
//------------------------------------------------------------------------------
void QNodeProps::_addShapePoint(float x, float y)
{
    QAssert(m_NumShapePoints < MAX_SHAPE_POINTS, "Too many points submitted to shape");

    // Shape points are always defined relative to an anchor point of (0, 0)
    // However, we permit the node to have a different anchor point, provided it remains the same throughout all point adding,
    // and thereafter.
    if ((!m_Node->w) || (!m_Node->h))
    {
        // sync() the node, to ensure fields up to date, e.g. w/h for sprites
        m_Node->sync();
    }

    float xOfs = m_Node->w * m_Node->xScale * m_Node->xAnchor;
    float yOfs = m_Node->h * m_Node->yScale * m_Node->yAnchor;
    m_ShapePoints[m_NumShapePoints].x = g_Sim->scaleD2P(x - xOfs);
    m_ShapePoints[m_NumShapePoints].y = g_Sim->scaleD2P(y - yOfs);
    m_NumShapePoints++;
}
//------------------------------------------------------------------------------
void QNodeProps::set_isSensor(bool v)
{
	QAssert(false, ("Trying to set read-only property isSensor"));
}