예제 #1
0
void Object::attachRenderer(const RendererPtr &pRend)
{
  if (pRend->getClientObjID()!=qlib::invalid_uid) {
    // Error !! object is already attached to another object!!
    LOG_DPRINTLN("ERROR !! Renderer already attached");
    LString msg = LString::format("Renderer already attached %s", pRend->getName().c_str());
    MB_THROW(qlib::RuntimeException, msg);
    return;
  }
MB_DPRINTLN("attachRenderer clientObjID=%d", (int)pRend->getClientObjID());
  if (!registerRendererImpl(pRend)) {
    // Error !! cannot register renderer.
    LOG_DPRINTLN("ERROR !! cannot register renderer");
    LString msg = LString::format("Cannot register renderer %s", pRend->getName().c_str());
    MB_THROW(qlib::RuntimeException, msg);
    return;
  }

  // update stylesheet settings
  pRend->reapplyStyle();
  
}
예제 #2
0
RendererPtr Object::createRenderer(const LString &type_name)
{
  RendererFactory *pRF = RendererFactory::getInstance();
  RendererPtr pRend = pRF->create(type_name);

  if (!registerRendererImpl(pRend)) {
    // error !! cannot register renderer.
    LOG_DPRINTLN("ERROR !! cannot register renderer");
    LString msg = LString::format("Cannot register renderer %s", type_name.c_str());
    MB_THROW(qlib::RuntimeException, msg);
    return RendererPtr();
  }

MB_DPRINTLN("createRenderer clientObjID=%d OK", (int)pRend->getClientObjID());
  return pRend;
}