本文整理汇总了C++中CPDF_Dictionary::GetIntegerBy方法的典型用法代码示例。如果您正苦于以下问题:C++ CPDF_Dictionary::GetIntegerBy方法的具体用法?C++ CPDF_Dictionary::GetIntegerBy怎么用?C++ CPDF_Dictionary::GetIntegerBy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPDF_Dictionary
的用法示例。
在下文中一共展示了CPDF_Dictionary::GetIntegerBy方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: v_Init
FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) {
CPDF_Stream* pStream = pObj->AsStream();
if (!pStream)
return false;
CPDF_Dictionary* pDict = pStream->GetDict();
CPDF_Array* pSize = pDict->GetArrayBy("Size");
CPDF_Array* pEncode = pDict->GetArrayBy("Encode");
CPDF_Array* pDecode = pDict->GetArrayBy("Decode");
m_nBitsPerSample = pDict->GetIntegerBy("BitsPerSample");
if (!IsValidBitsPerSample(m_nBitsPerSample))
return FALSE;
m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample);
m_pSampleStream.reset(new CPDF_StreamAcc);
m_pSampleStream->LoadAllData(pStream, FALSE);
FX_SAFE_UINT32 nTotalSampleBits = 1;
m_EncodeInfo.resize(m_nInputs);
for (uint32_t i = 0; i < m_nInputs; i++) {
m_EncodeInfo[i].sizes = pSize ? pSize->GetIntegerAt(i) : 0;
if (!pSize && i == 0)
m_EncodeInfo[i].sizes = pDict->GetIntegerBy("Size");
nTotalSampleBits *= m_EncodeInfo[i].sizes;
if (pEncode) {
m_EncodeInfo[i].encode_min = pEncode->GetFloatAt(i * 2);
m_EncodeInfo[i].encode_max = pEncode->GetFloatAt(i * 2 + 1);
} else {
m_EncodeInfo[i].encode_min = 0;
m_EncodeInfo[i].encode_max =
m_EncodeInfo[i].sizes == 1 ? 1 : (FX_FLOAT)m_EncodeInfo[i].sizes - 1;
}
}
nTotalSampleBits *= m_nBitsPerSample;
nTotalSampleBits *= m_nOutputs;
FX_SAFE_UINT32 nTotalSampleBytes = nTotalSampleBits;
nTotalSampleBytes += 7;
nTotalSampleBytes /= 8;
if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 ||
nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) {
return FALSE;
}
m_DecodeInfo.resize(m_nOutputs);
for (uint32_t i = 0; i < m_nOutputs; i++) {
if (pDecode) {
m_DecodeInfo[i].decode_min = pDecode->GetFloatAt(2 * i);
m_DecodeInfo[i].decode_max = pDecode->GetFloatAt(2 * i + 1);
} else {
m_DecodeInfo[i].decode_min = m_pRanges[i * 2];
m_DecodeInfo[i].decode_max = m_pRanges[i * 2 + 1];
}
}
return TRUE;
}
示例2: LoadKid
void CPDF_StructElementImpl::LoadKid(uint32_t PageObjNum,
CPDF_Object* pKidObj,
CPDF_StructKid* pKid) {
pKid->m_Type = CPDF_StructKid::Invalid;
if (!pKidObj)
return;
if (pKidObj->IsNumber()) {
if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) {
return;
}
pKid->m_Type = CPDF_StructKid::PageContent;
pKid->m_PageContent.m_ContentId = pKidObj->GetInteger();
pKid->m_PageContent.m_PageObjNum = PageObjNum;
return;
}
CPDF_Dictionary* pKidDict = pKidObj->AsDictionary();
if (!pKidDict)
return;
if (CPDF_Reference* pRef = ToReference(pKidDict->GetObjectBy("Pg")))
PageObjNum = pRef->GetRefObjNum();
CFX_ByteString type = pKidDict->GetStringBy("Type");
if (type == "MCR") {
if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) {
return;
}
pKid->m_Type = CPDF_StructKid::StreamContent;
if (CPDF_Reference* pRef = ToReference(pKidDict->GetObjectBy("Stm"))) {
pKid->m_StreamContent.m_RefObjNum = pRef->GetRefObjNum();
} else {
pKid->m_StreamContent.m_RefObjNum = 0;
}
pKid->m_StreamContent.m_PageObjNum = PageObjNum;
pKid->m_StreamContent.m_ContentId = pKidDict->GetIntegerBy("MCID");
} else if (type == "OBJR") {
if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) {
return;
}
pKid->m_Type = CPDF_StructKid::Object;
if (CPDF_Reference* pObj = ToReference(pKidDict->GetObjectBy("Obj"))) {
pKid->m_Object.m_RefObjNum = pObj->GetRefObjNum();
} else {
pKid->m_Object.m_RefObjNum = 0;
}
pKid->m_Object.m_PageObjNum = PageObjNum;
} else {
pKid->m_Type = CPDF_StructKid::Element;
pKid->m_Element.m_pDict = pKidDict;
if (!m_pTree->m_pPage) {
pKid->m_Element.m_pElement =
new CPDF_StructElementImpl(m_pTree, this, pKidDict);
} else {
pKid->m_Element.m_pElement = nullptr;
}
}
}
示例3: NumCopies
int32_t CPDF_ViewerPreferences::NumCopies() const {
CPDF_Dictionary* pDict = m_pDoc->GetRoot();
pDict = pDict->GetDictBy("ViewerPreferences");
if (!pDict) {
return 1;
}
return pDict->GetIntegerBy("NumCopies");
}
示例4: LoadTransInfo
void CPDF_PageObjectList::LoadTransInfo() {
if (!m_pFormDict) {
return;
}
CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group");
if (!pGroup) {
return;
}
if (pGroup->GetStringBy("S") != "Transparency") {
return;
}
m_Transparency |= PDFTRANS_GROUP;
if (pGroup->GetIntegerBy("I")) {
m_Transparency |= PDFTRANS_ISOLATED;
}
if (pGroup->GetIntegerBy("K")) {
m_Transparency |= PDFTRANS_KNOCKOUT;
}
}
示例5: GetFontFileStreamAcc
CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc(
CPDF_Stream* pFontStream) {
ASSERT(pFontStream);
auto it = m_FontFileMap.find(pFontStream);
if (it != m_FontFileMap.end())
return it->second->AddRef();
CPDF_Dictionary* pFontDict = pFontStream->GetDict();
int32_t org_size = pFontDict->GetIntegerBy("Length1") +
pFontDict->GetIntegerBy("Length2") +
pFontDict->GetIntegerBy("Length3");
if (org_size < 0)
org_size = 0;
CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc;
pFontFile->LoadAllData(pFontStream, FALSE, org_size);
CPDF_CountedStreamAcc* ftData = new CPDF_CountedStreamAcc(pFontFile);
m_FontFileMap[pFontStream] = ftData;
return ftData->AddRef();
}
示例6: GetMaxLen
int CPDF_FormField::GetMaxLen() const {
if (CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen"))
return pObj->GetInteger();
for (int i = 0; i < m_ControlList.GetSize(); i++) {
CPDF_FormControl* pControl = m_ControlList.GetAt(i);
if (!pControl)
continue;
CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict;
if (pWidgetDict->KeyExist("MaxLen"))
return pWidgetDict->GetIntegerBy("MaxLen");
}
return 0;
}
示例7: LoadCryptInfo
static FX_BOOL LoadCryptInfo(CPDF_Dictionary* pEncryptDict,
const CFX_ByteString& name,
int& cipher,
int& keylen) {
int Version = pEncryptDict->GetIntegerBy("V");
cipher = FXCIPHER_RC4;
keylen = 0;
if (Version >= 4) {
CPDF_Dictionary* pCryptFilters = pEncryptDict->GetDictBy("CF");
if (!pCryptFilters) {
return FALSE;
}
if (name == "Identity") {
cipher = FXCIPHER_NONE;
} else {
CPDF_Dictionary* pDefFilter = pCryptFilters->GetDictBy(name);
if (!pDefFilter) {
return FALSE;
}
int nKeyBits = 0;
if (Version == 4) {
nKeyBits = pDefFilter->GetIntegerBy("Length", 0);
if (nKeyBits == 0) {
nKeyBits = pEncryptDict->GetIntegerBy("Length", 128);
}
} else {
nKeyBits = pEncryptDict->GetIntegerBy("Length", 256);
}
if (nKeyBits < 40) {
nKeyBits *= 8;
}
keylen = nKeyBits / 8;
CFX_ByteString cipher_name = pDefFilter->GetStringBy("CFM");
if (cipher_name == "AESV2" || cipher_name == "AESV3") {
cipher = FXCIPHER_AES;
}
}
} else {
keylen = Version > 1 ? pEncryptDict->GetIntegerBy("Length", 40) / 8 : 5;
}
if (keylen > 32 || keylen < 0) {
return FALSE;
}
return TRUE;
}
示例8: GetPattern
CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj,
FX_BOOL bShading,
const CFX_Matrix* matrix) {
if (!pPatternObj)
return nullptr;
CPDF_CountedPattern* ptData = nullptr;
auto it = m_PatternMap.find(pPatternObj);
if (it != m_PatternMap.end()) {
ptData = it->second;
if (ptData->get()) {
return ptData->AddRef();
}
}
CPDF_Pattern* pPattern = nullptr;
if (bShading) {
pPattern =
new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, bShading, matrix);
} else {
CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr;
if (pDict) {
int type = pDict->GetIntegerBy("PatternType");
if (type == 1) {
pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix);
} else if (type == 2) {
pPattern =
new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix);
}
}
}
if (!pPattern)
return nullptr;
if (!ptData) {
ptData = new CPDF_CountedPattern(pPattern);
m_PatternMap[pPatternObj] = ptData;
} else {
ptData->reset(pPattern);
}
return ptData->AddRef();
}
示例9: Load
bool CPDF_ShadingPattern::Load() {
if (m_ShadingType != kInvalidShading)
return TRUE;
CPDF_Dictionary* pShadingDict =
m_pShadingObj ? m_pShadingObj->GetDict() : nullptr;
if (!pShadingDict)
return FALSE;
m_pFunctions.clear();
CPDF_Object* pFunc = pShadingDict->GetDirectObjectBy("Function");
if (pFunc) {
if (CPDF_Array* pArray = pFunc->AsArray()) {
m_pFunctions.resize(std::min<size_t>(pArray->GetCount(), 4));
for (size_t i = 0; i < m_pFunctions.size(); ++i)
m_pFunctions[i] = CPDF_Function::Load(pArray->GetDirectObjectAt(i));
} else {
m_pFunctions.push_back(CPDF_Function::Load(pFunc));
}
}
CPDF_Object* pCSObj = pShadingDict->GetDirectObjectBy("ColorSpace");
if (!pCSObj)
return FALSE;
CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData();
m_pCS = pDocPageData->GetColorSpace(pCSObj, nullptr);
if (m_pCS)
m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray());
m_ShadingType = ToShadingType(pShadingDict->GetIntegerBy("ShadingType"));
// We expect to have a stream if our shading type is a mesh.
if (IsMeshShading() && !ToStream(m_pShadingObj))
return FALSE;
return TRUE;
}