-Added ability to use cubic interpolation on image resize (little more quality on non-po2 resizing)
-Added ability for exporter to shrink images to non-integer values. Helps if you want to convert your game artwork from 1080->720 or similar
This commit is contained in:
parent
0840303a9c
commit
e055247b17
107
core/image.cpp
107
core/image.cpp
@ -400,6 +400,102 @@ Image::Format Image::get_format() const{
|
|||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static double _bicubic_interp_kernel( double x ) {
|
||||||
|
|
||||||
|
x = ABS(x);
|
||||||
|
|
||||||
|
double bc = 0;
|
||||||
|
|
||||||
|
if ( x <= 1 )
|
||||||
|
bc = ( 1.5 * x - 2.5 ) * x * x + 1;
|
||||||
|
else if ( x < 2 )
|
||||||
|
bc = ( ( -0.5 * x + 2.5 ) * x - 4 ) * x + 2;
|
||||||
|
|
||||||
|
|
||||||
|
return bc;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<int CC>
|
||||||
|
static void _scale_cubic(const uint8_t* p_src, uint8_t* p_dst, uint32_t p_src_width, uint32_t p_src_height, uint32_t p_dst_width, uint32_t p_dst_height) {
|
||||||
|
|
||||||
|
|
||||||
|
// get source image size
|
||||||
|
int width = p_src_width;
|
||||||
|
int height = p_src_height;
|
||||||
|
double xfac = (double) width / p_dst_width;
|
||||||
|
double yfac = (double) height / p_dst_height;
|
||||||
|
// coordinates of source points and cooefficiens
|
||||||
|
double ox, oy, dx, dy, k1, k2;
|
||||||
|
int ox1, oy1, ox2, oy2;
|
||||||
|
// destination pixel values
|
||||||
|
// width and height decreased by 1
|
||||||
|
int ymax = height - 1;
|
||||||
|
int xmax = width - 1;
|
||||||
|
// temporary pointer
|
||||||
|
|
||||||
|
for ( int y = 0; y < p_dst_height; y++ ) {
|
||||||
|
// Y coordinates
|
||||||
|
oy = (double) y * yfac - 0.5f;
|
||||||
|
oy1 = (int) oy;
|
||||||
|
dy = oy - (double) oy1;
|
||||||
|
|
||||||
|
for ( int x = 0; x < p_dst_width; x++ ) {
|
||||||
|
// X coordinates
|
||||||
|
ox = (double) x * xfac - 0.5f;
|
||||||
|
ox1 = (int) ox;
|
||||||
|
dx = ox - (double) ox1;
|
||||||
|
|
||||||
|
// initial pixel value
|
||||||
|
|
||||||
|
uint8_t *dst=p_dst + (y*p_dst_width+x)*CC;
|
||||||
|
|
||||||
|
double color[CC];
|
||||||
|
for(int i=0;i<CC;i++) {
|
||||||
|
color[i]=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for ( int n = -1; n < 3; n++ ) {
|
||||||
|
// get Y cooefficient
|
||||||
|
k1 = _bicubic_interp_kernel( dy - (double) n );
|
||||||
|
|
||||||
|
oy2 = oy1 + n;
|
||||||
|
if ( oy2 < 0 )
|
||||||
|
oy2 = 0;
|
||||||
|
if ( oy2 > ymax )
|
||||||
|
oy2 = ymax;
|
||||||
|
|
||||||
|
for ( int m = -1; m < 3; m++ ) {
|
||||||
|
// get X cooefficient
|
||||||
|
k2 = k1 * _bicubic_interp_kernel( (double) m - dx );
|
||||||
|
|
||||||
|
ox2 = ox1 + m;
|
||||||
|
if ( ox2 < 0 )
|
||||||
|
ox2 = 0;
|
||||||
|
if ( ox2 > xmax )
|
||||||
|
ox2 = xmax;
|
||||||
|
|
||||||
|
// get pixel of original image
|
||||||
|
const uint8_t *p = p_src + (oy2 * p_src_width + ox2)*CC;
|
||||||
|
|
||||||
|
for(int i=0;i<CC;i++) {
|
||||||
|
|
||||||
|
color[i]+=p[i]*k2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<CC;i++) {
|
||||||
|
dst[i]=CLAMP(Math::fast_ftoi(color[i]),0,255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<int CC>
|
template<int CC>
|
||||||
static void _scale_bilinear(const uint8_t* p_src, uint8_t* p_dst, uint32_t p_src_width, uint32_t p_src_height, uint32_t p_dst_width, uint32_t p_dst_height) {
|
static void _scale_bilinear(const uint8_t* p_src, uint8_t* p_dst, uint32_t p_src_width, uint32_t p_src_height, uint32_t p_dst_width, uint32_t p_dst_height) {
|
||||||
|
|
||||||
@ -559,6 +655,17 @@ void Image::resize( int p_width, int p_height, Interpolation p_interpolation ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
case INTERPOLATE_CUBIC: {
|
||||||
|
|
||||||
|
switch(get_format_pixel_size(format)) {
|
||||||
|
case 1: _scale_cubic<1>(r_ptr,w_ptr,width,height,p_width,p_height); break;
|
||||||
|
case 2: _scale_cubic<2>(r_ptr,w_ptr,width,height,p_width,p_height); break;
|
||||||
|
case 3: _scale_cubic<3>(r_ptr,w_ptr,width,height,p_width,p_height); break;
|
||||||
|
case 4: _scale_cubic<4>(r_ptr,w_ptr,width,height,p_width,p_height); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ public:
|
|||||||
|
|
||||||
INTERPOLATE_NEAREST,
|
INTERPOLATE_NEAREST,
|
||||||
INTERPOLATE_BILINEAR,
|
INTERPOLATE_BILINEAR,
|
||||||
|
INTERPOLATE_CUBIC,
|
||||||
/* INTERPOLATE GAUSS */
|
/* INTERPOLATE GAUSS */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,376 +1,376 @@
|
|||||||
#
|
#
|
||||||
# tested on | Windows native | Linux cross-compilation
|
# tested on | Windows native | Linux cross-compilation
|
||||||
# ------------------------+-------------------+---------------------------
|
# ------------------------+-------------------+---------------------------
|
||||||
# MSVS C++ 2010 Express | WORKS | n/a
|
# MSVS C++ 2010 Express | WORKS | n/a
|
||||||
# Mingw-w64 | WORKS | WORKS
|
# Mingw-w64 | WORKS | WORKS
|
||||||
# Mingw-w32 | WORKS | WORKS
|
# Mingw-w32 | WORKS | WORKS
|
||||||
# MinGW | WORKS | untested
|
# MinGW | WORKS | untested
|
||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
# Notes about MSVS C++ :
|
# Notes about MSVS C++ :
|
||||||
#
|
#
|
||||||
# - MSVC2010-Express compiles to 32bits only.
|
# - MSVC2010-Express compiles to 32bits only.
|
||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
# Notes about Mingw-w64 and Mingw-w32 under Windows :
|
# Notes about Mingw-w64 and Mingw-w32 under Windows :
|
||||||
#
|
#
|
||||||
# - both can be installed using the official installer :
|
# - both can be installed using the official installer :
|
||||||
# http://mingw-w64.sourceforge.net/download.php#mingw-builds
|
# http://mingw-w64.sourceforge.net/download.php#mingw-builds
|
||||||
#
|
#
|
||||||
# - if you want to compile both 32bits and 64bits, don't forget to
|
# - if you want to compile both 32bits and 64bits, don't forget to
|
||||||
# run the installer twice to install them both.
|
# run the installer twice to install them both.
|
||||||
#
|
#
|
||||||
# - install them into a path that does not contain spaces
|
# - install them into a path that does not contain spaces
|
||||||
# ( example : "C:/Mingw-w32", "C:/Mingw-w64" )
|
# ( example : "C:/Mingw-w32", "C:/Mingw-w64" )
|
||||||
#
|
#
|
||||||
# - if you want to compile faster using the "-j" option, don't forget
|
# - if you want to compile faster using the "-j" option, don't forget
|
||||||
# to install the appropriate version of the Pywin32 python extension
|
# to install the appropriate version of the Pywin32 python extension
|
||||||
# available from : http://sourceforge.net/projects/pywin32/files/
|
# available from : http://sourceforge.net/projects/pywin32/files/
|
||||||
#
|
#
|
||||||
# - before running scons, you must add into the environment path
|
# - before running scons, you must add into the environment path
|
||||||
# the path to the "/bin" directory of the Mingw version you want
|
# the path to the "/bin" directory of the Mingw version you want
|
||||||
# to use :
|
# to use :
|
||||||
#
|
#
|
||||||
# set PATH=C:/Mingw-w32/bin;%PATH%
|
# set PATH=C:/Mingw-w32/bin;%PATH%
|
||||||
#
|
#
|
||||||
# - then, scons should be able to detect gcc.
|
# - then, scons should be able to detect gcc.
|
||||||
# - Mingw-w32 only compiles 32bits.
|
# - Mingw-w32 only compiles 32bits.
|
||||||
# - Mingw-w64 only compiles 64bits.
|
# - Mingw-w64 only compiles 64bits.
|
||||||
#
|
#
|
||||||
# - it is possible to add them both at the same time into the PATH env,
|
# - it is possible to add them both at the same time into the PATH env,
|
||||||
# if you also define the MINGW32_PREFIX and MINGW64_PREFIX environment
|
# if you also define the MINGW32_PREFIX and MINGW64_PREFIX environment
|
||||||
# variables.
|
# variables.
|
||||||
# For instance, you could store that set of commands into a .bat script
|
# For instance, you could store that set of commands into a .bat script
|
||||||
# that you would run just before scons :
|
# that you would run just before scons :
|
||||||
#
|
#
|
||||||
# set PATH=C:\mingw-w32\bin;%PATH%
|
# set PATH=C:\mingw-w32\bin;%PATH%
|
||||||
# set PATH=C:\mingw-w64\bin;%PATH%
|
# set PATH=C:\mingw-w64\bin;%PATH%
|
||||||
# set MINGW32_PREFIX=C:\mingw-w32\bin\
|
# set MINGW32_PREFIX=C:\mingw-w32\bin\
|
||||||
# set MINGW64_PREFIX=C:\mingw-w64\bin\
|
# set MINGW64_PREFIX=C:\mingw-w64\bin\
|
||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
# Notes about Mingw, Mingw-w64 and Mingw-w32 under Linux :
|
# Notes about Mingw, Mingw-w64 and Mingw-w32 under Linux :
|
||||||
#
|
#
|
||||||
# - default toolchain prefixes are :
|
# - default toolchain prefixes are :
|
||||||
# "i586-mingw32msvc-" for MinGW
|
# "i586-mingw32msvc-" for MinGW
|
||||||
# "i686-w64-mingw32-" for Mingw-w32
|
# "i686-w64-mingw32-" for Mingw-w32
|
||||||
# "x86_64-w64-mingw32-" for Mingw-w64
|
# "x86_64-w64-mingw32-" for Mingw-w64
|
||||||
#
|
#
|
||||||
# - if both MinGW and Mingw-w32 are installed on your system
|
# - if both MinGW and Mingw-w32 are installed on your system
|
||||||
# Mingw-w32 should take the priority over MinGW.
|
# Mingw-w32 should take the priority over MinGW.
|
||||||
#
|
#
|
||||||
# - it is possible to manually override prefixes by defining
|
# - it is possible to manually override prefixes by defining
|
||||||
# the MINGW32_PREFIX and MINGW64_PREFIX environment variables.
|
# the MINGW32_PREFIX and MINGW64_PREFIX environment variables.
|
||||||
#
|
#
|
||||||
#####
|
#####
|
||||||
# Notes about Mingw under Windows :
|
# Notes about Mingw under Windows :
|
||||||
#
|
#
|
||||||
# - this is the MinGW version from http://mingw.org/
|
# - this is the MinGW version from http://mingw.org/
|
||||||
# - install it into a path that does not contain spaces
|
# - install it into a path that does not contain spaces
|
||||||
# ( example : "C:/MinGW" )
|
# ( example : "C:/MinGW" )
|
||||||
# - several DirectX headers might be missing. You can copy them into
|
# - several DirectX headers might be missing. You can copy them into
|
||||||
# the C:/MinGW/include" directory from this page :
|
# the C:/MinGW/include" directory from this page :
|
||||||
# https://code.google.com/p/mingw-lib/source/browse/trunk/working/avcodec_to_widget_5/directx_include/
|
# https://code.google.com/p/mingw-lib/source/browse/trunk/working/avcodec_to_widget_5/directx_include/
|
||||||
# - before running scons, add the path to the "/bin" directory :
|
# - before running scons, add the path to the "/bin" directory :
|
||||||
# set PATH=C:/MinGW/bin;%PATH%
|
# set PATH=C:/MinGW/bin;%PATH%
|
||||||
# - scons should be able to detect gcc.
|
# - scons should be able to detect gcc.
|
||||||
#
|
#
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# TODO :
|
# TODO :
|
||||||
#
|
#
|
||||||
# - finish to cleanup this script to remove all the remains of previous hacks and workarounds
|
# - finish to cleanup this script to remove all the remains of previous hacks and workarounds
|
||||||
# - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express
|
# - make it work with the Windows7 SDK that is supposed to enable 64bits compilation for MSVC2010-Express
|
||||||
# - confirm it works well with other Visual Studio versions.
|
# - confirm it works well with other Visual Studio versions.
|
||||||
# - update the wiki about the pywin32 extension required for the "-j" option under Windows.
|
# - update the wiki about the pywin32 extension required for the "-j" option under Windows.
|
||||||
# - update the wiki to document MINGW32_PREFIX and MINGW64_PREFIX
|
# - update the wiki to document MINGW32_PREFIX and MINGW64_PREFIX
|
||||||
#
|
#
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
def is_active():
|
def is_active():
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get_name():
|
def get_name():
|
||||||
return "Windows"
|
return "Windows"
|
||||||
|
|
||||||
def can_build():
|
def can_build():
|
||||||
|
|
||||||
if (os.name=="nt"):
|
if (os.name=="nt"):
|
||||||
#building natively on windows!
|
#building natively on windows!
|
||||||
if (os.getenv("VSINSTALLDIR")):
|
if (os.getenv("VSINSTALLDIR")):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
print("\nMSVC not detected, attempting Mingw.")
|
print("\nMSVC not detected, attempting Mingw.")
|
||||||
mingw32 = ""
|
mingw32 = ""
|
||||||
mingw64 = ""
|
mingw64 = ""
|
||||||
if ( os.getenv("MINGW32_PREFIX") ) :
|
if ( os.getenv("MINGW32_PREFIX") ) :
|
||||||
mingw32 = os.getenv("MINGW32_PREFIX")
|
mingw32 = os.getenv("MINGW32_PREFIX")
|
||||||
if ( os.getenv("MINGW64_PREFIX") ) :
|
if ( os.getenv("MINGW64_PREFIX") ) :
|
||||||
mingw64 = os.getenv("MINGW64_PREFIX")
|
mingw64 = os.getenv("MINGW64_PREFIX")
|
||||||
|
|
||||||
test = "gcc --version > NUL 2>&1"
|
test = "gcc --version > NUL 2>&1"
|
||||||
if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 :
|
if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 :
|
||||||
print("- could not detect gcc.")
|
print("- could not detect gcc.")
|
||||||
print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n")
|
print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n")
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
print("- gcc detected.")
|
print("- gcc detected.")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if (os.name=="posix"):
|
if (os.name=="posix"):
|
||||||
|
|
||||||
mingw = "i586-mingw32msvc-"
|
mingw = "i586-mingw32msvc-"
|
||||||
mingw64 = "x86_64-w64-mingw32-"
|
mingw64 = "x86_64-w64-mingw32-"
|
||||||
mingw32 = "i686-w64-mingw32-"
|
mingw32 = "i686-w64-mingw32-"
|
||||||
|
|
||||||
if (os.getenv("MINGW32_PREFIX")):
|
if (os.getenv("MINGW32_PREFIX")):
|
||||||
mingw32=os.getenv("MINGW32_PREFIX")
|
mingw32=os.getenv("MINGW32_PREFIX")
|
||||||
mingw = mingw32
|
mingw = mingw32
|
||||||
if (os.getenv("MINGW64_PREFIX")):
|
if (os.getenv("MINGW64_PREFIX")):
|
||||||
mingw64=os.getenv("MINGW64_PREFIX")
|
mingw64=os.getenv("MINGW64_PREFIX")
|
||||||
|
|
||||||
test = "gcc --version &>/dev/null"
|
test = "gcc --version &>/dev/null"
|
||||||
if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0):
|
if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_opts():
|
def get_opts():
|
||||||
|
|
||||||
mingw=""
|
mingw=""
|
||||||
mingw32=""
|
mingw32=""
|
||||||
mingw64=""
|
mingw64=""
|
||||||
if ( os.name == "posix" ):
|
if ( os.name == "posix" ):
|
||||||
mingw = "i586-mingw32msvc-"
|
mingw = "i586-mingw32msvc-"
|
||||||
mingw32 = "i686-w64-mingw32-"
|
mingw32 = "i686-w64-mingw32-"
|
||||||
mingw64 = "x86_64-w64-mingw32-"
|
mingw64 = "x86_64-w64-mingw32-"
|
||||||
|
|
||||||
if os.system(mingw32+"gcc --version &>/dev/null") != 0 :
|
if os.system(mingw32+"gcc --version &>/dev/null") != 0 :
|
||||||
mingw32 = mingw
|
mingw32 = mingw
|
||||||
|
|
||||||
if (os.getenv("MINGW32_PREFIX")):
|
if (os.getenv("MINGW32_PREFIX")):
|
||||||
mingw32=os.getenv("MINGW32_PREFIX")
|
mingw32=os.getenv("MINGW32_PREFIX")
|
||||||
mingw = mingw32
|
mingw = mingw32
|
||||||
if (os.getenv("MINGW64_PREFIX")):
|
if (os.getenv("MINGW64_PREFIX")):
|
||||||
mingw64=os.getenv("MINGW64_PREFIX")
|
mingw64=os.getenv("MINGW64_PREFIX")
|
||||||
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
('mingw_prefix','Mingw Prefix',mingw32),
|
('mingw_prefix','Mingw Prefix',mingw32),
|
||||||
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
|
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_flags():
|
def get_flags():
|
||||||
|
|
||||||
return [
|
return [
|
||||||
('freetype','builtin'), #use builtin freetype
|
('freetype','builtin'), #use builtin freetype
|
||||||
('openssl','builtin'), #use builtin openssl
|
('openssl','builtin'), #use builtin openssl
|
||||||
('theora','no'),
|
('theora','no'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def configure(env):
|
def configure(env):
|
||||||
|
|
||||||
env.Append(CPPPATH=['#platform/windows'])
|
env.Append(CPPPATH=['#platform/windows'])
|
||||||
|
|
||||||
|
|
||||||
if (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None):
|
if (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None):
|
||||||
#build using visual studio
|
#build using visual studio
|
||||||
env['ENV']['TMP'] = os.environ['TMP']
|
env['ENV']['TMP'] = os.environ['TMP']
|
||||||
env.Append(CPPPATH=['#platform/windows/include'])
|
env.Append(CPPPATH=['#platform/windows/include'])
|
||||||
env.Append(LIBPATH=['#platform/windows/lib'])
|
env.Append(LIBPATH=['#platform/windows/lib'])
|
||||||
|
|
||||||
if (env["freetype"]!="no"):
|
if (env["freetype"]!="no"):
|
||||||
env.Append(CCFLAGS=['/DFREETYPE_ENABLED'])
|
env.Append(CCFLAGS=['/DFREETYPE_ENABLED'])
|
||||||
env.Append(CPPPATH=['#tools/freetype'])
|
env.Append(CPPPATH=['#tools/freetype'])
|
||||||
env.Append(CPPPATH=['#tools/freetype/freetype/include'])
|
env.Append(CPPPATH=['#tools/freetype/freetype/include'])
|
||||||
|
|
||||||
if (env["target"]=="release"):
|
if (env["target"]=="release"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/O2'])
|
env.Append(CCFLAGS=['/O2'])
|
||||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
||||||
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
|
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
|
||||||
|
|
||||||
elif (env["target"]=="release_debug"):
|
elif (env["target"]=="release_debug"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED'])
|
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED'])
|
||||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||||
elif (env["target"]=="debug_release"):
|
elif (env["target"]=="debug_release"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/Zi','/Od'])
|
env.Append(CCFLAGS=['/Zi','/Od'])
|
||||||
env.Append(LINKFLAGS=['/DEBUG'])
|
env.Append(LINKFLAGS=['/DEBUG'])
|
||||||
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
|
||||||
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
|
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
|
||||||
|
|
||||||
elif (env["target"]=="debug"):
|
elif (env["target"]=="debug"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED','/DD3D_DEBUG_INFO','/Od'])
|
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED','/DD3D_DEBUG_INFO','/Od'])
|
||||||
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
|
||||||
env.Append(LINKFLAGS=['/DEBUG'])
|
env.Append(LINKFLAGS=['/DEBUG'])
|
||||||
|
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo'])
|
env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo'])
|
||||||
env.Append(CXXFLAGS=['/TP'])
|
env.Append(CXXFLAGS=['/TP'])
|
||||||
env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
|
env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
|
||||||
env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
|
env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
|
||||||
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
|
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
|
||||||
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
|
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
|
||||||
env.Append(CCFLAGS=['/DWIN32'])
|
env.Append(CCFLAGS=['/DWIN32'])
|
||||||
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
|
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/DGLES2_ENABLED'])
|
env.Append(CCFLAGS=['/DGLES2_ENABLED'])
|
||||||
|
|
||||||
env.Append(CCFLAGS=['/DGLEW_ENABLED'])
|
env.Append(CCFLAGS=['/DGLEW_ENABLED'])
|
||||||
LIBS=['winmm','opengl32','dsound','kernel32','ole32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32']
|
LIBS=['winmm','opengl32','dsound','kernel32','ole32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32']
|
||||||
env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS])
|
env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS])
|
||||||
|
|
||||||
env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"])
|
env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"])
|
||||||
if (os.getenv("DXSDK_DIR")):
|
if (os.getenv("DXSDK_DIR")):
|
||||||
DIRECTX_PATH=os.getenv("DXSDK_DIR")
|
DIRECTX_PATH=os.getenv("DXSDK_DIR")
|
||||||
else:
|
else:
|
||||||
DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)"
|
DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)"
|
||||||
|
|
||||||
if (os.getenv("VCINSTALLDIR")):
|
if (os.getenv("VCINSTALLDIR")):
|
||||||
VC_PATH=os.getenv("VCINSTALLDIR")
|
VC_PATH=os.getenv("VCINSTALLDIR")
|
||||||
else:
|
else:
|
||||||
VC_PATH=""
|
VC_PATH=""
|
||||||
|
|
||||||
env.Append(CCFLAGS=["/I" + p for p in os.getenv("INCLUDE").split(";")])
|
env.Append(CCFLAGS=["/I" + p for p in os.getenv("INCLUDE").split(";")])
|
||||||
env.Append(LIBPATH=[p for p in os.getenv("LIB").split(";")])
|
env.Append(LIBPATH=[p for p in os.getenv("LIB").split(";")])
|
||||||
env.Append(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
|
env.Append(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
|
||||||
env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
|
env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
|
||||||
env['ENV'] = os.environ;
|
env['ENV'] = os.environ;
|
||||||
else:
|
else:
|
||||||
|
|
||||||
# Workaround for MinGW. See:
|
# Workaround for MinGW. See:
|
||||||
# http://www.scons.org/wiki/LongCmdLinesOnWin32
|
# http://www.scons.org/wiki/LongCmdLinesOnWin32
|
||||||
if (os.name=="nt"):
|
if (os.name=="nt"):
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
def mySubProcess(cmdline,env):
|
def mySubProcess(cmdline,env):
|
||||||
#print "SPAWNED : " + cmdline
|
#print "SPAWNED : " + cmdline
|
||||||
startupinfo = subprocess.STARTUPINFO()
|
startupinfo = subprocess.STARTUPINFO()
|
||||||
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
|
||||||
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
|
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
|
||||||
data, err = proc.communicate()
|
data, err = proc.communicate()
|
||||||
rv = proc.wait()
|
rv = proc.wait()
|
||||||
if rv:
|
if rv:
|
||||||
print "====="
|
print "====="
|
||||||
print err
|
print err
|
||||||
print "====="
|
print "====="
|
||||||
return rv
|
return rv
|
||||||
|
|
||||||
def mySpawn(sh, escape, cmd, args, env):
|
def mySpawn(sh, escape, cmd, args, env):
|
||||||
|
|
||||||
newargs = ' '.join(args[1:])
|
newargs = ' '.join(args[1:])
|
||||||
cmdline = cmd + " " + newargs
|
cmdline = cmd + " " + newargs
|
||||||
|
|
||||||
rv=0
|
rv=0
|
||||||
if len(cmdline) > 32000 and cmd.endswith("ar") :
|
if len(cmdline) > 32000 and cmd.endswith("ar") :
|
||||||
cmdline = cmd + " " + args[1] + " " + args[2] + " "
|
cmdline = cmd + " " + args[1] + " " + args[2] + " "
|
||||||
for i in range(3,len(args)) :
|
for i in range(3,len(args)) :
|
||||||
rv = mySubProcess( cmdline + args[i], env )
|
rv = mySubProcess( cmdline + args[i], env )
|
||||||
if rv :
|
if rv :
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
rv = mySubProcess( cmdline, env )
|
rv = mySubProcess( cmdline, env )
|
||||||
|
|
||||||
return rv
|
return rv
|
||||||
|
|
||||||
env['SPAWN'] = mySpawn
|
env['SPAWN'] = mySpawn
|
||||||
|
|
||||||
#build using mingw
|
#build using mingw
|
||||||
if (os.name=="nt"):
|
if (os.name=="nt"):
|
||||||
env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes
|
env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes
|
||||||
else:
|
else:
|
||||||
env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation
|
env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation
|
||||||
|
|
||||||
mingw_prefix=""
|
mingw_prefix=""
|
||||||
|
|
||||||
if (env["bits"]=="default"):
|
if (env["bits"]=="default"):
|
||||||
env["bits"]="32"
|
env["bits"]="32"
|
||||||
|
|
||||||
if (env["bits"]=="32"):
|
if (env["bits"]=="32"):
|
||||||
env.Append(LINKFLAGS=['-static'])
|
env.Append(LINKFLAGS=['-static'])
|
||||||
env.Append(LINKFLAGS=['-static-libgcc'])
|
env.Append(LINKFLAGS=['-static-libgcc'])
|
||||||
env.Append(LINKFLAGS=['-static-libstdc++'])
|
env.Append(LINKFLAGS=['-static-libstdc++'])
|
||||||
mingw_prefix=env["mingw_prefix"];
|
mingw_prefix=env["mingw_prefix"];
|
||||||
else:
|
else:
|
||||||
env.Append(LINKFLAGS=['-static'])
|
env.Append(LINKFLAGS=['-static'])
|
||||||
mingw_prefix=env["mingw_prefix_64"];
|
mingw_prefix=env["mingw_prefix_64"];
|
||||||
|
|
||||||
nulstr=""
|
nulstr=""
|
||||||
|
|
||||||
if (os.name=="posix"):
|
if (os.name=="posix"):
|
||||||
nulstr=">/dev/null"
|
nulstr=">/dev/null"
|
||||||
else:
|
else:
|
||||||
nulstr=">nul"
|
nulstr=">nul"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
|
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
|
||||||
# #not really super consistent but..
|
# #not really super consistent but..
|
||||||
# print("Can't find Windows compiler: "+mingw_prefix)
|
# print("Can't find Windows compiler: "+mingw_prefix)
|
||||||
# sys.exit(255)
|
# sys.exit(255)
|
||||||
|
|
||||||
if (env["target"]=="release"):
|
if (env["target"]=="release"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['-O3','-ffast-math','-fomit-frame-pointer','-msse2'])
|
env.Append(CCFLAGS=['-O3','-ffast-math','-fomit-frame-pointer','-msse2'])
|
||||||
env.Append(LINKFLAGS=['-Wl,--subsystem,windows'])
|
env.Append(LINKFLAGS=['-Wl,--subsystem,windows'])
|
||||||
|
|
||||||
elif (env["target"]=="release_debug"):
|
elif (env["target"]=="release_debug"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
|
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
|
||||||
|
|
||||||
elif (env["target"]=="debug"):
|
elif (env["target"]=="debug"):
|
||||||
|
|
||||||
env.Append(CCFLAGS=['-g', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
|
env.Append(CCFLAGS=['-g', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
|
||||||
|
|
||||||
if (env["freetype"]!="no"):
|
if (env["freetype"]!="no"):
|
||||||
env.Append(CCFLAGS=['-DFREETYPE_ENABLED'])
|
env.Append(CCFLAGS=['-DFREETYPE_ENABLED'])
|
||||||
env.Append(CPPPATH=['#tools/freetype'])
|
env.Append(CPPPATH=['#tools/freetype'])
|
||||||
env.Append(CPPPATH=['#tools/freetype/freetype/include'])
|
env.Append(CPPPATH=['#tools/freetype/freetype/include'])
|
||||||
|
|
||||||
env["CC"]=mingw_prefix+"gcc"
|
env["CC"]=mingw_prefix+"gcc"
|
||||||
env['AS']=mingw_prefix+"as"
|
env['AS']=mingw_prefix+"as"
|
||||||
env['CXX'] = mingw_prefix+"g++"
|
env['CXX'] = mingw_prefix+"g++"
|
||||||
env['AR'] = mingw_prefix+"ar"
|
env['AR'] = mingw_prefix+"ar"
|
||||||
env['RANLIB'] = mingw_prefix+"ranlib"
|
env['RANLIB'] = mingw_prefix+"ranlib"
|
||||||
env['LD'] = mingw_prefix+"g++"
|
env['LD'] = mingw_prefix+"g++"
|
||||||
|
|
||||||
#env['CC'] = "winegcc"
|
#env['CC'] = "winegcc"
|
||||||
#env['CXX'] = "wineg++"
|
#env['CXX'] = "wineg++"
|
||||||
|
|
||||||
env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows'])
|
env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows'])
|
||||||
env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED'])
|
env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED'])
|
||||||
env.Append(CCFLAGS=['-DGLES2_ENABLED','-DGLEW_ENABLED'])
|
env.Append(CCFLAGS=['-DGLES2_ENABLED','-DGLEW_ENABLED'])
|
||||||
env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','kernel32'])
|
env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','kernel32'])
|
||||||
|
|
||||||
# if (env["bits"]=="32"):
|
# if (env["bits"]=="32"):
|
||||||
# # env.Append(LIBS=['gcc_s'])
|
# # env.Append(LIBS=['gcc_s'])
|
||||||
# #--with-arch=i686
|
# #--with-arch=i686
|
||||||
# env.Append(CPPFLAGS=['-march=i686'])
|
# env.Append(CPPFLAGS=['-march=i686'])
|
||||||
# env.Append(LINKFLAGS=['-march=i686'])
|
# env.Append(LINKFLAGS=['-march=i686'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#'d3dx9d'
|
#'d3dx9d'
|
||||||
env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
|
env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
|
||||||
env.Append(LINKFLAGS=['-g'])
|
env.Append(LINKFLAGS=['-g'])
|
||||||
|
|
||||||
import methods
|
import methods
|
||||||
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||||
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||||
env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
|
env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
|
||||||
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1420,12 +1420,12 @@ EditorImportExport::ImageAction EditorImportExport::get_export_image_action() co
|
|||||||
return image_action;
|
return image_action;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditorImportExport::set_export_image_shrink(int p_shrink) {
|
void EditorImportExport::set_export_image_shrink(float p_shrink) {
|
||||||
|
|
||||||
image_shrink=p_shrink;
|
image_shrink=p_shrink;
|
||||||
}
|
}
|
||||||
|
|
||||||
int EditorImportExport::get_export_image_shrink() const{
|
float EditorImportExport::get_export_image_shrink() const{
|
||||||
|
|
||||||
return image_shrink;
|
return image_shrink;
|
||||||
}
|
}
|
||||||
@ -1496,12 +1496,12 @@ bool EditorImportExport::image_export_group_get_make_atlas(const StringName& p_e
|
|||||||
return image_groups[p_export_group].make_atlas;
|
return image_groups[p_export_group].make_atlas;
|
||||||
|
|
||||||
}
|
}
|
||||||
void EditorImportExport::image_export_group_set_shrink(const StringName& p_export_group,int p_amount){
|
void EditorImportExport::image_export_group_set_shrink(const StringName& p_export_group,float p_amount){
|
||||||
ERR_FAIL_COND(!image_groups.has(p_export_group));
|
ERR_FAIL_COND(!image_groups.has(p_export_group));
|
||||||
image_groups[p_export_group].shrink=p_amount;
|
image_groups[p_export_group].shrink=p_amount;
|
||||||
|
|
||||||
}
|
}
|
||||||
int EditorImportExport::image_export_group_get_shrink(const StringName& p_export_group) const{
|
float EditorImportExport::image_export_group_get_shrink(const StringName& p_export_group) const{
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!image_groups.has(p_export_group),1);
|
ERR_FAIL_COND_V(!image_groups.has(p_export_group),1);
|
||||||
return image_groups[p_export_group].shrink;
|
return image_groups[p_export_group].shrink;
|
||||||
|
@ -252,7 +252,7 @@ protected:
|
|||||||
ImageAction action;
|
ImageAction action;
|
||||||
bool make_atlas;
|
bool make_atlas;
|
||||||
float lossy_quality;
|
float lossy_quality;
|
||||||
int shrink;
|
float shrink;
|
||||||
};
|
};
|
||||||
|
|
||||||
Vector<Ref<EditorExportPlugin> > export_plugins;
|
Vector<Ref<EditorExportPlugin> > export_plugins;
|
||||||
@ -260,7 +260,7 @@ protected:
|
|||||||
Map<String,int> by_idx;
|
Map<String,int> by_idx;
|
||||||
ImageAction image_action;
|
ImageAction image_action;
|
||||||
float image_action_compress_quality;
|
float image_action_compress_quality;
|
||||||
int image_shrink;
|
float image_shrink;
|
||||||
Set<String> image_formats;
|
Set<String> image_formats;
|
||||||
|
|
||||||
ExportFilter export_filter;
|
ExportFilter export_filter;
|
||||||
@ -310,8 +310,8 @@ public:
|
|||||||
void set_export_image_action(ImageAction p_action);
|
void set_export_image_action(ImageAction p_action);
|
||||||
ImageAction get_export_image_action() const;
|
ImageAction get_export_image_action() const;
|
||||||
|
|
||||||
void set_export_image_shrink(int p_shrink);
|
void set_export_image_shrink(float p_shrink);
|
||||||
int get_export_image_shrink() const;
|
float get_export_image_shrink() const;
|
||||||
|
|
||||||
void set_export_image_quality(float p_quality);
|
void set_export_image_quality(float p_quality);
|
||||||
float get_export_image_quality() const;
|
float get_export_image_quality() const;
|
||||||
@ -326,8 +326,8 @@ public:
|
|||||||
ImageAction image_export_group_get_image_action(const StringName& p_export_group) const;
|
ImageAction image_export_group_get_image_action(const StringName& p_export_group) const;
|
||||||
void image_export_group_set_make_atlas(const StringName& p_export_group,bool p_make);
|
void image_export_group_set_make_atlas(const StringName& p_export_group,bool p_make);
|
||||||
bool image_export_group_get_make_atlas(const StringName& p_export_group) const;
|
bool image_export_group_get_make_atlas(const StringName& p_export_group) const;
|
||||||
void image_export_group_set_shrink(const StringName& p_export_group,int p_amount);
|
void image_export_group_set_shrink(const StringName& p_export_group,float p_amount);
|
||||||
int image_export_group_get_shrink(const StringName& p_export_group) const;
|
float image_export_group_get_shrink(const StringName& p_export_group) const;
|
||||||
void image_export_group_set_lossy_quality(const StringName& p_export_group,float p_quality);
|
void image_export_group_set_lossy_quality(const StringName& p_export_group,float p_quality);
|
||||||
float image_export_group_get_lossy_quality(const StringName& p_export_group) const;
|
float image_export_group_get_lossy_quality(const StringName& p_export_group) const;
|
||||||
|
|
||||||
|
@ -828,7 +828,7 @@ Error EditorTextureImportPlugin::import(const String& p_path, const Ref<Resource
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Error EditorTextureImportPlugin::_process_texture_data(Ref<ImageTexture> &texture,int format, float quality,int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,int shrink) {
|
Error EditorTextureImportPlugin::_process_texture_data(Ref<ImageTexture> &texture,int format, float quality,int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink) {
|
||||||
|
|
||||||
|
|
||||||
if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS || format==IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
|
if (format==IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS || format==IMAGE_FORMAT_COMPRESS_DISK_LOSSY) {
|
||||||
@ -866,7 +866,7 @@ Error EditorTextureImportPlugin::_process_texture_data(Ref<ImageTexture> &textur
|
|||||||
|
|
||||||
int orig_w=image.get_width();
|
int orig_w=image.get_width();
|
||||||
int orig_h=image.get_height();
|
int orig_h=image.get_height();
|
||||||
image.resize(orig_w/shrink,orig_h/shrink);
|
image.resize(orig_w/shrink,orig_h/shrink,Image::INTERPOLATE_CUBIC);
|
||||||
texture->create_from_image(image,tex_flags);
|
texture->create_from_image(image,tex_flags);
|
||||||
texture->set_size_override(Size2(orig_w,orig_h));
|
texture->set_size_override(Size2(orig_w,orig_h));
|
||||||
|
|
||||||
@ -926,7 +926,7 @@ Error EditorTextureImportPlugin::_process_texture_data(Ref<ImageTexture> &textur
|
|||||||
int orig_h=image.get_height();
|
int orig_h=image.get_height();
|
||||||
|
|
||||||
if (shrink>1) {
|
if (shrink>1) {
|
||||||
image.resize(orig_w/shrink,orig_h/shrink);
|
image.resize(orig_w/shrink,orig_h/shrink,Image::INTERPOLATE_CUBIC);
|
||||||
texture->create_from_image(image,tex_flags);
|
texture->create_from_image(image,tex_flags);
|
||||||
texture->set_size_override(Size2(orig_w,orig_h));
|
texture->set_size_override(Size2(orig_w,orig_h));
|
||||||
}
|
}
|
||||||
@ -987,7 +987,7 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<Resourc
|
|||||||
tex_flags|=Texture::FLAG_ANISOTROPIC_FILTER;
|
tex_flags|=Texture::FLAG_ANISOTROPIC_FILTER;
|
||||||
|
|
||||||
print_line("path: "+p_path+" flags: "+itos(tex_flags));
|
print_line("path: "+p_path+" flags: "+itos(tex_flags));
|
||||||
int shrink=1;
|
float shrink=1;
|
||||||
if (from->has_option("shrink"))
|
if (from->has_option("shrink"))
|
||||||
shrink=from->get_option("shrink");
|
shrink=from->get_option("shrink");
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ private:
|
|||||||
static EditorTextureImportPlugin *singleton[MODE_MAX];
|
static EditorTextureImportPlugin *singleton[MODE_MAX];
|
||||||
//used by other importers such as mesh
|
//used by other importers such as mesh
|
||||||
|
|
||||||
Error _process_texture_data(Ref<ImageTexture> &texture, int format, float quality, int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,int shrink);
|
Error _process_texture_data(Ref<ImageTexture> &texture, int format, float quality, int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink);
|
||||||
void compress_image(EditorExportPlatform::ImageCompression p_mode,Image& image,bool p_smaller);
|
void compress_image(EditorExportPlatform::ImageCompression p_mode,Image& image,bool p_smaller);
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -1156,7 +1156,7 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) {
|
|||||||
image_shrink = memnew( SpinBox );
|
image_shrink = memnew( SpinBox );
|
||||||
image_shrink->set_min(1);
|
image_shrink->set_min(1);
|
||||||
image_shrink->set_max(8);
|
image_shrink->set_max(8);
|
||||||
image_shrink->set_step(1);
|
image_shrink->set_step(0.1);
|
||||||
image_vb->add_margin_child("Shrink All Images:",image_shrink);
|
image_vb->add_margin_child("Shrink All Images:",image_shrink);
|
||||||
sections->add_child(image_vb);
|
sections->add_child(image_vb);
|
||||||
|
|
||||||
@ -1237,7 +1237,7 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) {
|
|||||||
group_shrink->set_min(1);
|
group_shrink->set_min(1);
|
||||||
group_shrink->set_max(8);
|
group_shrink->set_max(8);
|
||||||
group_shrink->set_val(1);
|
group_shrink->set_val(1);
|
||||||
group_shrink->set_step(1);
|
group_shrink->set_step(0.001);
|
||||||
group_options->add_margin_child("Shrink By:",group_shrink);
|
group_options->add_margin_child("Shrink By:",group_shrink);
|
||||||
group_shrink->connect("value_changed",this,"_group_changed");
|
group_shrink->connect("value_changed",this,"_group_changed");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user