~ubuntu-branches/debian/experimental/cuneiform/experimental

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/rstuff/sources/main/ortomove.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jakub Wilk, libm.diff, swapbytes.diff
  • Date: 2010-09-14 15:53:54 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20100914155354-hhxaa13xmhb82e3e
Tags: 1.0.0+dfsg-1
* New upstream release (closes: #575419).
* New maintainer (closes: #543893).
* Document in README.source how to repackage upstream tarball.
* Update debian/copyright.
  + Document that the package is auto-buildable.
  + Document which files were stripped from the upstream tarball.
  + Convert to the DEP-5 format.
* Drop README.Debian, no longer needed.
* Rewrite debian/rules from scratch using dh.
  + Bump debhelper minimum version to 7.4.4 (for cmake support).
  + Turn on MAKE_VERBOSE_MAKEFILE.
  + Disable call to dh_makeshlibs to avoid creation of spurious
    calls to ldconfig in postrm/postinst.
  + Add get-orig-source target.
* Remove unused overrides.
* Link to GraphicsMagick rather than ImageMagick:
  + Build-depend on graphicsmagick-libmagick-dev-compat.
  + Add patch to properly initialize the library. [graphicsmagick.diff]    
* Bump standards version to 3.9.1 (no changes needed).
* Force upgrade of ocrodjvu to at least 0.4.2; earlier versions of ocrodjvu
  don't support this version of Cuneiform.
* List all the supported languages in the package description.
* Update the manual page.
  + Document --dotmatrix, --fax and --singlecolumn options.
  + Document all output formats.
  + Don't use hyphen as minus sign.
  + Fix a few formatting issues.
* Drop Vcs-* fields.
* Add watch file.
* Add patch from Dmitrijs Ledkovs to link the lao library with libm.
  [libm.diff]
* Add patch for a for a more portable function to swap byte order.
  [swapbytes.diff]
* Set Architecture to any; there's no good reason to limit it.
* Run rudimentary tests at build time.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Copyright (c) 1993-2008, Cognitive Technologies
3
3
All rights reserved.
4
4
 
5
 
����������� ��������� ��������������� � ������������� ��� � ���� ��������� ����,
6
 
��� � � �������� �����, � ����������� ��� ���, ��� ���������� ��������� �������:
7
 
 
8
 
      * ��� ��������� ��������������� ��������� ���� ������ ���������� ���������
9
 
        ���� ����������� �� ��������� �����, ���� ������ ������� � �����������
10
 
        ����� �� ��������.
11
 
      * ��� ��������� ��������������� ��������� ���� � ������������ �/��� �
12
 
        ������ ����������, ������������ ��� ���������������, ������ �����������
13
 
        ��������� ���� ���������� �� ��������� �����, ���� ������ ������� �
14
 
        ����������� ����� �� ��������.
15
 
      * �� �������� Cognitive Technologies, �� ����� �� ����������� �� �����
16
 
        ���� ������������ � �������� �������� ��������� �/��� �����������
17
 
        ���������, ���������� �� ���� ��, ��� ���������������� �����������
18
 
        ����������.
19
 
 
20
 
��� ��������� ������������� ����������� ��������� ���� �/��� ������� ������ "���
21
 
��� ����" ��� ������-���� ���� ��������, ���������� ���� ��� ���������������,
22
 
������� �������� ������������ �������� � ����������� ��� ���������� ����, �� ��
23
 
������������� ���. �� �������� ��������� ���� � �� ���� ������ ����, �������
24
 
����� �������� �/��� �������� �������������� ���������, �� � ���� ������ ��
25
 
��Ѩ� ���������������, ������� ����� �����, ���������, ����������� ���
26
 
������������� ������, ��������� � �������������� ��� ���������� ����������
27
 
������������� ������������� ��������� (������� ������ ������, ��� ������,
28
 
������� ���������, ��� ������ �/��� ������ �������, ���������� ��-�� ��������
29
 
������� ��� �/��� ������ ��������� �������� ��������� � ������� �����������,
30
 
�� �� ������������� ����� ��������), �� �� ������������� ���, ���� ���� �����
31
 
�������� ��� ������ ���� ���� �������� � ����������� ����� ������� � ������.
 
5
Разрешается повторное распространение и использование как в виде исходного кода,
 
6
так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:
 
7
 
 
8
      * При повторном распространении исходного кода должны оставаться указанное
 
9
        выше уведомление об авторском праве, этот список условий и последующий
 
10
        отказ от гарантий.
 
11
      * При повторном распространении двоичного кода в документации и/или в
 
12
        других материалах, поставляемых при распространении, должны сохраняться
 
13
        указанная выше информация об авторском праве, этот список условий и
 
14
        последующий отказ от гарантий.
 
15
      * Ни название Cognitive Technologies, ни имена ее сотрудников не могут
 
16
        быть использованы в качестве средства поддержки и/или продвижения
 
17
        продуктов, основанных на этом ПО, без предварительного письменного
 
18
        разрешения.
 
19
 
 
20
ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ ЛИЦАМИ "КАК
 
21
ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,
 
22
ВКЛЮЧАЯ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, НО НЕ
 
23
ОГРАНИЧИВАЯСЬ ИМИ. НИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ
 
24
МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, НИ В КОЕМ СЛУЧАЕ НЕ
 
25
НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ
 
26
ПОСЛЕДОВАВШИЕ УБЫТКИ, СВЯЗАННЫЕ С ИСПОЛЬЗОВАНИЕМ ИЛИ ПОНЕСЕННЫЕ ВСЛЕДСТВИЕ
 
27
НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ ПОТЕРИ ДАННЫХ, ИЛИ ДАННЫЕ,
 
28
СТАВШИЕ НЕГОДНЫМИ, ИЛИ УБЫТКИ И/ИЛИ ПОТЕРИ ДОХОДОВ, ПОНЕСЕННЫЕ ИЗ-ЗА ДЕЙСТВИЙ
 
29
ТРЕТЬИХ ЛИЦ И/ИЛИ ОТКАЗА ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ,
 
30
НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМИ СЛУЧАЯМИ), НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ДАЖЕ ЕСЛИ ТАКОЙ
 
31
ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ И ПОТЕРЬ.
32
32
 
33
33
Redistribution and use in source and binary forms, with or without modification,
34
34
are permitted provided that the following conditions are met:
76
76
 
77
77
extern int move;
78
78
extern Handle OrtMove;
79
 
void CopyMove(Word8* newpmasp,Word8* oldpmasp,int newbytewide,int oldbytewide,int num_str,int move);
80
 
void MasCopy(Word8* oldpmasp,Word8* pmasp,int oldbytewide,int num_str);
81
 
void* MyMemAlloc(Word32 size);
 
79
void CopyMove(uchar* newpmasp,uchar* oldpmasp,int newbytewide,int oldbytewide,int num_str,int move);
 
80
void MasCopy(uchar* oldpmasp,uchar* pmasp,int oldbytewide,int num_str);
 
81
void* MyMemAlloc(uint32_t size);
82
82
void MyMemDelete(void* mem);
83
83
void *  MyMemLock(void* mem);
84
84
void MyMemUnLock(void* mem);
85
 
void CleanImage(Word8* pmasp,int bytewide,int num_str,int wide);
 
85
void CleanImage(uchar* pmasp,int bytewide,int num_str,int wide);
86
86
 
87
87
 
88
88
 
91
91
 if(!LDPUMA_Skip(OrtMove))
92
92
         return TRUE;
93
93
 
94
 
// LDPUMA_ConsoleN("�������������� ���������");
 
94
// LDPUMA_ConsoleN("Активизируется ортосдвиг");
95
95
// int time=clock();
96
96
 Handle hCPage=Image->hCPAGE;
97
97
 PAGEINFO info = {0};
98
 
 Word8 OldImage[CPAGE_MAXNAME];
 
98
 uchar OldImage[CPAGE_MAXNAME];
99
99
 GetPageInfo(hCPage,&info);
100
100
 
101
101
 move=info.SkewLocVerLin2048;
120
120
 }
121
121
 int oldbytewide=olddib->GetLineWidthInBytes();
122
122
 int num_str=olddib->GetLinesNumber ();
123
 
 Word8* pmasp=(Word8*)(olddib->GetPtrToBitFild());
 
123
 uchar* pmasp=(uchar*)(olddib->GetPtrToBitFild());
124
124
 
125
125
 int oldwide=(int)(olddib->GetLineWidth());
126
 
// Word8* oldpmasp=NULL;
127
 
// oldpmasp=new Word8[oldbytewide*num_str];
 
126
// uchar* oldpmasp=NULL;
 
127
// oldpmasp=new uchar[oldbytewide*num_str];
128
128
// if(!oldpmasp)
129
129
// {
130
130
//  olddib->ResetDIB();
160
160
         delete newdib;
161
161
         return TRUE;
162
162
 }
163
 
 Word32 X_DPM=0;
164
 
 Word32 Y_DPM=0;
 
163
 uint32_t X_DPM=0;
 
164
 uint32_t Y_DPM=0;
165
165
 olddib->GetResolutionDPM(&X_DPM,&Y_DPM);
166
166
 newdib->SetResolutionDPI(info.DPIX,info.DPIY);
167
167
 newdib->SetResolutionDPM(X_DPM,Y_DPM);
173
173
         return TRUE;
174
174
 }
175
175
 int newbytewide=newdib->GetLineWidthInBytes();
176
 
 Word8* newpmasp=(Word8*)(newdib->GetPtrToBitFild());
 
176
 uchar* newpmasp=(uchar*)(newdib->GetPtrToBitFild());
177
177
 if(newwide>(int)(newdib->GetLineWidth()))
178
178
 {
179
179
         olddib->ResetDIB();
186
186
 CopyMove(newpmasp,pmasp,newbytewide,oldbytewide,num_str,move);
187
187
 
188
188
 
189
 
 if(CIMAGE_WriteDIB((Word8*)ImageName,lpDIB,0))
 
189
 if(CIMAGE_WriteDIB((uchar*)ImageName,lpDIB,0))
190
190
 {
191
191
         BITMAPINFOHEADER * lp = NULL ;
192
 
         if(CIMAGE_ReadDIB((PWord8)ImageName,(Handle*)&lp,TRUE))
 
192
         if(CIMAGE_ReadDIB((puchar)ImageName,(Handle*)&lp,TRUE))
193
193
         {
194
194
          Handle hwnd = LDPUMA_CreateWindow(NAME_IMAGE_ORTOMOVE,lp);
195
195
          info.Images|=IMAGE_ORTOMOVE;
210
210
     newdib->DestroyDIB();
211
211
     delete newdib;
212
212
 
213
 
 //����� ������� ����������
214
 
         if(!ExtractComponents(FALSE,NULL,(Word8*)PUMA_IMAGE_ORTOMOVE,Image))
 
213
 //снова выделим компоненты
 
214
         if(!ExtractComponents(FALSE,NULL,(uchar*)PUMA_IMAGE_ORTOMOVE,Image))
215
215
                 return FALSE;
216
 
 //������� �����
 
216
 //выделим линии
217
217
         CLINE_Reset();
218
218
         if(!SearchLines(Image))
219
219
                 return FALSE;
220
 
 //����� ���� �������
 
220
 //найдём угол наклона
221
221
         if(!CalcIncline(Image))
222
222
                 return FALSE;
223
223
 }
238
238
}
239
239
 
240
240
 
241
 
void CopyMove(Word8* newpmasp,Word8* oldpmasp,int newbytewide,int oldbytewide,int num_str,int move)
 
241
void CopyMove(uchar* newpmasp,uchar* oldpmasp,int newbytewide,int oldbytewide,int num_str,int move)
242
242
{
243
243
 int max_move=abs((num_str*move)/2048);
244
244
 int spusk=(num_str+max_move-1)/max_move;
349
349
}
350
350
 
351
351
 
352
 
void CleanImage(Word8* pmasp,int bytewide,int num_str,int wide)
 
352
void CleanImage(uchar* pmasp,int bytewide,int num_str,int wide)
353
353
{
354
354
        int realbytewide=((wide+7)>>3);
355
355
        int stop=num_str*bytewide;
399
399
}
400
400
 
401
401
 
402
 
void  MasCopy(Word8* oldpmasp,Word8* pmasp,int oldbytewide,int num_str)
 
402
void  MasCopy(uchar* oldpmasp,uchar* pmasp,int oldbytewide,int num_str)
403
403
{
404
404
        int j=oldbytewide*num_str;
405
405
        for(int i=0;i<j;i++)
406
406
                oldpmasp[i]=pmasp[i];
407
407
}
408
408
 
409
 
void* MyMemAlloc(Word32 size)
 
409
void* MyMemAlloc(uint32_t size)
410
410
{
411
411
        return malloc(size);
412
412
}