void CachedWidget::frameEntered(float dt) { MyGUI::IntSize size = getSize(); size.width = next_pot(size.width); size.height = next_pot(size.height); bool need_recreate = !m_target; if (!need_recreate) { if (size.width > m_target->getWidth()) need_recreate = true; if (size.height > m_target->getHeight()) need_recreate = true; } if (need_recreate) { if (m_target) { m_target->resize(size); } else { m_target = static_cast<mygui::RenderManager*>(MyGUI::RenderManager::getInstancePtr())->createTarget(size); } setRenderItemTexture(m_target->getTexture()); _updateView(); } else { if (!m_replaced_layer->isOutOfDate() && !m_render_content) return; } if (m_target) { m_target->begin(); Sandbox::Transform2d tr = m_target->graphics()->GetTransform(); m_target->graphics()->SetTransform(tr.translated(-getAbsoluteLeft(),-getAbsoluteTop()).translated(m_suboffset)); doRenderToTarget(m_target); m_target->graphics()->SetTransform(tr); m_target->end(); } }
static cairo_bool_t direction (int i) { int pivot, np2; if (i < 2) return TRUE; np2 = next_pot (i + 1); if (np2 == i + 1) return TRUE; pivot = np2 / 2 - 1; return ! direction (2 * pivot - i); }