Exemplo n.º 1
0
FX_BOOL FXFC_LoadFile(FX_LPVOID p, FX_LPCSTR name, FX_LPBYTE& pBuffer, FX_DWORD& size)
{
    FXFC_PACKAGE* pPackage = (FXFC_PACKAGE*)p;
    FXSYS_fseek(pPackage->m_pFile, pPackage->m_IndexOffset, FXSYS_SEEK_SET);
    FX_BYTE buf[128];
    for (int i = 0; i < pPackage->m_nFiles; i ++) {
        FXSYS_fread(buf, pPackage->m_IndexSize, 1, pPackage->m_pFile);
        if (FXSYS_stricmp((FX_LPCSTR)buf, name) == 0) {
            FX_DWORD offset = *(FX_DWORD*)&buf[64];
            size = *(FX_DWORD*)&buf[68];
            pBuffer = FX_Alloc(FX_BYTE, size);
            FXSYS_fseek(pPackage->m_pFile, offset, FXSYS_SEEK_SET);
            FXSYS_fread(pBuffer, size, 1, pPackage->m_pFile);
            if (buf[72]) {
                FX_DWORD orig_size;
                FX_LPBYTE comp_buf = pBuffer;
                CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode(FALSE, comp_buf, size, FALSE,
                        0, 0, 0, 0, 0, pBuffer, orig_size);
                FX_Free(comp_buf);
                size = orig_size;
            }
            return TRUE;
        }
    }
    return FALSE;
}
Exemplo n.º 2
0
 static int compareFontFamilyString(const void* key, const void* element)
 {
     CFX_ByteString str_key((FX_LPCSTR)key);
     if (str_key.Find(((_AltFontFamily*)element)->m_pFontName) != -1) {
         return 0;
     }
     return FXSYS_stricmp((FX_LPCSTR)key, ((_AltFontFamily*)element)->m_pFontName);
 }
Exemplo n.º 3
0
FX_DWORD CPDF_PageOrganizer::GetNewObjId(CPDF_Document* pDoc,
                                         ObjectNumberMap* pObjNumberMap,
                                         CPDF_Reference* pRef) {
  if (!pRef)
    return 0;

  FX_DWORD dwObjnum = pRef->GetRefObjNum();
  FX_DWORD dwNewObjNum = 0;
  const auto it = pObjNumberMap->find(dwObjnum);
  if (it != pObjNumberMap->end())
    dwNewObjNum = it->second;
  if (dwNewObjNum)
    return dwNewObjNum;

  CPDF_Object* pDirect = pRef->GetDirect();
  if (!pDirect)
    return 0;

  CPDF_Object* pClone = pDirect->Clone();
  if (!pClone)
    return 0;

  if (CPDF_Dictionary* pDictClone = pClone->AsDictionary()) {
    if (pDictClone->KeyExist("Type")) {
      CFX_ByteString strType = pDictClone->GetString("Type");
      if (!FXSYS_stricmp(strType, "Pages")) {
        pDictClone->Release();
        return 4;
      }
      if (!FXSYS_stricmp(strType, "Page")) {
        pDictClone->Release();
        return 0;
      }
    }
  }
  dwNewObjNum = pDoc->AddIndirectObject(pClone);
  (*pObjNumberMap)[dwObjnum] = dwNewObjNum;

  if (!UpdateReference(pClone, pDoc, pObjNumberMap)) {
    pClone->Release();
    return 0;
  }
  return dwNewObjNum;
}
Exemplo n.º 4
0
 static int compareString(const void* key, const void* element)
 {
     return FXSYS_stricmp((FX_LPCSTR)key, ((_AltFontName*)element)->m_pName);
 }