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