Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
22a9f5c9
Kaydet (Commit)
22a9f5c9
authored
Ock 19, 2016
tarafından
Caolán McNamara
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
never scaling now
Change-Id: Iaa8afb2c642c9108eb1b3be4737b74285d064cf3
üst
d3b0f6bc
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
5 additions
and
256 deletions
+5
-256
fillimage.hxx
basebmp/inc/fillimage.hxx
+0
-63
scaleimage.hxx
basebmp/inc/scaleimage.hxx
+0
-177
bitmapdevice.cxx
basebmp/source/bitmapdevice.cxx
+5
-16
No files found.
basebmp/inc/fillimage.hxx
deleted
100644 → 0
Dosyayı görüntüle @
d3b0f6bc
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_BASEBMP_INC_FILLIMAGE_HXX
#define INCLUDED_BASEBMP_INC_FILLIMAGE_HXX
#include <vigra/tuple.hxx>
#include <vigra/iteratortraits.hxx>
namespace
basebmp
{
template
<
class
DestIterator
,
class
DestAccessor
,
typename
T
>
void
fillImage
(
DestIterator
begin
,
const
DestIterator
&
end
,
DestAccessor
ad
,
const
T
&
fillVal
)
{
const
int
width
(
end
.
x
-
begin
.
x
);
const
int
height
(
end
.
y
-
begin
.
y
);
for
(
int
y
=
0
;
y
<
height
;
++
y
,
++
begin
.
y
)
{
typename
vigra
::
IteratorTraits
<
DestIterator
>::
row_iterator
rowIter
(
begin
.
rowIterator
()
);
const
typename
vigra
::
IteratorTraits
<
DestIterator
>::
row_iterator
rowEnd
(
rowIter
+
width
);
// TODO(P2): Provide specialized span fill methods on the
// iterator/accessor
while
(
rowIter
!=
rowEnd
)
ad
.
set
(
fillVal
,
rowIter
++
);
}
}
template
<
class
DestIterator
,
class
DestAccessor
,
typename
T
>
inline
void
fillImage
(
vigra
::
triple
<
DestIterator
,
DestIterator
,
DestAccessor
>
const
&
src
,
const
T
&
fillVal
)
{
fillImage
(
src
.
first
,
src
.
second
,
src
.
third
,
fillVal
);
}
}
// namespace basebmp
#endif
/* INCLUDED_BASEBMP_INC_FILLIMAGE_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
basebmp/inc/scaleimage.hxx
deleted
100644 → 0
Dosyayı görüntüle @
d3b0f6bc
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX
#define INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX
#include <osl/diagnose.h>
#include <vigra/tuple.hxx>
#include <vigra/copyimage.hxx>
#include <vigra/basicimage.hxx>
#include <vigra/iteratortraits.hxx>
namespace
basebmp
{
template
<
class
SourceIter
,
class
SourceAcc
,
class
DestIter
,
class
DestAcc
>
void
scaleLine
(
SourceIter
s_begin
,
SourceIter
s_end
,
SourceAcc
s_acc
,
DestIter
d_begin
,
DestIter
d_end
,
DestAcc
d_acc
)
{
const
int
src_width
=
s_end
-
s_begin
;
const
int
dest_width
=
d_end
-
d_begin
;
OSL_ASSERT
(
src_width
>
0
&&
dest_width
>
0
);
if
(
src_width
>=
dest_width
)
{
// shrink
int
rem
=
0
;
while
(
s_begin
!=
s_end
)
{
if
(
rem
>=
0
)
{
d_acc
.
set
(
s_acc
(
s_begin
),
d_begin
);
rem
-=
src_width
;
++
d_begin
;
}
rem
+=
dest_width
;
++
s_begin
;
}
}
else
{
// enlarge
int
rem
=
-
dest_width
;
while
(
d_begin
!=
d_end
)
{
if
(
rem
>=
0
)
{
rem
-=
dest_width
;
++
s_begin
;
}
d_acc
.
set
(
s_acc
(
s_begin
),
d_begin
);
rem
+=
src_width
;
++
d_begin
;
}
}
}
/** Scale an image using zero order interpolation (pixel replication)
Source and destination range must be at least one pixel wide and
high.
@param s_begin
Start iterator for source image
@param s_end
End iterator for source image
@param s_acc
Source accessor
@param d_begin
Start iterator for destination image
@param d_end
End iterator for destination image
@param d_acc
Destination accessor
*/
template
<
class
SourceIter
,
class
SourceAcc
,
class
DestIter
,
class
DestAcc
>
void
scaleImage
(
SourceIter
s_begin
,
SourceIter
s_end
,
SourceAcc
s_acc
,
DestIter
d_begin
,
DestIter
d_end
,
DestAcc
d_acc
)
{
const
int
src_width
(
s_end
.
x
-
s_begin
.
x
);
const
int
src_height
(
s_end
.
y
-
s_begin
.
y
);
const
int
dest_width
(
d_end
.
x
-
d_begin
.
x
);
const
int
dest_height
(
d_end
.
y
-
d_begin
.
y
);
if
(
src_width
==
dest_width
&&
src_height
==
dest_height
)
{
// no scaling involved, can simply copy
vigra
::
copyImage
(
s_begin
,
s_end
,
s_acc
,
d_begin
,
d_acc
);
return
;
}
typedef
vigra
::
BasicImage
<
typename
SourceAcc
::
value_type
>
TmpImage
;
typedef
typename
TmpImage
::
traverser
TmpImageIter
;
TmpImage
tmp_image
(
src_width
,
dest_height
);
TmpImageIter
t_begin
=
tmp_image
.
upperLeft
();
// scale in y direction
for
(
int
x
=
0
;
x
<
src_width
;
++
x
,
++
s_begin
.
x
,
++
t_begin
.
x
)
{
typename
SourceIter
::
column_iterator
s_cbegin
=
s_begin
.
columnIterator
();
typename
TmpImageIter
::
column_iterator
t_cbegin
=
t_begin
.
columnIterator
();
scaleLine
(
s_cbegin
,
s_cbegin
+
src_height
,
s_acc
,
t_cbegin
,
t_cbegin
+
dest_height
,
tmp_image
.
accessor
());
}
t_begin
=
tmp_image
.
upperLeft
();
// scale in x direction
for
(
int
y
=
0
;
y
<
dest_height
;
++
y
,
++
d_begin
.
y
,
++
t_begin
.
y
)
{
typename
DestIter
::
row_iterator
d_rbegin
=
d_begin
.
rowIterator
();
typename
TmpImageIter
::
row_iterator
t_rbegin
=
t_begin
.
rowIterator
();
scaleLine
(
t_rbegin
,
t_rbegin
+
src_width
,
tmp_image
.
accessor
(),
d_rbegin
,
d_rbegin
+
dest_width
,
d_acc
);
}
}
/** Scale an image, range tuple version
*/
template
<
class
SourceIter
,
class
SourceAcc
,
class
DestIter
,
class
DestAcc
>
inline
void
scaleImage
(
vigra
::
triple
<
SourceIter
,
SourceIter
,
SourceAcc
>
const
&
src
,
vigra
::
triple
<
DestIter
,
DestIter
,
DestAcc
>
const
&
dst
)
{
scaleImage
(
src
.
first
,
src
.
second
,
src
.
third
,
dst
.
first
,
dst
.
second
,
dst
.
third
);
}
}
#endif
/* INCLUDED_BASEBMP_INC_SCALEIMAGE_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
basebmp/source/bitmapdevice.cxx
Dosyayı görüntüle @
22a9f5c9
...
...
@@ -42,8 +42,7 @@
#include <rgb24pixelformats.hxx>
#include <basebmp/scanlineformats.hxx>
#include <fillimage.hxx>
#include <scaleimage.hxx>
#include <vigra/copyimage.hxx>
#include <genericcolorimageaccessor.hxx>
#include <tools.hxx>
...
...
@@ -242,13 +241,8 @@ namespace
std
::
shared_ptr
<
BitmapRenderer
>
pSrcBmp
(
getCompatibleBitmap
(
rSrcBitmap
)
);
OSL_ASSERT
(
pSrcBmp
);
scaleImage
(
srcIterRange
(
pSrcBmp
->
maBegin
,
pSrcBmp
->
maRawAccessor
,
aRect
),
destIterRange
(
begin
,
acc
,
aRect
));
vigra
::
copyImage
(
pSrcBmp
->
maBegin
,
pSrcBmp
->
maBegin
+
bottomRight
(
aRect
),
pSrcBmp
->
maRawAccessor
,
begin
,
acc
);
}
template
<
typename
Iterator
,
typename
Acc
>
static
...
...
@@ -261,13 +255,8 @@ namespace
GenericColorImageAccessor
aSrcAcc
(
rSrcBitmap
);
scaleImage
(
srcIterRange
(
vigra
::
Diff2D
(),
aSrcAcc
,
aRect
),
destIterRange
(
begin
,
acc
,
aRect
));
vigra
::
copyImage
(
vigra
::
Diff2D
(),
vigra
::
Diff2D
()
+
bottomRight
(
aRect
),
aSrcAcc
,
begin
,
acc
);
}
void
implDrawBitmapDirect
(
const
BitmapDeviceSharedPtr
&
rSrcBitmap
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment