Summary: | Неверная толщина линий в штрихкоде | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED FIXED | QA Contact: | Vitaly Lipatov <lav> |
Severity: | normal | ||
Priority: | P2 | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 166 |
Description
Vitaly Lipatov
2006-05-25 18:07:52 MSD
Возможно что проблема с PlayEnhmetafile: procedure TMetafile.Draw(ACanvas: TCanvas; const Rect: TRect); var MetaPal, OldPal: HPALETTE; R: TRect; begin if FImage = nil then Exit; MetaPal := Palette; OldPal := 0; if MetaPal <> 0 then begin OldPal := SelectPalette(ACanvas.Handle, MetaPal, True); RealizePalette(ACanvas.Handle); end; R := Rect; Dec(R.Right); // Metafile rect includes right and bottom coords Dec(R.Bottom); PlayEnhMetaFile(ACanvas.Handle, FImage.FHandle, R); if MetaPal <> 0 then SelectPalette(ACanvas.Handle, OldPal, True); end; результат выполнения пользовательской программой функции polygon(array of points) вызывает генерацию в результирующем метафайле записи EMR_POLYGON16 а не EMR_POLYGON в следствии чего происходит потеря точности dlls/wineps/pen.c:67 if ((logpen.lopnStyle & PS_GEOMETRIC) || (physDev->pen.width > 1)) { physDev->pen.width = PSDRV_XWStoDS( physDev, physDev->pen.width ); if(physDev->pen.width < 0) physDev->pen.width = -physDev->pen.width; } если толщина линии меньше или равна 1 то преобразование логической толщины в реальную не происходит. если закоментировать if то штрихкоды печатаются нормально. Почти. линии штришкодов рисуются прямоугольниками и из-за того что при отрисовке не учитывается ширина линии обводки толстые штрихи отрисовываютя чуть выше чем тонкие. Временно исправлено (pen.c.patch) исправление включено в 1.0.4 |