/////////////////////////////////// // nuiPainter implementation: nuiPainter::nuiPainter(const nuiRect& rRect, nglContext* pContext) { ResetStats(); mWidth = ToNearest(rRect.GetWidth()); mHeight = ToNearest(rRect.GetHeight()); mMatrixStack.push(nuiMatrix()); mProjectionMatrixStack.push(nuiMatrix()); mProjectionViewportStack.push(nuiRect()); mDummyMode = false; mpSurface = NULL; mAngle=0; mEnableDrawArray = true; }
void render_handler_nui::apply_matrix(const gameswf::matrix& m) // multiply current matrix with opengl matrix { float mat[16]; memset(&mat[0], 0, sizeof(mat)); mat[0] = m.m_[0][0]; mat[1] = m.m_[1][0]; mat[4] = m.m_[0][1]; mat[5] = m.m_[1][1]; mat[10] = 1; mat[12] = m.m_[0][2]; mat[13] = m.m_[1][2]; mat[15] = 1; //glMultMatrixf(mat); mpContext->MultMatrix(nuiMatrix(mat)); }
void nuiPainter::StartRendering() { mpClippingStack = std::stack<nuiClipper>(); uint32 w = mWidth, h = mHeight; mClip.Set(0, 0, w, h); while (!mMatrixStack.empty()) mMatrixStack.pop(); mMatrixStack.push(nuiMatrix()); while (!mProjectionMatrixStack.empty()) { mProjectionMatrixStack.pop(); mProjectionViewportStack.pop(); } nuiMatrix m; m.Translate(-1.0f, 1.0f, 0.0f); m.Scale(2.0f/(float)mWidth, -2.0f/(float)mHeight, 1.0f); mProjectionMatrixStack.push(m); mProjectionViewportStack.push(nuiRect(0, 0, mWidth, mHeight)); }
void nuiMetaPainter::Reset(nuiPainter const * pFrom) { mOperationIndices.clear(); mNbOperations = 0; mLastSize = -1; mOperationPos = 0; mLastStateValid = false; mNbDrawChild = 0; mNbDrawArray = 0; mNbClearColor = 0; mRenderOperations = 0; mBatches = 0; mVertices = 0; mOperations.clear(); mRenderStates.clear(); for (uint32 i = 0; i < mRenderArrays.size(); i++) mRenderArrays[i]->Release(); mRenderArrays.clear(); mpClippingStack = std::stack<nuiClipper>(); mMatrixStack = std::stack<nglMatrixf>(); mMatrixStack.push(nuiMatrix()); if (pFrom) { mState = pFrom->GetState(); pFrom->GetSize(mWidth, mHeight); bool clip = pFrom->GetClipRect(mClip, false); nuiMatrix m(pFrom->GetMatrix()); mClip.Move(-m.Elt.M14, -m.Elt.M24); mClip.mEnabled = clip; } }