See changelog 2001-01-01 22:15 GMT -3

This commit is contained in:
Luiz Rafael Culik
2001-01-02 00:07:35 +00:00
parent 15540f9678
commit 471902aaba
3 changed files with 160 additions and 170 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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)