RE: PrinterDriver, DrvStrokePath
- From: Lela <lela_dd@xxxxxxxxxxx>
- Date: Wed, 9 Jul 2008 01:44:05 -0700
Please can anyone give it a try to reproduce the behaviour on his driver.
Kind regards lela
"lela" wrote:
Hi Ng,.
I'm faced with the situation described below. I've a Win32 Testapplication
which I print from in order to test my printer driver. Through this
Testapplication I print several different geometries like Lines, Arcs,
Bezier curves, Path,...
The problem is that if I send the draw commands to my printer driver the
PATHOBJ_vEnumStart followed by the PATHOBJ_bEnum(..) failes. It fails in the
way that only the first approximately 523000 vector points will be
available. I've tried several different procedures in order to get more
information out why this does happen, but unfortunately I weren't able to
figure it out. I've given it a try to print less vectors and do the
PATHOBJ_vEnumStart followed by the PATHOBJ_bEnum(..) several times, there it
seems that as soon as the whole number of vetor points have reached ~523000
points the PATHOBJ_bEnum doesn't return the remaining points anymore.
// Win32 Test Application
BeginPath(hdc);
for(int iSubPath=0; iSubPath<100SubPath++){
b = ::MoveToEx(hdc, iSubPath*10, iSubPath*10, NULL) != 0;
for(int iPoly=0; iPoly<500000;++){
b = ::LineTo(hdc, iSubPath*10+iPoly , iSubPath*10+iPoly) !=0;
}
}
EndPath(hdc);
StrokePath(hdc);
// PrinterDriver Code, DrvStrokePath
UINT uiCnt;
PATHDATA pathData;
if(ppo){
PATHOBJ_vEnumStart(ppo);
memset(&pathData, 0, sizeof(PATHDATA));
do{
Ok = PATHOBJ_bEnum(ppo, &pathData);
if(pathData.count>0){
uiCnt+=pathData.count;
}
while(Ok);
Best regards, Lela
- Prev by Date: Child device enumeration in UMDF
- Next by Date: Re: Replacing Printer Property Sheets
- Previous by thread: Child device enumeration in UMDF
- Next by thread: questions regarding inf file
- Index(es):