Bug 140

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
имеется тестовая программа. Линии в штрихкоде одни тоньше чем надо, другие 
толще. 
кстати у линий концы разные на винде и под вайном - на винде кругленькие, под   
вайном прямоугольные.
Comment 1 Vitaly Lipatov 2006-05-25 18:20:43 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; 
 
Comment 2 Denis Philippov 2006-05-25 19:41:39 MSD
результат выполнения пользовательской программой функции polygon(array of 
points) вызывает генерацию в результирующем метафайле записи EMR_POLYGON16 а 
не EMR_POLYGON в следствии чего происходит потеря точности
Comment 3 Vitaly Lipatov 2006-05-26 13:59:58 MSD
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 то штрихкоды печатаются нормально. Почти.
 
линии штришкодов рисуются прямоугольниками и из-за того что при отрисовке не 
учитывается ширина линии обводки толстые штрихи отрисовываютя чуть выше чем 
тонкие.
Comment 4 Vitaly Lipatov 2006-06-23 21:35:06 MSD
Временно исправлено (pen.c.patch) 
Comment 5 Vitaly Lipatov 2006-08-30 16:58:21 MSD
исправление включено в 1.0.4