mirror of
https://github.com/fadden/ciderpress.git
synced 2024-11-29 20:49:27 +00:00
c78017b1d2
Moved comments and return types, switched to uint types, added "override" keyword.
126 lines
3.6 KiB
C++
126 lines
3.6 KiB
C++
/*
|
|
* CiderPress
|
|
* Copyright (C) 2007 by faddenSoft, LLC. All Rights Reserved.
|
|
* See the file LICENSE for distribution terms.
|
|
*/
|
|
/*
|
|
* Some very simple, generic reformatters.
|
|
*/
|
|
#include "StdAfx.h"
|
|
#include "Simple.h"
|
|
|
|
|
|
/*
|
|
* Indicate that we handle all parts of all files.
|
|
*/
|
|
void ReformatRaw::Examine(ReformatHolder* pHolder)
|
|
{
|
|
pHolder->SetApplic(ReformatHolder::kReformatRaw,
|
|
ReformatHolder::kApplicAlways,
|
|
ReformatHolder::kApplicAlways, ReformatHolder::kApplicAlways);
|
|
|
|
if (pHolder->GetSourceLen(ReformatHolder::kPartData) == 0)
|
|
pHolder->SetApplicPreferred(ReformatHolder::kReformatRaw,
|
|
ReformatHolder::kPartData);
|
|
if (pHolder->GetSourceLen(ReformatHolder::kPartRsrc) == 0)
|
|
pHolder->SetApplicPreferred(ReformatHolder::kReformatRaw,
|
|
ReformatHolder::kPartRsrc);
|
|
if (pHolder->GetSourceLen(ReformatHolder::kPartCmmt) == 0)
|
|
pHolder->SetApplicPreferred(ReformatHolder::kReformatRaw,
|
|
ReformatHolder::kPartCmmt);
|
|
}
|
|
|
|
/*
|
|
* Reformat a file by not reformatting it.
|
|
*
|
|
* This should inspire whoever is calling us to present the data without
|
|
* reformatting it first.
|
|
*/
|
|
int ReformatRaw::Process(const ReformatHolder* pHolder,
|
|
ReformatHolder::ReformatID id, ReformatHolder::ReformatPart part,
|
|
ReformatOutput* pOutput)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
/*
|
|
* Indicate that we handle all parts of all files.
|
|
*/
|
|
void ReformatHexDump::Examine(ReformatHolder* pHolder)
|
|
{
|
|
pHolder->SetApplic(ReformatHolder::kReformatHexDump,
|
|
ReformatHolder::kApplicAlways,
|
|
ReformatHolder::kApplicAlways, ReformatHolder::kApplicAlways);
|
|
}
|
|
|
|
/*
|
|
* Convert a file to a hex dump.
|
|
*/
|
|
int ReformatHexDump::Process(const ReformatHolder* pHolder,
|
|
ReformatHolder::ReformatID id, ReformatHolder::ReformatPart part,
|
|
ReformatOutput* pOutput)
|
|
{
|
|
const uint8_t* srcBuf = pHolder->GetSourceBuf(part);
|
|
long srcLen = pHolder->GetSourceLen(part);
|
|
|
|
/*
|
|
* The RichEdit control gets all wonky on large RTF files, but doesn't
|
|
* seem to have trouble with large text files. So, for large files,
|
|
* turn off the RTF formatting. We also allow the user the option of
|
|
* turning the formatting off.
|
|
*/
|
|
if (srcLen > 65536)
|
|
fUseRTF = false;
|
|
if (fUseRTF) {
|
|
if (!pHolder->GetOption(ReformatHolder::kOptHiliteHexDump))
|
|
fUseRTF = false;
|
|
}
|
|
|
|
RTFBegin();
|
|
|
|
BufHexDump(srcBuf, srcLen);
|
|
|
|
RTFEnd();
|
|
|
|
SetResultBuffer(pOutput);
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
* Indicate that we handle all parts of all files.
|
|
*/
|
|
void ReformatEOL_HA::Examine(ReformatHolder* pHolder)
|
|
{
|
|
pHolder->SetApplic(ReformatHolder::kReformatTextEOL_HA,
|
|
ReformatHolder::kApplicAlways,
|
|
ReformatHolder::kApplicAlways, ReformatHolder::kApplicAlways);
|
|
}
|
|
|
|
/*
|
|
* Convert the EOL markers in a text file to Windows' idiotic CRLF, and
|
|
* strip off all of the high bits.
|
|
*
|
|
* Sadly, this most likely requires expanding the original.
|
|
*/
|
|
int ReformatEOL_HA::Process(const ReformatHolder* pHolder,
|
|
ReformatHolder::ReformatID id, ReformatHolder::ReformatPart part,
|
|
ReformatOutput* pOutput)
|
|
{
|
|
fUseRTF = false;
|
|
|
|
//LOGI("Reformatting EOL (testing for high-ASCII too)");
|
|
|
|
//bool isHighASCII = false;
|
|
|
|
if (pHolder->GetSourceLen(part) == 0)
|
|
return -1;
|
|
|
|
//isHighASCII = GenericEntry::CheckHighASCII(
|
|
// (const uint8_t*) pHolder->fSourceBuf, pHolder->fSourceLen);
|
|
|
|
ConvertEOL(pHolder->GetSourceBuf(part), pHolder->GetSourceLen(part), true);
|
|
|
|
SetResultBuffer(pOutput);
|
|
return 0;
|
|
}
|