当前位置: 首页>>代码示例>>C++>>正文


C++ CArray::Append方法代码示例

本文整理汇总了C++中CArray::Append方法的典型用法代码示例。如果您正苦于以下问题:C++ CArray::Append方法的具体用法?C++ CArray::Append怎么用?C++ CArray::Append使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CArray的用法示例。


在下文中一共展示了CArray::Append方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: BuildCollapseBuffer

void CMesh::BuildCollapseBuffer(bool bExplicitVertexCount, UINT uiMaxCollapses, CArray<uint8_t> const &arrUsedVertices, CProgressiveGeometry *pProgGeom)
{
  int iCollapse, iPos;
  CArray<UINT> arrCollapses;
  CArray<uint16_t> arrTriIndices;

  UINT uiSrcMapFlags = (pProgGeom->m_pIB->m_uiFlags & CResource::RF_KEEPSYSTEMCOPY) ? CResource::RMF_SYSTEM_ONLY : 0;
  uint8_t *pSrcIndices = pProgGeom->m_pIB->Map(0, uiSrcMapFlags);
  
  arrTriIndices.SetCount(pProgGeom->GetIBIndexCount());
  memcpy(arrTriIndices.m_pArray, pSrcIndices, arrTriIndices.m_iCount * sizeof(uint16_t));
  
  pProgGeom->m_pIB->Unmap();

  CIndexChain kChain;
  kChain.Init(arrTriIndices.m_pArray, arrTriIndices.m_iCount, pProgGeom->GetVBVertexCount(), bExplicitVertexCount);

  for (iCollapse = 0; iCollapse < (int) Util::Min<UINT>(m_arrCollapses.m_iCount, uiMaxCollapses); iCollapse++) {
    if (m_arrCollapses[iCollapse].m_iCollapseToIndex < 0)
      break;
    int iVertIndex, iCollapseToIndex, iBaseIndex;
    iVertIndex = m_arrReverseReorder[m_arrCollapses[iCollapse].m_iVertexIndex];
    if (!arrUsedVertices[iVertIndex])
      continue;
    iCollapseToIndex = m_arrReverseReorder[m_arrCollapses[iCollapse].m_iCollapseToIndex];
    ASSERT(arrUsedVertices[iCollapseToIndex]);
    iBaseIndex = arrCollapses.m_iCount;
    arrCollapses.Append(iVertIndex);
    arrCollapses.Append(iCollapseToIndex);

    if (bExplicitVertexCount) // Reserve space for maximum vertex index
      arrCollapses.SetCount(arrCollapses.m_iCount + 1);

    iPos = kChain.m_arrVertexChain[iVertIndex];
    ASSERT(iPos >= 0);
    while (iPos >= 0 && iPos < arrTriIndices.m_iCount) {
      arrCollapses.Append(iPos);
      ASSERT(arrTriIndices[iPos] == iVertIndex);
      arrTriIndices[iPos] = iCollapseToIndex;
      ASSERT(iPos < kChain.m_arrChains[iPos] || kChain.m_arrChains[iPos] < 0);
      iPos = kChain.m_arrChains[iPos];
    }

    // Shrink index buffer 
    while (arrTriIndices.m_iCount && CGeometry::IsTriangleDegenerate(&arrTriIndices[arrTriIndices.m_iCount - 3]))
      arrTriIndices.SetCount(arrTriIndices.m_iCount - 3);

    kChain.MergeChains(iVertIndex, iCollapseToIndex, arrTriIndices.m_iCount);

    if (bExplicitVertexCount) 
      arrCollapses[iBaseIndex + 2] = kChain.GetLastActiveVertex();

    arrCollapses.Append(CProgressiveGeometry::INVALID_INDEX);
  }

  pProgGeom->SetCollapses(arrCollapses.m_iCount, arrCollapses.m_pArray, bExplicitVertexCount);
}
开发者ID:aaalexandrov,项目名称:Alex,代码行数:57,代码来源:Mesh.cpp

示例2: Init

HRESULT CFeedback::Init(FeedbackTypeId idType, bool bIsDisabled, bool bIsInherited, CString &csText,
                        CArray<DrawSdk::DrawObject *, DrawSdk::DrawObject *> *pObjects, 
                        CInteractionAreaEx *pOkButton)
{
   HRESULT hr = Init(idType, bIsDisabled, bIsInherited);

   if (SUCCEEDED(hr))
   {
      m_csText = csText;
      
      if (!bIsDisabled && !bIsInherited)
      {
         // Note: more or less any combination of parameters is allowed here.
         // For example: bIsDisabled == true and pObjects->GetSize() > 0 is possible.
         // But this case here is an error.
      
         if (pObjects == NULL) // TODO require? || pOkButton == NULL)
            return E_POINTER;
      }
      
      //if (bIsInherited && pObjects != NULL && pObjects->GetSize() > 0)
      //   _ASSERT(false);

      if (pObjects != NULL)
      {
         for (int i=0; i<pObjects->GetSize(); ++i)
            m_aObjects.Add(pObjects->GetAt(i)->Copy());
      }
      
      if (pOkButton != NULL)
         m_pOkButton = pOkButton;


      // calculate bounding box from objects
     
      CArray<DrawSdk::DrawObject *, DrawSdk::DrawObject *> aObjectsDummy;
      aObjectsDummy.Append(m_aObjects);

      if (pOkButton != NULL)
         aObjectsDummy.Append(*(pOkButton->GetNormalObjects()));
      
      CalculateDimensions(&aObjectsDummy, &m_rcDimensions);
      // TODO (inconsistency): no "+2" here (see CMoveableObjects); which is better?

      CreateNameAndType();

      m_bHiddenDuringEdit = true;
      m_bHiddenDuringPreview = true;
   }

   return hr;
}
开发者ID:identity0815,项目名称:os45,代码行数:52,代码来源:Feedback.cpp

示例3: GetWindowFrames

void InformApp::GetWindowFrames(CArray<CFrameWnd*>& frames)
{
  if (m_pMainWnd)
  {
    if (m_pMainWnd->IsKindOf(RUNTIME_CLASS(CFrameWnd)))
      frames.Add((CFrameWnd*)m_pMainWnd);
  }
  frames.Append(m_frames);
}
开发者ID:wyrover,项目名称:Windows-Inform7,代码行数:9,代码来源:Inform.cpp

示例4: handleEnterEvent

bool Dnd::handleEnterEvent(const XEvent& xEvent)
{
	m_DragWindow = XDND_ENTER_SOURCE_WIN(&xEvent);

	CArray<Atom> typeList;

	if (XDND_STATUS_WILL_ACCEPT(&xEvent) == 0)
	{
		//cout << "Only three types" << endl;
		for (int i = 0; i < XDND_THREE; i++)
		{
			if (XDND_ENTER_TYPE(&xEvent, i) != 0)
			{
				typeList.Append(XDND_ENTER_TYPE(&xEvent, i));
			}
		}

		for ( unsigned int i = 0; i < typeList.GetSize(); i++)
		{
			Atom atom = XInternAtom(m_pDisplay, "text/uri-list", False);
			if (typeList[i] == atom)
			{
				m_DesiredType = atom;
			}
		}
	}
	else
	{
		//cout << "More than three types - getting list" << endl;

		generateTypeList(XDND_STATUS_TARGET_WIN(&xEvent), typeList);
		if (!typeList.GetSize())
		{
			for ( unsigned int i = 0; i < typeList.GetSize(); i++)
			{
				Atom atom = XInternAtom(m_pDisplay, "text/uri-list", False);
				if (typeList[i] == atom)
				{
					m_DesiredType = atom;
				}
			}
		}
	}
	return false;
}
开发者ID:eriser,项目名称:es,代码行数:45,代码来源:xdnd.cpp

示例5: GetSliderPos

int CMainFrame::GetSliderPos (UINT nID)
{
	CArray<CMFCRibbonBaseElement*, CMFCRibbonBaseElement*> ar;
	CArray<CMFCRibbonBaseElement*, CMFCRibbonBaseElement*> ar2;
	m_wndRibbonBar.GetElementsByID (ID_RIBBON_OBTN_5, ar);
	m_wndRibbonBar.GetElementsByID (ID_RIBBON_OBTN_6, ar2);

	ar.Append (ar2);

	int nPos1 = -1;
	int nPos2 = -1;

	for (int k = 0; k < 2; k++)
	{
		for (int i = 0; i < ar.GetSize (); i++)
		{
			CMFCRibbonSlider* pSlider = DYNAMIC_DOWNCAST (CMFCRibbonSlider, ar[i]);
			if (pSlider != NULL)
			{
				if (k == 0)
				{
					if (pSlider->GetID () != nID)
					{
						nPos2 = pSlider->GetPos ();
						nPos1 = nPos2;
						break;
					}
				}
				else
				{
					if (pSlider->GetID () == nID)
					{
						if (pSlider->GetPos () != nPos2)
						{
							nPos1 = pSlider->GetPos ();
						}
					}
				}
			}
		}
	}

	return nPos1;
}
开发者ID:jetlive,项目名称:skiaming,代码行数:44,代码来源:MainFrm.cpp

示例6: generateTypeList

bool Dnd::generateTypeList(Window window, CArray<Atom>& typeList)
{
	if (window == None)
	{
		return false;
	}

	Atom*           element;
	Atom            type;
	int             format;
	unsigned long   count, remaining;
	unsigned char*  data = NULL;

	XGetWindowProperty(m_pDisplay, window, XdndTypeList, 0, 0x8000000L, False, XA_ATOM, &type, &format, &count, &remaining, &data);

	if((type != XA_ATOM) || (format != 32) || (count == 0) || (!data))
	{
		if(data)
		{
			XFree(data);
		}

		//cerr << "XGetWindowProperty failed in generateTypeList" << endl;
		return false;
	}

	element = (Atom*) data;
	for(unsigned long i = 0; i < count; i++)
	{
		typeList.Append(element[i]);
	}

	XFree(data);

	return true;
}
开发者ID:eriser,项目名称:es,代码行数:36,代码来源:xdnd.cpp

示例7: RecalculateDimensions

HRESULT CFeedback::RecalculateDimensions(CRect *prcTotal)
{
   if (prcTotal == NULL)
      return E_POINTER;
   
   prcTotal->SetRectEmpty();

   // Define offsets --> see also CQuestionnaireEx::CreateFeedback(...)
   int OFFSET_X = 20;
   int OFFSET_Y = 5;

   // Calculate bounding box from objects
   // Note: The 2 border/background rectangles must be ignored here, because they 
   // can change their dimensions and must be re-calculated again (sse below)
   CArray<DrawSdk::DrawObject *, DrawSdk::DrawObject *> aObjectsDummy;
   aObjectsDummy.Append(m_aObjects);

   // Get dimensions from feedback text
   double dTextX = 0.0;
   double dTextY = 0.0;
   double dTextWidth = 0.0;
   double dTextHeight = 0.0;
   double dTextAscent = 0.0;
   for (int i=0; i<aObjectsDummy.GetSize(); ++i)
   {
      if (aObjectsDummy.GetAt(i)->GetType() == DrawSdk::TEXT)
      {
         dTextX = aObjectsDummy.GetAt(i)->GetX();
         dTextY = aObjectsDummy.GetAt(i)->GetY();
         dTextWidth = aObjectsDummy.GetAt(i)->GetWidth();
         dTextHeight = aObjectsDummy.GetAt(i)->GetHeight();

         LOGFONT lf;
         ((DrawSdk::Text *)aObjectsDummy.GetAt(i))->GetLogFont(&lf);
         dTextAscent = ((DrawSdk::Text *)aObjectsDummy.GetAt(i))->GetTextAscent(&lf);
      }
   }

   // Get dimensions from feedback button
   double dOkButtonX = 0.0;
   double dOkButtonY = 0.0;
   double dOkButtonWidth = 0.0;
   double dOkButtonHeight = 0.0;
   if (m_pOkButton != NULL)
   {
      dOkButtonX = (double)m_pOkButton->GetArea().left;
      dOkButtonY = (double)m_pOkButton->GetArea().top;
      dOkButtonWidth = (double)m_pOkButton->GetArea().Width();
      dOkButtonHeight = (double)m_pOkButton->GetArea().Height();
   }

   // Calculate the new dimension of the feedback
   double dMin = MIN((int)dTextX, (int)dOkButtonX);
   double rcX1 = dMin - OFFSET_X;
   double rcY1 = dTextY - (dTextHeight+dTextAscent);
   double dMax = MAX((int)dTextWidth, (int)dOkButtonWidth);
   double rcX2 = rcX1 + dMax + 2*OFFSET_X;
   double rcY2 = dOkButtonY + dOkButtonHeight + OFFSET_Y;

   // Set the new feedback dimension
   prcTotal->SetRect((int)rcX1, (int)rcY1, (int)rcX2, (int)rcY2);

   // Resize the 2 border/background rectangles
   HRESULT hr = ResizeBorderRectangles(*prcTotal);

   return hr;
}
开发者ID:identity0815,项目名称:os45,代码行数:67,代码来源:Feedback.cpp

示例8: CollapseEdge

void CMesh::CollapseEdge(TEdge *pEdge, bool bRemoveSecond)
{
  TVertex *p2Remain, *p2Remove;
  CArray<TVertex *> arrInvalVerts;
  TEdgeHash hashEvaluatedEdges;
  int i, iTri;
  ASSERT(pEdge);
  p2Remain = pEdge->m_pVertices[!bRemoveSecond];
  p2Remove = pEdge->m_pVertices[bRemoveSecond];

  for (i = 0; i < p2Remove->m_pTriangles->m_iCount; i++) {
    TVertex *pOther0, *pOther1;
    p2Remove->m_pTriangles->At(i)->GetOtherVertices(p2Remove, pOther0, pOther1);
    arrInvalVerts.Append(pOther0);
    arrInvalVerts.Append(pOther1);
  }

  ASSERT(pEdge->m_pTriangles[0]);
  // Order of removal is important, if we remove the first one first and it's the only one left, 
  // the edge will get deleted and the attempt to remove the other one will crash
  RemoveTriangle(pEdge->m_pTriangles[1]); 
  RemoveTriangle(pEdge->m_pTriangles[0]);
  ASSERT(!GetEdge(p2Remain, p2Remove));

/*
#ifdef _DEBUG
  {
    for (int i = 0; i < p2Remove->m_pTriangles->m_iCount; i++) {
      TVertex *pVert0, *pVert1;
      TTriangle *pTri = p2Remove->m_pTriangles->At(i);
      pTri->GetOtherVertices(p2Remove, pVert0, pVert1);
      TTriangle kTestTri(p2Remain, pVert0, pVert1);
      TTriangleHash::TIter it = m_hashTriangles.Find(&kTestTri);
      ASSERT(!it);
      if (it)
        TEdge *pE = GetEdge(pVert0, pVert1);
    }
  }
#endif
*/

  while (p2Remove->m_pTriangles->m_iCount > 0) {
    TVertex *pVert0, *pVert1;
    TTriangle *pTri = p2Remove->m_pTriangles->At(p2Remove->m_pTriangles->m_iCount - 1);
    pTri->GetOtherVertices(p2Remove, pVert0, pVert1);
    int iTriIndex = pTri->m_iIndex;
    RemoveTriangle(pTri);
    AddTriangle(p2Remain, pVert0, pVert1, iTriIndex);
  }
  m_hashVertices.RemoveValue(p2Remove);
  delete p2Remove;

  for (i = 0; i < arrInvalVerts.m_iCount; i++) {
    for (iTri = 0; iTri < arrInvalVerts[i]->m_pTriangles->m_iCount; iTri++) {
      TVertex *pOther[2];
      TEdge *pEdge;
      int iVert;
      arrInvalVerts[i]->m_pTriangles->At(iTri)->GetOtherVertices(arrInvalVerts[i], pOther[0], pOther[1]);
      for (iVert = 0; iVert < 2; iVert++) {
        pEdge = GetEdge(arrInvalVerts[i], pOther[iVert]);
        if (hashEvaluatedEdges.Find(pEdge))
          continue;
        EvaluateEdge(pEdge, false);
        EvaluateEdge(pEdge, true);
        hashEvaluatedEdges.Add(pEdge);
      }
    }
  }
}
开发者ID:aaalexandrov,项目名称:Alex,代码行数:69,代码来源:Mesh.cpp

示例9: ExecuteHistorical

	ERMsg CUIEnvCanRadar::ExecuteHistorical(CCallback& callback)
	{
		ERMsg msg;
		string workingDir = GetDir(WORKING_DIR);
		CreateMultipleDir(workingDir);

		CInternetSessionPtr pSession;
		CHttpConnectionPtr pConnection;

		msg = GetHttpConnection(SERVER_NAME[as<size_t>(TYPE)], pConnection, pSession);
		if (!msg)
			return msg;


		callback.AddMessage(GetString(IDS_UPDATE_DIR));
		callback.AddMessage(workingDir, 1);
		callback.AddMessage(GetString(IDS_UPDATE_FROM));
		callback.AddMessage(SERVER_NAME[as<size_t>(TYPE)], 1);
		callback.AddMessage("");


		//Get remote station list
		StringVector imageList;
		if (msg)
			msg = GetRadarList(imageList, callback);

		if (msg)
			msg = CleanRadarList(imageList, callback);

		if (!msg)
			return msg;


		callback.PushTask("Download historical radar images (" + ToString(imageList.size())+ ")", imageList.size());
		//callback.SetNbStep(imageList.size());


		int nbRun = 0;
		int curI = 0;

		while (curI<imageList.size() && msg)
		{
			nbRun++;

			CInternetSessionPtr pSession;
			CHttpConnectionPtr pConnection;

			msg = GetHttpConnection(SERVER_NAME[as<size_t>(TYPE)], pConnection, pSession);

			if (msg)
			{
				TRY
				{
					for (int i = curI; i<imageList.size() && msg; i++)
					{
						string filePath = GetOutputFilePath(as<size_t>(TYPE), imageList[i]);
						msg += CreateMultipleDir(GetPath(filePath));
						//msg += CopyFile(pConnection, imageList[i], filePath, INTERNET_FLAG_TRANSFER_BINARY | WININET_API_FLAG_SYNC);

						CString URL(imageList[i].c_str());
						CHttpFile* pURLFile = pConnection->OpenRequest(_T("GET"), URL, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_TRANSFER_BINARY | WININET_API_FLAG_SYNC | INTERNET_FLAG_NEED_FILE);

						//CStdioFile* pURLFile = pSession->OpenURL(UtilWin::Convert(imageList[i]), 0, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_EXISTING_CONNECT);

						bool bRep = false;

						if (pURLFile != NULL)
						{
							if (pURLFile->SendRequest() != 0)
							{
								CArray<char> source;
								int len = 0;
								CArray<char> tmp;
								tmp.SetSize(50);

								DWORD dwStatusCode = 0;
								pURLFile->QueryInfoStatusCode(dwStatusCode);

								ULONGLONG length = pURLFile->GetLength();
								while (length > 0)
								{
									pURLFile->Read(tmp.GetData(), 50);
									source.Append(tmp);

									length = pURLFile->GetLength();
								}

								pURLFile->QueryInfoStatusCode(dwStatusCode);
								pURLFile->Close();

								ofStream file;

								msg = file.open(filePath, ios::out | ios::binary);
								if (msg)
								{
									if (!source.IsEmpty())
										file.write(source.GetData(), (UINT)source.GetSize());

									file.close();

//.........这里部分代码省略.........
开发者ID:RNCan,项目名称:WeatherBasedSimulationFramework,代码行数:101,代码来源:UIEnvCanRadar.cpp

示例10: GetElements

void SgmlElement::GetElements(CArray<SgmlElement *, SgmlElement *> &aElements) {
    aElements.RemoveAll();
    if (!m_aElements.IsEmpty())
        aElements.Append(m_aElements);
}
开发者ID:identity0815,项目名称:os45,代码行数:5,代码来源:SgmlParser.cpp


注:本文中的CArray::Append方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。