void CPDF_TextObject::SetText(CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs) { SetSegments(pStrs, pKerning, nSegs); RecalcPositionData(); }
void CPDF_TextObject::SetText(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pKernings) { if (m_nChars > 1) { FX_Free(m_pCharCodes); m_pCharCodes = nullptr; } FX_Free(m_pCharPos); m_pCharPos = nullptr; int nKernings = 0; int i; for (i = 0; i < nChars - 1; ++i) { if (pKernings[i] != 0) { ++nKernings; } } m_nChars = nChars + nKernings; if (m_nChars > 1) { m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); for (int i = 0, index = 0; i < nChars; ++i) { m_pCharCodes[index++] = pCharCodes[i]; if (pKernings[i] != 0 && i != nChars - 1) { m_pCharCodes[index] = (FX_DWORD)-1; m_pCharPos[index - 1] = pKernings[i]; ++index; } } } else { m_pCharCodes = (FX_DWORD*)(uintptr_t)pCharCodes[0]; } RecalcPositionData(); }
void CPDF_TextObject::SetText(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pKernings) { if (m_nChars > 1 && m_pCharCodes) { FX_Free(m_pCharCodes); m_pCharCodes = NULL; } if (m_pCharPos) { FX_Free(m_pCharPos); m_pCharPos = NULL; } int nKernings = 0; int i; for (i = 0; i < nChars - 1; i ++) if (pKernings[i] != 0) { nKernings ++; } m_nChars = nChars + nKernings; if (m_nChars > 1) { m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); int index = 0; for (int i = 0; i < nChars; i ++) { m_pCharCodes[index++] = pCharCodes[i]; if (pKernings[i] != 0 && i != nChars - 1) { m_pCharCodes[index] = (FX_DWORD) - 1; m_pCharPos[index - 1] = pKernings[i]; index ++; } } } else { m_pCharCodes = (FX_DWORD*)(FX_UINTPTR)pCharCodes[0]; } RecalcPositionData(); }
void CPDF_TextObject::SetData(int nChars, FX_DWORD* pCharCodes, FX_FLOAT* pCharPos, FX_FLOAT x, FX_FLOAT y) { ASSERT(m_nChars == 0); m_nChars = nChars; m_PosX = x; m_PosY = y; if (nChars == 0) { return; } if (nChars == 1) { m_pCharCodes = (FX_DWORD*)(FX_UINTPTR) * pCharCodes; } else { m_pCharCodes = FX_Alloc(FX_DWORD, nChars); FXSYS_memcpy32(m_pCharCodes, pCharCodes, sizeof(FX_DWORD)*nChars); m_pCharPos = FX_Alloc(FX_FLOAT, nChars - 1); FXSYS_memcpy32(m_pCharPos, pCharPos, sizeof(FX_FLOAT) * (nChars - 1)); } RecalcPositionData(); }
void CPDF_TextObject::SetText(const CFX_ByteString& str) { SetSegments(&str, nullptr, 1); RecalcPositionData(); }