예제 #1
0
Value Object_GlyphSlot::DoGetProp(Environment &env, const Symbol *pSymbol,
						const SymbolSet &attrs, bool &evaluatedFlag)
{
	evaluatedFlag = true;
	if (pSymbol->IsIdentical(Gura_UserSymbol(advance))) {
		AutoPtr<Object_Vector> pObj(new Object_Vector(
								Object::Reference(this), &_glyphSlot->advance));
		return Value(pObj.release());
	} else if (pSymbol->IsIdentical(Gura_UserSymbol(format))) {
		return Value(_glyphSlot->format);
	} else if (pSymbol->IsIdentical(Gura_UserSymbol(bitmap))) {
		AutoPtr<Object_Bitmap> pObj(new Object_Bitmap(
								Object::Reference(this), &_glyphSlot->bitmap));
		return Value(pObj.release());
	} else if (pSymbol->IsIdentical(Gura_UserSymbol(bitmap_left))) {
		return Value(_glyphSlot->bitmap_left);
	} else if (pSymbol->IsIdentical(Gura_UserSymbol(bitmap_top))) {
		return Value(_glyphSlot->bitmap_top);
	} else if (pSymbol->IsIdentical(Gura_UserSymbol(outline))) {
		AutoPtr<Object_Outline> pObj(new Object_Outline(
								Object::Reference(this), &_glyphSlot->outline));
		return Value(pObj.release());
	}
	evaluatedFlag = false;
	return Value::Nil;
}
예제 #2
0
TEST(FactoriesTest, pluginDowncast)
{
    ObjSPtr pObj(new ObjA());
    ObjSPtr pObjNull;
    
    EXPECT_TRUE(ObjA::downcast(pObj));
    EXPECT_FALSE(ObjA::downcast(pObjNull));
}
예제 #3
0
bool Disk::Sample(const Point2f &sample, Interaction *it) const {
    Point2f pd = ConcentricSampleDisk(sample);
    Point3f pObj(pd.x * radius, pd.y * radius, height);
    it->n = Normalize((*ObjectToWorld)(Normal3f(0, 0, 1)));
    if (ReverseOrientation) it->n *= -1.f;
    Vector3f pObjError(0.f, 0.f, MachineEpsilon * height);
    it->p = (*ObjectToWorld)(pObj, pObjError, &it->pError);
    return true;
}
예제 #4
0
CContactManager::CContactManager(QObject *parent)
    :CBaseObject(parent)
{
    for(int i = 0; i <100; ++i)
    {
        QSharedPointer<Z_WX_USER_DATA> pObj(new Z_WX_USER_DATA);
        pObj.data()->UserName = QUuid::createUuid().toString();
        pObj.data()->NickName = QString("TEMP%1").arg(i);
        m_contackMap.insert(pObj.data()->UserName,pObj);
    }
}
예제 #5
0
bool nwxGrid::CopyToClipboard(wxGrid *pGrid,bool bLabels)
{
  wxString s(GetTabDelimited(pGrid,bLabels));
  auto_ptr<wxTextDataObject> pObj(new wxTextDataObject(s));
  wxClipboard clp;
  bool bRtn = clp.Open();
  if(bRtn)
  {
    clp.SetData(pObj.release());
    clp.Flush();
    clp.Close();
  }
  return bRtn;
}
예제 #6
0
TEST(FactoriesTest, create_downcast)
{
    ObjSPtr pObj(new Obj());
    ObjSPtr pObjA(new ObjA());
    ObjSPtr pObjB1(new ObjB1());
    
    EXPECT_FALSE(HierarchyObjFactory::downcastObjA(pObj));
    EXPECT_TRUE(HierarchyObjFactory::downcastObjA(pObjA));
    EXPECT_FALSE(HierarchyObjFactory::downcastObjA(pObjB1));
    
    EXPECT_FALSE(HierarchyObjFactory::downcastObjB1(pObj));
    EXPECT_FALSE(HierarchyObjFactory::downcastObjB1(pObjA));
    EXPECT_TRUE(HierarchyObjFactory::downcastObjB1(pObjB1));
}
예제 #7
0
TEST(FactoriesTest, hierarchyClone)
{
    {
        ObjSPtr pObj(new ObjA());
        pObj->set_o(1);
        ObjSPtr pCloneObj = HierarchyObjFactory::clone(pObj);
        EXPECT_EQ(pObj->o(), pCloneObj->o());
        pObj->set_o(pObj->o() + 1);
        EXPECT_NE(pObj->o(), pCloneObj->o());
        
        ObjASPtr pObjA = HierarchyObjFactory::downcastObjA(pObj);
        pObjA->set_a(2);
        pCloneObj = HierarchyObjFactory::clone(pObj);
        ObjASPtr pCloneObjA = HierarchyObjFactory::downcastObjA(pCloneObj);
        EXPECT_EQ(pObjA->a(), pCloneObjA->a());
        pObjA->set_a(pObjA->a() + 1);
        EXPECT_NE(pObjA->a(), pCloneObjA->a());
    }
    
    {
        ObjSPtr pObj(new ObjB1());
        pObj->set_o(1);
        ObjSPtr pCloneObj = HierarchyObjFactory::clone(pObj);
        EXPECT_EQ(pObj->o(), pCloneObj->o());
        pObj->set_o(pObj->o() + 1);
        EXPECT_NE(pObj->o(), pCloneObj->o());
        
        ObjB1SPtr pObjB1 = HierarchyObjFactory::downcastObjB1(pObj);
        pObjB1->set_b1(3);
        pCloneObj = HierarchyObjFactory::clone(pObj);
        ObjB1SPtr pCloneObjB1 = HierarchyObjFactory::downcastObjB1(pCloneObj);
        EXPECT_EQ(pObjB1->b1(), pCloneObjB1->b1());
        pObjB1->set_b1(pObjB1->b1() + 1);
        EXPECT_NE(pObjB1->b1(), pCloneObjB1->b1());
    }
}
int CScriptBind_Physics::SamplePhysEnvironment(IFunctionHandler *pH)
{
	int nEnts,i,nHits=0,objtypes = ent_static|ent_rigid|ent_sleeping_rigid|ent_sort_by_mass;
	pe_status_nparts snp; 
	pe_status_pos sp;
	IPhysicalEntity **pEnts;
	geom_world_data gwd;
	IGeometry *pSphere;
	primitives::sphere sph;
	intersection_params ip;
	geom_contact *pcontacts;
	IPhysicalWorld *pWorld = m_pSystem->GetIPhysicalWorld();
	IEntity *pEntity;
	SmartScriptTable pObj(m_pSS);
	ip.bStopAtFirstTri=ip.bNoBorder=ip.bNoAreaContacts = true;
	ip.bThreadSafe = true;

	if (!pH->GetParams(sph.center,sph.r))
		return pH->EndFunction();
	if (pH->GetParamCount()>2)
		pH->GetParam(3,objtypes);
	pSphere = pWorld->GetGeomManager()->CreatePrimitive(primitives::sphere::type,&sph);

	nEnts = pWorld->GetEntitiesInBox(sph.center-Vec3(sph.r),sph.center+Vec3(sph.r),pEnts,objtypes);
	for(i=0;i<nEnts;i++) for(sp.ipart=pEnts[i]->GetStatus(&snp)-1;sp.ipart>=0;sp.ipart--)
	{
		sp.partid=-1; pEnts[i]->GetStatus(&sp);
		gwd.offset=sp.pos; gwd.R=Matrix33(sp.q); gwd.scale=sp.scale;
		WriteLockCond lock;
		if ((sp.flagsOR & (geom_colltype0|geom_no_coll_response))==geom_colltype0 && sp.pGeomProxy->IntersectLocked(pSphere,&gwd,0,&ip,pcontacts,lock))
		{
			++nHits;
			if (pEntity = (IEntity*)pEnts[i]->GetForeignData(PHYS_FOREIGN_ID_ENTITY))
				pObj->SetAt(nHits*3-2, pEntity->GetScriptTable());
			else
				pObj->SetNullAt(nHits*3-2);
			pObj->SetAt(nHits*3-1, sp.partid);
			pObj->SetAt(nHits*3, pWorld->GetPhysicalEntityId(pEnts[i]));
			if (pEnts[i]->GetType()!=PE_ARTICULATED)
				break;
		}
	}
	pSphere->Release();

	return pH->EndFunction(*pObj);	
}
예제 #9
0
void CPDF_StreamContentParser::Handle_BeginImage() {
  FX_FILESIZE savePos = m_pSyntax->GetPos();
  CPDF_Dictionary* pDict = CPDF_Dictionary::Create();
  while (1) {
    CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
    if (type == CPDF_StreamParser::Keyword) {
      CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(),
                               m_pSyntax->GetWordSize());
      if (bsKeyword != FX_BSTRC("ID")) {
        m_pSyntax->SetPos(savePos);
        pDict->Release();
        return;
      }
    }
    if (type != CPDF_StreamParser::Name) {
      break;
    }
    CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1,
                       m_pSyntax->GetWordSize() - 1);
    nonstd::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
        m_pSyntax->ReadNextObject());
    if (!key.IsEmpty()) {
      FX_DWORD dwObjNum = pObj ? pObj->GetObjNum() : 0;
      if (dwObjNum)
        pDict->SetAtReference(key, m_pDocument, dwObjNum);
      else
        pDict->SetAt(key, pObj.release());
    }
  }
  _PDF_ReplaceAbbr(pDict);
  CPDF_Object* pCSObj = NULL;
  if (pDict->KeyExist(FX_BSTRC("ColorSpace"))) {
    pCSObj = pDict->GetElementValue(FX_BSTRC("ColorSpace"));
    if (pCSObj->IsName()) {
      CFX_ByteString name = pCSObj->GetString();
      if (name != FX_BSTRC("DeviceRGB") && name != FX_BSTRC("DeviceGray") &&
          name != FX_BSTRC("DeviceCMYK")) {
        pCSObj = FindResourceObj(FX_BSTRC("ColorSpace"), name);
        if (pCSObj && !pCSObj->GetObjNum()) {
          pCSObj = pCSObj->Clone();
          pDict->SetAt(FX_BSTRC("ColorSpace"), pCSObj);
        }
      }
    }
  }
  CPDF_Stream* pStream = m_pSyntax->ReadInlineStream(
      m_pDocument, pDict, pCSObj, m_Options.m_bDecodeInlineImage);
  while (1) {
    CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
    if (type == CPDF_StreamParser::EndOfData) {
      break;
    }
    if (type != CPDF_StreamParser::Keyword) {
      continue;
    }
    if (m_pSyntax->GetWordSize() == 2 && m_pSyntax->GetWordBuf()[0] == 'E' &&
        m_pSyntax->GetWordBuf()[1] == 'I') {
      break;
    }
  }
  if (m_Options.m_bTextOnly) {
    if (pStream) {
      pStream->Release();
    } else {
      pDict->Release();
    }
    return;
  }
  pDict->SetAtName(FX_BSTRC("Subtype"), FX_BSTRC("Image"));
  CPDF_ImageObject* pImgObj = AddImage(pStream, NULL, TRUE);
  if (!pImgObj) {
    if (pStream) {
      pStream->Release();
    } else {
      pDict->Release();
    }
  }
}