See changelog 2001-01-01 22:15 GMT -3
This commit is contained in:
@@ -1,3 +1,8 @@
|
||||
2001-01-01 22:15 GMT -3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
*utils/hbdoc/genpdf.prg
|
||||
*contrib/pdflib/pdfhbdoc.c
|
||||
*Fixed handling of 4 column table items
|
||||
|
||||
2000-12-29 01:30 UTC-0800 Brian Hays <bhays@abacuslaw.com>
|
||||
* source/rtl/memoline.c
|
||||
Added OS_UNIX_COMPATIBLE test for single-byte EOL markers
|
||||
|
||||
@@ -63,6 +63,8 @@ PHB_ITEM pArray=NULL;
|
||||
static float hb_checkStringWidth(const char *szString);
|
||||
static float hb_pdfGetHeight(const char *szText);
|
||||
static void hb_ProcessTableItem(PHB_ITEM p1,PHB_ITEM p2,PHB_ITEM p3,PHB_ITEM p4);
|
||||
float getText(PDF *p,const char *szText,int iFont,float irow,float icol,float iw);
|
||||
void setText(PDF *p,const char *szText,float irow,float icol,float h,float iw);
|
||||
|
||||
HB_FUNC(HB_PDFNEW)
|
||||
{
|
||||
@@ -301,8 +303,9 @@ if (pTableItem2 != NULL){
|
||||
}
|
||||
if (pTableItem3 != NULL){
|
||||
bFItems=TRUE;
|
||||
bTItems=FALSE;
|
||||
}
|
||||
|
||||
iRow-=LEAD;
|
||||
for (ulPos=1;ulPos<=hb_arrayLen(pTableItem);ulPos++) {
|
||||
PHB_ITEM pTempArray ;
|
||||
PHB_ITEM pTempArray1 ;
|
||||
@@ -346,68 +349,135 @@ bFItems=FALSE;
|
||||
}
|
||||
static void hb_ProcessTableItem(PHB_ITEM p1,PHB_ITEM p2,PHB_ITEM p3,PHB_ITEM p4)
|
||||
{
|
||||
ULONG ulTempPos;
|
||||
ULONG ulLen;
|
||||
float fHeight;
|
||||
float fI;
|
||||
ulLen=hb_arrayLen(p1);
|
||||
for (ulTempPos=1;ulTempPos<=ulLen;ulTempPos++){
|
||||
const char *szTemp=(char *) hb_arrayGetCPtr(p1,ulTempPos);
|
||||
const char *szTemp1=(char *) hb_arrayGetCPtr(p2,ulTempPos);
|
||||
if (!bTItems && !bFItems) {
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZETABLE);
|
||||
PDF_show_xy(szPDFFile,szTemp,27,iRow-=LEAD);
|
||||
PDF_show_xy(szPDFFile,szTemp1,286,iRow);
|
||||
/* iRow-=LEAD;
|
||||
iCol-=LEAD;*/
|
||||
fHeight+=FONTSIZE;
|
||||
}
|
||||
if (bTItems && !bFItems) {
|
||||
const char * szTemp2=(char *) hb_arrayGetCPtr(p3,ulTempPos);
|
||||
ULONG ulTempPos;
|
||||
ULONG ulLen;
|
||||
float fHeight;
|
||||
float fI;
|
||||
float iitem,iitem1,iitem2,iitem3;
|
||||
|
||||
ulLen=hb_arrayLen(p1);
|
||||
for (ulTempPos=1;ulTempPos<=ulLen;ulTempPos++){
|
||||
const char *szTemp=(char *) hb_arrayGetCPtr(p1,ulTempPos);
|
||||
const char *szTemp1=(char *) hb_arrayGetCPtr(p2,ulTempPos);
|
||||
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZETABLE);
|
||||
PDF_show_xy(szPDFFile,szTemp,27,iRow-=LEAD);
|
||||
PDF_show_xy(szPDFFile,szTemp1,200,iRow);
|
||||
PDF_show_xy(szPDFFile,szTemp2,370,iRow);
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZESMALL);
|
||||
/* PDF_show_xy(szPDFFile,szTemp,27,iCol);
|
||||
PDF_show_xy(szPDFFile,szTemp1,200,iCol);
|
||||
PDF_show_xy(szPDFFile,szTemp2,370,iCol);
|
||||
iRow-=LEAD;
|
||||
iCol-=LEAD;**/
|
||||
fHeight+=FONTSIZE;
|
||||
|
||||
}
|
||||
}
|
||||
if (fOldPos==0) {
|
||||
if (!bTItems && !bFItems) {
|
||||
PDF_rect(szPDFFile,25,iRow-2,510,fHeight);
|
||||
PDF_rect(szPDFFile,280,iRow-2,255,fHeight);
|
||||
PDF_stroke(szPDFFile);
|
||||
fOldPos=iRow;
|
||||
}
|
||||
if (bTItems && !bFItems) {
|
||||
PDF_rect(szPDFFile,25,iRow-2,510,fHeight);
|
||||
PDF_rect(szPDFFile,195,iRow-2,171,fHeight);
|
||||
PDF_rect(szPDFFile,367,iRow-2,168,fHeight);
|
||||
PDF_stroke(szPDFFile);
|
||||
fOldPos=iRow;
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZETABLE);
|
||||
iitem=getText(szPDFFile,szTemp1,sziFont,293,iRow,261);
|
||||
iitem1=getText(szPDFFile,szTemp,sziFont,27,iRow,261);
|
||||
if (iitem <iitem1) {
|
||||
setText(szPDFFile ,szTemp1,293,iRow,iitem1,261);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem1,261);
|
||||
iRow-=iitem1;
|
||||
}
|
||||
else {
|
||||
setText(szPDFFile ,szTemp1,293,iRow,iitem,261);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem,261);
|
||||
iRow-=iitem;
|
||||
}
|
||||
|
||||
}
|
||||
if (bTItems && !bFItems) {
|
||||
const char * szTemp2=(char *) hb_arrayGetCPtr(p3,ulTempPos);
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZETABLE);
|
||||
iitem=getText(szPDFFile,szTemp2,sziFont,381,iRow,173);
|
||||
iitem1=getText(szPDFFile,szTemp1,sziFont,204,iRow,172);
|
||||
iitem2=getText(szPDFFile,szTemp,sziFont,27,iRow,172);
|
||||
if (iitem > iitem1 && iitem >iitem2) {
|
||||
setText(szPDFFile ,szTemp2,381,iRow,iitem,173);
|
||||
setText(szPDFFile ,szTemp1,204,iRow,iitem,172);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem,172);
|
||||
iRow-=iitem;
|
||||
}
|
||||
|
||||
if (iitem2> iitem && iitem2>iitem1){
|
||||
setText(szPDFFile ,szTemp2,381,iRow,iitem2,173);
|
||||
setText(szPDFFile ,szTemp1,204,iRow,iitem2,172);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem2,172);
|
||||
iRow-=iitem2;
|
||||
}
|
||||
|
||||
if (iitem1> iitem && iitem1>iitem2 ){
|
||||
setText(szPDFFile ,szTemp2,381,iRow,iitem1,173);
|
||||
setText(szPDFFile ,szTemp1,204,iRow,iitem1,172);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem1,172);
|
||||
iRow-=iitem1;
|
||||
}
|
||||
|
||||
}
|
||||
if (!bTItems && bFItems) {
|
||||
const char * szTemp2=(char *) hb_arrayGetCPtr(p3,ulTempPos);
|
||||
const char * szTemp3=(char *) hb_arrayGetCPtr(p4,ulTempPos);
|
||||
PDF_setfont(szPDFFile, sziFont, FONTSIZETABLE);
|
||||
iitem1=getText(szPDFFile ,szTemp3,sziFont,426,iRow,128);
|
||||
iitem2=getText(szPDFFile ,szTemp2,sziFont,293,iRow,128);
|
||||
iitem=getText(szPDFFile ,szTemp1,sziFont,160,iRow,128);
|
||||
iitem3=getText(szPDFFile ,szTemp,sziFont,27,iRow,128);
|
||||
if (iitem > iitem1 && iitem >iitem2 && iitem>iitem3) {
|
||||
setText(szPDFFile ,szTemp3,426,iRow,iitem,128);
|
||||
setText(szPDFFile ,szTemp2,293,iRow,iitem,128);
|
||||
setText(szPDFFile ,szTemp1,160,iRow,iitem,128);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem,128);
|
||||
iRow-=iitem;
|
||||
}
|
||||
else {
|
||||
if (iitem2> iitem && iitem2>iitem1 && iitem2>iitem3){
|
||||
setText(szPDFFile ,szTemp3,426,iRow,iitem2,128);
|
||||
setText(szPDFFile ,szTemp2,293,iRow,iitem2,128);
|
||||
setText(szPDFFile ,szTemp1,160,iRow,iitem2,128);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem2,128);
|
||||
iRow-=iitem2;
|
||||
}
|
||||
else {
|
||||
if (!bTItems && !bFItems) {
|
||||
PDF_rect(szPDFFile,25,iRow-2,510,fHeight);
|
||||
PDF_rect(szPDFFile,280,iRow-2,255,fHeight);
|
||||
PDF_stroke(szPDFFile);
|
||||
fOldPos=iRow;
|
||||
}
|
||||
if (bTItems && !bFItems) {
|
||||
PDF_rect(szPDFFile,25,iRow-2,510,fHeight);
|
||||
PDF_rect(szPDFFile,195,iRow-2,171,fHeight);
|
||||
PDF_rect(szPDFFile,367,iRow-2,168,fHeight);
|
||||
PDF_stroke(szPDFFile);
|
||||
fOldPos=iRow;
|
||||
if (iitem1> iitem && iitem1>iitem2 && iitem1>iitem3){
|
||||
setText(szPDFFile ,szTemp3,426,iRow,iitem1,128);
|
||||
setText(szPDFFile ,szTemp2,293,iRow,iitem1,128);
|
||||
setText(szPDFFile ,szTemp1,160,iRow,iitem1,128);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem1,128);
|
||||
iRow-=iitem1;
|
||||
}
|
||||
else {
|
||||
if (iitem3> iitem && iitem3>iitem2 && iitem3>iitem){
|
||||
setText(szPDFFile ,szTemp3,426,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp2,293,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp1,160,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem3,128);
|
||||
iRow-=iitem3;
|
||||
}
|
||||
else {
|
||||
setText(szPDFFile ,szTemp3,426,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp2,293,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp1,160,iRow,iitem3,128);
|
||||
setText(szPDFFile ,szTemp,27,iRow,iitem3,128);
|
||||
iRow-=iitem3;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
float getText(PDF *p,const char *szText,int iFont,float irow,float icol,float iw)
|
||||
{
|
||||
float h;
|
||||
float w;
|
||||
int c;
|
||||
h=FONTSIZETABLE*2;
|
||||
PDF_setfont(p, iFont, 7.0);
|
||||
c=PDF_show_boxed(p, szText, irow, icol, iw, h, "justify", "blind");
|
||||
while (c>0){
|
||||
h+= FONTSIZETABLE;
|
||||
c=PDF_show_boxed(p, szText, irow, icol, iw, h, "justify", "blind");
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
||||
void setText(PDF *p,const char *szText,float irow,float icol,float h,float iw)
|
||||
{
|
||||
|
||||
PDF_show_boxed(p, szText, irow, icol, iw, h, "justify", "");
|
||||
PDF_rect(p,irow,icol,iw+5,h);
|
||||
PDF_stroke(p);
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ FUNCTION ProcessPdf(lMemory)
|
||||
LOCAL cData := DELIM + "DATA" + DELIM
|
||||
LOCAL cMethod := DELIM + 'METHOD' + DELIM
|
||||
LOCAL cClassDoc := DELIM + "CLASSDOC" + DELIM
|
||||
|
||||
local hhh
|
||||
DEFAULT lMemory to .F.
|
||||
lData := .F.
|
||||
lMethod := .F.
|
||||
@@ -178,6 +178,7 @@ FUNCTION ProcessPdf(lMemory)
|
||||
hb_pdfnewpage("Harbour Guide",'Harbour Guide')
|
||||
hb_pdfinitbook(aResult)
|
||||
hb_pdfendpage()
|
||||
hhh:=fcreate('ssss.sss')
|
||||
endif
|
||||
|
||||
FOR i := 1 TO nFiles
|
||||
@@ -207,8 +208,18 @@ FUNCTION ProcessPdf(lMemory)
|
||||
DO WHILE .NOT. lEof
|
||||
|
||||
// Read a line
|
||||
|
||||
cBuffer := TRIM( SUBSTR( ReadLN( @lEof ), nCommentLen ) )
|
||||
cBuffer:=ReadLN( @lEof )
|
||||
if !lmemory
|
||||
? valtype(cBuffer)
|
||||
? cBuffer
|
||||
fWrite(hhh,cBuffer+hb_osnewline())
|
||||
// cBuffer:=" "
|
||||
Endif
|
||||
if !lmemory
|
||||
cBuffer := TRIM( SUBSTR( cBuffer, nCommentLen ) )
|
||||
else
|
||||
cBuffer := SUBSTR( cBuffer, nCommentLen )
|
||||
endif
|
||||
cBuffer := STRTRAN( cBuffer, CHR( 10 ), "" )
|
||||
nLineCnt ++
|
||||
// IF nLineCnt % 10 = 0
|
||||
@@ -687,6 +698,7 @@ FUNCTION ProcessPdf(lMemory)
|
||||
HB_PDFCLOSE()
|
||||
if lmemory
|
||||
// ferase('pdf\temp.pdf')
|
||||
fclose(hhh)
|
||||
endif
|
||||
|
||||
RETURN Nil
|
||||
@@ -746,10 +758,13 @@ RETURN nil
|
||||
FUNCTION GenPdfTable( oPdf ,nNumTableItems)
|
||||
|
||||
if nNumTableItems <3
|
||||
hb_pdfWriteText( " " )
|
||||
HB_PDFTABLE(aFitable,aSitable)
|
||||
elseif nNumTableItems<4
|
||||
hb_pdfWriteText( " " )
|
||||
HB_PDFTABLE(aFitable,aSitable,aTitable)
|
||||
else
|
||||
hb_pdfWriteText( " " )
|
||||
HB_PDFTABLE(aFitable,aSitable,aTitable,aFoiTable)
|
||||
endif
|
||||
|
||||
@@ -1373,120 +1388,20 @@ Local aItems2:={}
|
||||
Local aItems3:={}
|
||||
|
||||
Local aItems4:={}
|
||||
Local nCount:=0
|
||||
Local nPos:=0
|
||||
Local nResult:=0
|
||||
Local lEndPar:=.f.
|
||||
Local cTemp:=''
|
||||
Local nLen:=Len(cItem)
|
||||
local nLen1:=Len(cItem2)
|
||||
local nLen2:=Len(cItem3)
|
||||
local nLen3:=Len(cItem4)
|
||||
Local nMaxArray:=0
|
||||
|
||||
if nItem <3
|
||||
do While nLen>0
|
||||
cTemp:=substr(cItem,1,47)
|
||||
if nLen>47
|
||||
nPos:=Rat(" ",cTemp)
|
||||
endif
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem,1,nPos)
|
||||
aadd(aItems,cTemp)
|
||||
else
|
||||
aadd(aItems,cTemp)
|
||||
endif
|
||||
cItem:=strtran(cItem,cTemp,"")
|
||||
nLen:=len(cItem)
|
||||
enddo
|
||||
do While nLen1>0
|
||||
cTemp:=substr(cItem2,1,47)
|
||||
if nLen1>47
|
||||
nPos:=Rat(" ",cTemp)
|
||||
endif
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem2,1,nPos)
|
||||
aadd(aItems2,cTemp)
|
||||
else
|
||||
aadd(aItems2,cTemp)
|
||||
endif
|
||||
cItem2:=strtran(cItem2,cTemp,"")
|
||||
nLen1:=len(cItem2)
|
||||
enddo
|
||||
aadd(aitems,citem)
|
||||
aadd(aItems2,citem2)
|
||||
elseif nItem <4
|
||||
do While nLen>0
|
||||
cTemp:=substr(cItem,1,32)
|
||||
if nLen>32
|
||||
nPos:=Rat(" ",cTemp)
|
||||
endif
|
||||
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem,1,nPos)
|
||||
aadd(aItems,cTemp)
|
||||
else
|
||||
aadd(aItems,cTemp)
|
||||
endif
|
||||
cItem:=strtran(cItem,cTemp,"")
|
||||
nLen:=len(cItem)
|
||||
enddo
|
||||
do While nLen1>0
|
||||
cTemp:=substr(cItem2,1,32)
|
||||
if nLen1>32
|
||||
nPos:=Rat(" ",cTemp)
|
||||
endif
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem2,13nPos)
|
||||
aadd(aItems2,cTemp)
|
||||
else
|
||||
aadd(aItems2,cTemp)
|
||||
endif
|
||||
cItem2:=strtran(cItem2,cTemp,"")
|
||||
nLen1:=len(cItem2)
|
||||
enddo
|
||||
|
||||
endif
|
||||
if nItem <4
|
||||
do While nLen2>0
|
||||
cTemp:=substr(cItem3,1,32)
|
||||
if nLen2>32
|
||||
nPos:=Rat(" ",cTemp)
|
||||
endif
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem3,1,nPos)
|
||||
aadd(aItems3,cTemp)
|
||||
aadd(aitems,cItem)
|
||||
aadd(aitems2,citem2)
|
||||
aadd(aitems3,citem3)
|
||||
else
|
||||
aadd(aItems3,cTemp)
|
||||
endif
|
||||
cItem3:=strtran(cItem3,cTemp,"")
|
||||
nLen2:=len(cItem3)
|
||||
enddo
|
||||
aadd(aitems,cItem)
|
||||
aadd(aitems2,citem2)
|
||||
aadd(aitems3,citem3)
|
||||
aadd(aItems4,citem4)
|
||||
endif
|
||||
do While nLen3>0
|
||||
cTemp:=substr(cItem4,1,40)
|
||||
nPos:=Rat(" ",cTemp)
|
||||
if nPos>0
|
||||
cTemp:=substr(cItem4,1,nPos)
|
||||
aadd(aItems4,cTemp)
|
||||
else
|
||||
aadd(aItems4,cTemp)
|
||||
endif
|
||||
cItem4:=strtran(cItem4,cTemp,"")
|
||||
nLen3:=len(cItem4)
|
||||
enddo
|
||||
nMaxArray:=getArray(aItems,aItems2,Aitems3,aItems4)
|
||||
|
||||
do while Len(aItems) <nMaxArray
|
||||
aadd(aitems,"")
|
||||
enddo
|
||||
do while Len(aItems2) <nMaxArray
|
||||
aadd(aitems2,"")
|
||||
enddo
|
||||
do while Len(aItems3) <nMaxArray
|
||||
aadd(aitems3,"")
|
||||
enddo
|
||||
do while Len(aItems4) <nMaxArray
|
||||
aadd(aitems4,"")
|
||||
enddo
|
||||
|
||||
aadd(aFiTable,aItems)
|
||||
aadd(aSiTable,aItems2)
|
||||
aadd(aTitable,aItems3)
|
||||
|
||||
Reference in New Issue
Block a user