Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Office
Calligra
Commits
de1b6ccc
Commit
de1b6ccc
authored
Dec 18, 2013
by
Halla Rempt
Browse files
BUG:328906 Fix scaling method labels for file layer dialog
parent
64883cd1
Changes
8
Hide whitespace changes
Inline
Side-by-side
krita/ui/dialogs/kis_dlg_file_layer.cpp
View file @
de1b6ccc
...
...
@@ -37,6 +37,7 @@
#include <kis_paint_device.h>
#include <kis_transaction.h>
#include <kis_node.h>
#include <kis_file_layer.h>
KisDlgFileLayer
::
KisDlgFileLayer
(
const
QString
&
basePath
,
const
QString
&
name
,
QWidget
*
parent
)
:
KDialog
(
parent
)
...
...
@@ -70,9 +71,17 @@ QString KisDlgFileLayer::layerName() const
return
dlgWidget
.
txtLayerName
->
text
();
}
bool
KisDlgFileLayer
::
scaleToImageResolution
()
const
KisFileLayer
::
ScalingMethod
KisDlgFileLayer
::
scaleToImageResolution
()
const
{
return
dlgWidget
.
chkScaleToImageResolution
->
isChecked
();
if
(
dlgWidget
.
radioDontScale
->
isChecked
())
{
return
KisFileLayer
::
None
;
}
else
if
(
dlgWidget
.
radioScaleToImageSize
->
isChecked
())
{
return
KisFileLayer
::
ToImageSize
;
}
else
{
return
KisFileLayer
::
ToImagePPI
;
}
}
QString
KisDlgFileLayer
::
fileName
()
const
...
...
krita/ui/dialogs/kis_dlg_file_layer.h
View file @
de1b6ccc
...
...
@@ -27,6 +27,8 @@ class QGroupBox;
class
KisConfigWidget
;
class
KLineEdit
;
#include <kis_file_layer.h>
#include "ui_wdgdlgfilelayer.h"
/**
...
...
@@ -48,7 +50,7 @@ public:
KisDlgFileLayer
(
const
QString
&
basePath
,
const
QString
&
name
,
QWidget
*
parent
=
0
);
QString
fileName
()
const
;
QString
layerName
()
const
;
bool
scaleToImageResolution
()
const
;
KisFileLayer
::
ScalingMethod
scaleToImageResolution
()
const
;
protected
slots
:
...
...
krita/ui/forms/wdgdlgfilelayer.ui
View file @
de1b6ccc
...
...
@@ -6,8 +6,8 @@
<rect>
<x>
0
</x>
<y>
0
</y>
<width>
4
4
0
</width>
<height>
1
20
</height>
<width>
4
0
0
</width>
<height>
1
96
</height>
</rect>
</property>
<property
name=
"minimumSize"
>
...
...
@@ -16,10 +16,7 @@
<height>
0
</height>
</size>
</property>
<layout
class=
"QFormLayout"
name=
"formLayout"
>
<property
name=
"fieldGrowthPolicy"
>
<enum>
QFormLayout::ExpandingFieldsGrow
</enum>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout_2"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QLabel"
name=
"label"
>
<property
name=
"text"
>
...
...
@@ -64,13 +61,36 @@
</layout>
</item>
<item
row=
"2"
column=
"0"
colspan=
"2"
>
<widget
class=
"QCheckBox"
name=
"chkScaleToImageResolution"
>
<property
name=
"text"
>
<string>
Scale To Image Resolution
</string>
</property>
<property
name=
"checked"
>
<bool>
true
</bool>
<widget
class=
"QGroupBox"
name=
"grpScalingOptions"
>
<property
name=
"title"
>
<string>
Scaling Options
</string>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout"
>
<item
row=
"0"
column=
"0"
>
<widget
class=
"QRadioButton"
name=
"radioDontScale"
>
<property
name=
"text"
>
<string>
No Scaling
</string>
</property>
<property
name=
"checked"
>
<bool>
true
</bool>
</property>
</widget>
</item>
<item
row=
"1"
column=
"0"
>
<widget
class=
"QRadioButton"
name=
"radioScaleToImageSize"
>
<property
name=
"text"
>
<string>
Scale to Image SIze
</string>
</property>
</widget>
</item>
<item
row=
"2"
column=
"0"
>
<widget
class=
"QRadioButton"
name=
"radioScalePPI"
>
<property
name=
"text"
>
<string>
Adapt to Image Resolution (ppi)
</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
...
...
krita/ui/kis_file_layer.cpp
View file @
de1b6ccc
...
...
@@ -24,16 +24,17 @@
#include "kis_doc2.h"
#include "kis_node_progress_proxy.h"
#include "kis_node_visitor.h"
#include "kis_image.h"
#include <KoProgressUpdater.h>
#include <KoProgressProxy.h>
KisFileLayer
::
KisFileLayer
(
KisImageWSP
image
,
const
QString
&
basePath
,
const
QString
&
filename
,
bool
scaleToImageResolution
,
const
QString
&
name
,
quint8
opacity
)
KisFileLayer
::
KisFileLayer
(
KisImageWSP
image
,
const
QString
&
basePath
,
const
QString
&
filename
,
ScalingMethod
scaleToImageResolution
,
const
QString
&
name
,
quint8
opacity
)
:
KisExternalLayer
(
image
,
name
,
opacity
)
,
m_doc
(
new
KisDoc2
())
,
m_basePath
(
basePath
)
,
m_filename
(
filename
)
,
m_scal
eToImageResolution
(
scaleToImageResolution
)
,
m_scal
ingMethod
(
scaleToImageResolution
)
{
if
(
QFile
::
exists
(
path
()))
{
m_fileWatcher
.
addPath
(
path
());
...
...
@@ -59,7 +60,7 @@ KisFileLayer::KisFileLayer(const KisFileLayer &rhs)
m_fileWatcher
.
addPath
(
path
());
}
m_scal
eToImageResolution
=
rhs
.
m_scaleToImageResolution
;
m_scal
ingMethod
=
rhs
.
m_scalingMethod
;
reloadImage
();
}
...
...
@@ -114,15 +115,9 @@ QString KisFileLayer::path() const
}
}
void
KisFileLayer
::
set
Scal
eToImageResolution
(
bool
scale
)
KisFileLayer
::
Scal
ingMethod
KisFileLayer
::
scalingMethod
()
const
{
m_scaleToImageResolution
=
scale
;
reloadImage
();
}
bool
KisFileLayer
::
scaleToImageResolution
()
const
{
return
m_scaleToImageResolution
;
return
m_scalingMethod
;
}
...
...
@@ -130,18 +125,20 @@ void KisFileLayer::reloadImage()
{
m_doc
->
openUrl
(
path
());
KisImageWSP
importedImage
=
m_doc
->
image
();
m_image
=
importedImage
->
projection
();
if
(
m_scal
eToImageResolution
&&
(
image
()
->
xRes
()
!=
importedImage
->
xRes
()
if
(
m_scal
ingMethod
==
ToImagePPI
&&
(
image
()
->
xRes
()
!=
importedImage
->
xRes
()
||
image
()
->
yRes
()
!=
importedImage
->
yRes
()))
{
qreal
xscale
=
image
()
->
xRes
()
/
importedImage
->
xRes
();
qreal
yscale
=
image
()
->
yRes
()
/
importedImage
->
yRes
();
m_image
=
importedImage
->
projection
();
KisTransformWorker
worker
(
m_image
,
xscale
,
yscale
,
0.0
,
0.0
,
0.0
,
0
,
0
,
0
,
0
,
0
,
KisFilterStrategyRegistry
::
instance
()
->
get
(
"Bicubic"
));
worker
.
run
();
}
else
if
(
m_scalingMethod
==
ToImageSize
)
{
importedImage
->
resizeImage
(
image
()
->
bounds
());
m_image
=
importedImage
->
projection
();
}
setDirty
();
}
...
...
krita/ui/kis_file_layer.h
View file @
de1b6ccc
...
...
@@ -25,6 +25,7 @@
class
KisDoc2
;
class
KisPart2
;
/**
* @brief The KisFileLayer class loads a particular file as a layer into the layer stack.
*/
...
...
@@ -32,7 +33,14 @@ class KisFileLayer : public KisExternalLayer
{
Q_OBJECT
public:
explicit
KisFileLayer
(
KisImageWSP
image
,
const
QString
&
basePath
,
const
QString
&
filename
,
bool
scaleToImageResolution
,
const
QString
&
name
,
quint8
opacity
);
enum
ScalingMethod
{
None
,
ToImageSize
,
ToImagePPI
};
explicit
KisFileLayer
(
KisImageWSP
image
,
const
QString
&
basePath
,
const
QString
&
filename
,
ScalingMethod
scalingMethod
,
const
QString
&
name
,
quint8
opacity
);
~
KisFileLayer
();
KisFileLayer
(
const
KisFileLayer
&
rhs
);
...
...
@@ -47,8 +55,8 @@ public:
void
setFileName
(
const
QString
&
basePath
,
const
QString
&
filename
);
QString
fileName
()
const
;
QString
path
()
const
;
void
setScaleToImageResolution
(
bool
scale
);
bool
scaleToImageResolution
()
const
;
ScalingMethod
scalingMethod
()
const
;
KisNodeSP
clone
()
const
;
bool
allowAsChild
(
KisNodeSP
)
const
;
...
...
@@ -65,7 +73,7 @@ private:
QString
m_basePath
;
QString
m_filename
;
bool
m_scaleToImageResolution
;
ScalingMethod
m_scalingMethod
;
KisPaintDeviceSP
m_image
;
...
...
krita/ui/kis_layer_manager.cc
View file @
de1b6ccc
...
...
@@ -874,10 +874,10 @@ void KisLayerManager::addFileLayer(KisNodeSP activeNode)
return
;
}
bool
scaleToImageResolution
=
dlg
.
scaleToImageResolution
();
KisFileLayer
::
ScalingMethod
scalingMethod
=
dlg
.
scaleToImageResolution
();
addLayerCommon
(
activeNode
,
new
KisFileLayer
(
image
,
basePath
,
fileName
,
scal
eToImageResolution
,
name
,
OPACITY_OPAQUE_U8
));
new
KisFileLayer
(
image
,
basePath
,
fileName
,
scal
ingMethod
,
name
,
OPACITY_OPAQUE_U8
));
}
}
...
...
krita/ui/kra/kis_kra_loader.cpp
View file @
de1b6ccc
...
...
@@ -528,10 +528,19 @@ KisNodeSP KisKraLoader::loadFileLayer(const KoXmlElement& element, KisImageWSP i
QString
filename
=
element
.
attribute
(
"source"
,
QString
());
if
(
filename
.
isNull
())
return
0
;
bool
scale
=
(
element
.
attribute
(
"scale"
,
"true"
)
==
"true"
);
int
scalingMethod
=
element
.
attribute
(
"scalingmethod"
,
"-1"
).
toInt
();
if
(
scalingMethod
<
0
)
{
if
(
scale
)
{
scalingMethod
=
KisFileLayer
::
ToImagePPI
;
}
else
{
scalingMethod
=
KisFileLayer
::
None
;
}
}
QString
documentPath
=
m_d
->
document
->
url
().
toLocalFile
();
QFileInfo
info
(
documentPath
);
KisLayer
*
layer
=
new
KisFileLayer
(
image
,
info
.
absolutePath
(),
filename
,
scale
,
name
,
opacity
);
KisLayer
*
layer
=
new
KisFileLayer
(
image
,
info
.
absolutePath
(),
filename
,
(
KisFileLayer
::
ScalingMethod
)
scalingMethod
,
name
,
opacity
);
Q_CHECK_PTR
(
layer
);
return
layer
;
...
...
krita/ui/kra/kis_kra_savexml_visitor.cpp
View file @
de1b6ccc
...
...
@@ -74,12 +74,21 @@ bool KisSaveXmlVisitor::visit(KisExternalLayer * layer)
QDomElement
layerElement
=
m_doc
.
createElement
(
LAYER
);
saveLayer
(
layerElement
,
FILE_LAYER
,
layer
);
QString
path
=
dynamic_cast
<
KisFileLayer
*>
(
layer
)
->
path
();
KisFileLayer
*
fileLayer
=
dynamic_cast
<
KisFileLayer
*>
(
layer
);
QString
path
=
fileLayer
->
path
();
QDir
d
(
QFileInfo
(
m_url
).
absolutePath
());
layerElement
.
setAttribute
(
"source"
,
d
.
relativeFilePath
(
path
));
layerElement
.
setAttribute
(
"scale"
,
dynamic_cast
<
KisFileLayer
*>
(
layer
)
->
scaleToImageResolution
()
?
"true"
:
"false"
);
if
(
fileLayer
->
scalingMethod
()
==
KisFileLayer
::
ToImagePPI
)
{
layerElement
.
setAttribute
(
"scale"
,
"true"
);
}
else
{
layerElement
.
setAttribute
(
"scale"
,
"false"
);
}
layerElement
.
setAttribute
(
"scalingmethod"
,
(
int
)
fileLayer
->
scalingMethod
());
layerElement
.
setAttribute
(
COLORSPACE_NAME
,
layer
->
original
()
->
colorSpace
()
->
id
());
m_elem
.
appendChild
(
layerElement
);
...
...
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