void Blittable::init() { auto as = DisplayDevice::createAttributeSet(); attribs_.reset(new Attribute<vertex_texcoord>(AccessFreqHint::DYNAMIC, AccessTypeHint::DRAW)); attribs_->addAttributeDesc(AttributeDesc(AttrType::POSITION, 2, AttrFormat::FLOAT, false, sizeof(vertex_texcoord), offsetof(vertex_texcoord, vtx))); attribs_->addAttributeDesc(AttributeDesc(AttrType::TEXTURE, 2, AttrFormat::FLOAT, false, sizeof(vertex_texcoord), offsetof(vertex_texcoord, tc))); as->addAttribute(AttributeBasePtr(attribs_)); as->setDrawMode(DrawMode::TRIANGLE_STRIP); addAttributeSet(as); }
nsresult txStylesheet::doneCompiling() { nsresult rv = NS_OK; // Collect all importframes into a single ordered list txListIterator frameIter(&mImportFrames); rv = frameIter.addAfter(mRootFrame); NS_ENSURE_SUCCESS(rv, rv); mRootFrame = nullptr; frameIter.next(); rv = addFrames(frameIter); NS_ENSURE_SUCCESS(rv, rv); // Loop through importframes in decreasing-precedence-order and process // all items frameIter.reset(); ImportFrame* frame; while ((frame = static_cast<ImportFrame*>(frameIter.next()))) { nsTArray<txStripSpaceTest*> frameStripSpaceTests; txListIterator itemIter(&frame->mToplevelItems); itemIter.resetToEnd(); txToplevelItem* item; while ((item = static_cast<txToplevelItem*>(itemIter.previous()))) { switch (item->getType()) { case txToplevelItem::attributeSet: { rv = addAttributeSet(static_cast<txAttributeSetItem*> (item)); NS_ENSURE_SUCCESS(rv, rv); break; } case txToplevelItem::dummy: case txToplevelItem::import: { break; } case txToplevelItem::output: { mOutputFormat.merge(static_cast<txOutputItem*>(item)->mFormat); break; } case txToplevelItem::stripSpace: { rv = addStripSpace(static_cast<txStripSpaceItem*>(item), frameStripSpaceTests); NS_ENSURE_SUCCESS(rv, rv); break; } case txToplevelItem::templ: { rv = addTemplate(static_cast<txTemplateItem*>(item), frame); NS_ENSURE_SUCCESS(rv, rv); break; } case txToplevelItem::variable: { rv = addGlobalVariable(static_cast<txVariableItem*> (item)); NS_ENSURE_SUCCESS(rv, rv); break; } } delete item; itemIter.remove(); //remove() moves to the previous itemIter.next(); } if (!mStripSpaceTests.AppendElements(frameStripSpaceTests)) { return NS_ERROR_OUT_OF_MEMORY; } frameStripSpaceTests.Clear(); } if (!mDecimalFormats.get(txExpandedName())) { nsAutoPtr<txDecimalFormat> format(new txDecimalFormat); NS_ENSURE_TRUE(format, NS_ERROR_OUT_OF_MEMORY); rv = mDecimalFormats.add(txExpandedName(), format); NS_ENSURE_SUCCESS(rv, rv); format.forget(); } return NS_OK; }