diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 38c5fff..c6b3df8 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -17,6 +17,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(IS_CLANG_CL TRUE)
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-imsvc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-old-style-cast -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -funwind-tables -fopenmp -static-openmp -Wl,--no-merge-exidx-entries")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,common-page-size=16384 -Wl,-z,max-page-size=16384")
add_compile_options(-fsigned-char)
# Suppress all warnings
@@ -1351,4 +1352,11 @@ target_link_libraries(slic3r PRIVATE
boost_wave
boost_wserialization
${OCCT_LIBS}
-)
\ No newline at end of file
+)
+
+if(ANDROID)
+ target_link_options(slic3r PRIVATE
+ "-Wl,-z,common-page-size=16384"
+ "-Wl,-z,max-page-size=16384"
+ "-Wl,--rosegment")
+endif()
diff --git a/app/build.gradle b/app/build.gradle
index 45df293..a6db261 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,7 +17,7 @@ android {
applicationId "com.dark98.santoku"
minSdk 21
targetSdk 35
- versionCode 8
+ versionCode 1
versionName "0.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -50,6 +50,8 @@ android {
}
}
debug {
+ applicationIdSuffix ".debug"
+ resValue "string", "AppName", "Santoku (Debug)"
buildConfigField "String", "COMMIT", "\"" + commit + "\""
ndk {
debugSymbolLevel 'NONE'
@@ -67,7 +69,7 @@ android {
cmake {
path file('CMakeLists.txt')
}
- ndkVersion "23.1.7779620"
+ ndkVersion "29.0.14206865"
}
buildFeatures {
@@ -76,7 +78,9 @@ android {
applicationVariants.all { variant ->
variant.outputs.all {
- outputFileName = "Santoku_" + commit + ".apk"
+ def isDebug = variant.buildType.name == "debug"
+ def suffix = isDebug ? "_debug" : ""
+ outputFileName = "Santoku_" + commit + suffix + ".apk"
}
}
}
@@ -151,6 +155,8 @@ def toolchainFile = "${ndkDir}/build/cmake/android.toolchain.cmake"
def wslExe = "${System.getenv("SystemRoot") ?: "C:/Windows"}/System32/wsl.exe"
def prebuiltTag = isWindows ? "windows-x86_64" : (isMac ? "darwin-x86_64" : "linux-x86_64")
def llvmBinDir = "${ndkDir}/toolchains/llvm/prebuilt/${prebuiltTag}/bin"
+def pageSizeLinkerFlags = "-Wl,-z,common-page-size=16384 -Wl,-z,max-page-size=16384"
+def forceNativeRebuild = project.hasProperty("forceNativeRebuild") && project.property("forceNativeRebuild").toString().toLowerCase() == "true"
def tbbSrc = "${rootDir}/third_party/openvdb-android/tbb-aarch64"
def tbbBuildArm64 = "${rootDir}/third_party/openvdb-android/build-tbb-android-21-arm64"
@@ -287,6 +293,7 @@ tasks.register("patchBoostForAndroid") {
tasks.register("buildTbbArm64") {
dependsOn("ensureThirdParty")
onlyIf {
+ forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
@@ -304,6 +311,7 @@ tasks.register("buildTbbArm64") {
"-DANDROID_PLATFORM=android-21",
"-DANDROID_STL=c++_shared",
"-DCMAKE_BUILD_TYPE=Release",
+ "-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArm64}",
"-DTBB_BUILD_TESTS=Off"
}
@@ -316,6 +324,7 @@ tasks.register("buildTbbArm64") {
tasks.register("buildTbbArmv7") {
dependsOn("ensureThirdParty")
onlyIf {
+ forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
@@ -333,6 +342,7 @@ tasks.register("buildTbbArmv7") {
"-DANDROID_PLATFORM=android-21",
"-DANDROID_STL=c++_shared",
"-DCMAKE_BUILD_TYPE=Release",
+ "-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArmv7}",
"-DTBB_BUILD_TESTS=Off"
}
@@ -345,6 +355,7 @@ tasks.register("buildTbbArmv7") {
tasks.register("copyTbbArm64", Copy) {
dependsOn("buildTbbArm64")
onlyIf {
+ forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
@@ -383,6 +394,7 @@ tasks.register("copyTbbArm64", Copy) {
tasks.register("copyTbbArmv7", Copy) {
dependsOn("buildTbbArmv7")
onlyIf {
+ forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
@@ -504,7 +516,7 @@ tasks.register("copyBoostHeaders", Copy) {
tasks.register("buildOcctArm64") {
dependsOn("ensureThirdParty")
- onlyIf { !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
+ onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
doLast {
exec {
commandLine cmakeExe, "-G", "Ninja",
@@ -516,6 +528,7 @@ tasks.register("buildOcctArm64") {
"-DANDROID_PLATFORM=android-21",
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_LIBRARY_TYPE=Shared",
+ "-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DINSTALL_DIR_LIB=libs/arm64-v8a",
"-DINSTALL_DIR_INCLUDE=inc",
"-DBUILD_DOC_Overview=OFF",
@@ -533,7 +546,7 @@ tasks.register("buildOcctArm64") {
tasks.register("buildOcctArmv7") {
dependsOn("ensureThirdParty")
- onlyIf { !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
+ onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
doLast {
exec {
commandLine cmakeExe, "-G", "Ninja",
@@ -545,6 +558,7 @@ tasks.register("buildOcctArmv7") {
"-DANDROID_PLATFORM=android-21",
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_LIBRARY_TYPE=Shared",
+ "-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DINSTALL_DIR_LIB=libs/armeabi-v7a",
"-DINSTALL_DIR_INCLUDE=inc",
"-DBUILD_DOC_Overview=OFF",
@@ -562,7 +576,7 @@ tasks.register("buildOcctArmv7") {
tasks.register("copyOcctArm64", Copy) {
dependsOn("buildOcctArm64")
- onlyIf { !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
+ onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
from("${occtDistArm64}/libs/arm64-v8a") {
include "*.so"
}
@@ -571,7 +585,7 @@ tasks.register("copyOcctArm64", Copy) {
tasks.register("copyOcctArmv7", Copy) {
dependsOn("buildOcctArmv7")
- onlyIf { !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
+ onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
from("${occtDistArmv7}/libs/armeabi-v7a") {
include "*.so"
}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 481bb43..5f280df 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -18,4 +18,8 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
+#-renamesourcefileattribute SourceFile
+
+# Keep cloud API and SAPIL runtime proxies.
+-keep class com.dark98.santoku.cloud.** { *; }
+-keep class ru.ytkab0bp.sapil.** { *; }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index acff79c..23f96d6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
- android:icon="@mipmap/icon"
+ android:icon="@mipmap/ic_launcher"
android:label="@string/AppName"
android:supportsRtl="true"
android:theme="@style/Theme.Santoku"
@@ -59,7 +59,7 @@
diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 0000000..3dd0731
Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ
diff --git a/app/src/main/java/com/dark98/santoku/SetupActivity.java b/app/src/main/java/com/dark98/santoku/SetupActivity.java
index b2d4df7..f66e58a 100644
--- a/app/src/main/java/com/dark98/santoku/SetupActivity.java
+++ b/app/src/main/java/com/dark98/santoku/SetupActivity.java
@@ -898,9 +898,14 @@ public class SetupActivity extends AppCompatActivity {
Toast.makeText(ctx, R.string.SettingsCloudManageSignUpMissingFields, Toast.LENGTH_SHORT).show();
return;
}
+ CloudAPI api = CloudController.getApiSafe();
+ if (api == null) {
+ Toast.makeText(ctx, R.string.SettingsCloudManageSignUpFailed, Toast.LENGTH_SHORT).show();
+ return;
+ }
signUpInProgress = true;
bindLoginButton(true);
- CloudAPI.INSTANCE.signup(email, password, displayName, new APICallback() {
+ api.signup(email, password, displayName, new APICallback() {
@Override
public void onResponse(CloudAPI.AuthToken response) {
Prefs.setCloudAPIToken(response.bearer);
diff --git a/app/src/main/java/com/dark98/santoku/boot/EventBusTask.java b/app/src/main/java/com/dark98/santoku/boot/EventBusTask.java
index 3dae4bc..2dfc66e 100644
--- a/app/src/main/java/com/dark98/santoku/boot/EventBusTask.java
+++ b/app/src/main/java/com/dark98/santoku/boot/EventBusTask.java
@@ -6,7 +6,13 @@ import com.dark98.santoku.BuildConfig;
public class EventBusTask extends BootTask {
public EventBusTask() {
- super(() -> EventBus.registerImpl(BuildConfig.APPLICATION_ID));
+ super(() -> {
+ String appId = BuildConfig.APPLICATION_ID;
+ if (BuildConfig.DEBUG && appId.endsWith(".debug")) {
+ appId = appId.substring(0, appId.length() - ".debug".length());
+ }
+ EventBus.registerImpl(appId);
+ });
onWorker();
}
}
diff --git a/app/src/main/java/com/dark98/santoku/cloud/CloudAPI.java b/app/src/main/java/com/dark98/santoku/cloud/CloudAPI.java
index cda45fd..b693522 100644
--- a/app/src/main/java/com/dark98/santoku/cloud/CloudAPI.java
+++ b/app/src/main/java/com/dark98/santoku/cloud/CloudAPI.java
@@ -38,6 +38,11 @@ public interface CloudAPI extends APIRunner {
}
return headers;
}
+
+ @Override
+ public ru.ytkab0bp.sapil.util.Pair getNamingTransformPolicy() {
+ return null;
+ }
});
/**
diff --git a/app/src/main/java/com/dark98/santoku/cloud/CloudController.java b/app/src/main/java/com/dark98/santoku/cloud/CloudController.java
index a7488d3..f43bb0a 100644
--- a/app/src/main/java/com/dark98/santoku/cloud/CloudController.java
+++ b/app/src/main/java/com/dark98/santoku/cloud/CloudController.java
@@ -51,7 +51,14 @@ public class CloudController {
private static Runnable loginCheck = new Runnable() {
@Override
public void run() {
- CloudAPI.INSTANCE.loginCheck(loginSessionId, new APICallback() {
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ loginSessionId = null;
+ isLoggingIn = false;
+ Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
+ return;
+ }
+ api.loginCheck(loginSessionId, new APICallback() {
@Override
public void onResponse(CloudAPI.LoginState response) {
if (response.loggedIn) {
@@ -77,6 +84,15 @@ public class CloudController {
private static Gson gson = new Gson();
+ public static CloudAPI getApiSafe() {
+ try {
+ return CloudAPI.INSTANCE;
+ } catch (Throwable t) {
+ Log.e(TAG, "Cloud API unavailable", t);
+ return null;
+ }
+ }
+
public static void initCached() {
if (Prefs.getCloudAPIToken() != null) {
if (Prefs.getCloudCachedUserInfo() != null) {
@@ -101,7 +117,11 @@ public class CloudController {
}
private static void loadUserInfo() {
- CloudAPI.INSTANCE.userGetInfo(new APICallback() {
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ return;
+ }
+ api.userGetInfo(new APICallback() {
@Override
public void onResponse(CloudAPI.UserInfo response) {
userInfo = response;
@@ -145,7 +165,13 @@ public class CloudController {
}
private static void beginLogin0() {
- beginLoginHandle = CloudAPI.INSTANCE.loginBegin(new APICallback() {
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ isLoggingIn = false;
+ Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
+ return;
+ }
+ beginLoginHandle = api.loginBegin(new APICallback() {
@Override
public void onResponse(CloudAPI.LoginData response) {
loginSessionId = response.sessionId;
@@ -172,7 +198,10 @@ public class CloudController {
isLoggingIn = false;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
if (loginSessionId != null) {
- CloudAPI.INSTANCE.loginCancel(loginSessionId, response -> {});
+ CloudAPI api = getApiSafe();
+ if (api != null) {
+ api.loginCancel(loginSessionId, response -> {});
+ }
}
if (beginLoginHandle != null && beginLoginHandle.isRunning()) {
beginLoginHandle.cancel();
@@ -184,7 +213,10 @@ public class CloudController {
}
public static void logout() {
- CloudAPI.INSTANCE.logout(response -> {});
+ CloudAPI api = getApiSafe();
+ if (api != null) {
+ api.logout(response -> {});
+ }
Prefs.setCloudAPIToken(null);
userInfo = null;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
@@ -204,7 +236,12 @@ public class CloudController {
}
private static void downloadData(long lastModified) {
- CloudAPI.INSTANCE.syncGet(new APICallback() {
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ isSyncInProgress = false;
+ return;
+ }
+ api.syncGet(new APICallback() {
@Override
public void onResponse(String response) {
IOUtils.IO_POOL.submit(() -> {
@@ -251,11 +288,15 @@ public class CloudController {
if (isSyncInProgress) {
return;
}
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ return;
+ }
long modified = Prefs.getCloudLocalLastModified();
isSyncInProgress = true;
Santoku.EVENT_BUS.fireEvent(new NeedSnackbarEvent(SnackbarsLayout.Type.LOADING, R.string.CloudSyncInProgress).tag(CLOUD_SYNC_TAG));
- CloudAPI.INSTANCE.syncGetState(new APICallback() {
+ api.syncGetState(new APICallback() {
@Override
public void onResponse(CloudAPI.SyncState response) {
if (Santoku.CONFIG == null && response.usedSize != 0) {
@@ -324,7 +365,12 @@ public class CloudController {
bos.close();
fis.close();
- CloudAPI.INSTANCE.syncUpload(Base64.encodeToString(bos.toByteArray(), Base64.NO_WRAP), "application/ini", new APICallback() {
+ CloudAPI api = getApiSafe();
+ if (api == null) {
+ isSyncInProgress = false;
+ return;
+ }
+ api.syncUpload(Base64.encodeToString(bos.toByteArray(), Base64.NO_WRAP), "application/ini", new APICallback() {
@Override
public void onResponse(CloudAPI.SyncState response) {
isSyncInProgress = false;
diff --git a/app/src/main/java/com/dark98/santoku/config/ConfigObject.java b/app/src/main/java/com/dark98/santoku/config/ConfigObject.java
index 8bc2736..7a55aa6 100644
--- a/app/src/main/java/com/dark98/santoku/config/ConfigObject.java
+++ b/app/src/main/java/com/dark98/santoku/config/ConfigObject.java
@@ -81,7 +81,7 @@ public class ConfigObject implements ProfileListFragment.ProfileListItem {
public String serialize() {
StringBuilder sb = new StringBuilder();
- sb.append("# generated by Slice Beam ").append(BuildConfig.VERSION_NAME).append("\n\n");
+ sb.append("# generated by Santoku ").append(BuildConfig.VERSION_NAME).append("\n\n");
for (Map.Entry en : values.entrySet()) {
String value = en.getValue();
if (value != null) {
diff --git a/app/src/main/java/com/dark98/santoku/slic3r/Slic3rConfigWrapper.java b/app/src/main/java/com/dark98/santoku/slic3r/Slic3rConfigWrapper.java
index bd09f4c..b4d1ddf 100644
--- a/app/src/main/java/com/dark98/santoku/slic3r/Slic3rConfigWrapper.java
+++ b/app/src/main/java/com/dark98/santoku/slic3r/Slic3rConfigWrapper.java
@@ -214,7 +214,7 @@ public class Slic3rConfigWrapper {
public String serialize() {
StringBuilder sb = new StringBuilder();
- sb.append("# generated by Slice Beam ").append(BuildConfig.VERSION_NAME).append("\n\n");
+ sb.append("# generated by Santoku ").append(BuildConfig.VERSION_NAME).append("\n\n");
serializeList(sb, "printer", printerConfigs);
serializeList(sb, "print", printConfigs);
serializeList(sb, "filament", filamentConfigs);
diff --git a/app/src/main/java/com/dark98/santoku/slic3r/Slic3rLocalization.java b/app/src/main/java/com/dark98/santoku/slic3r/Slic3rLocalization.java
index 9c5264c..fe116c2 100644
--- a/app/src/main/java/com/dark98/santoku/slic3r/Slic3rLocalization.java
+++ b/app/src/main/java/com/dark98/santoku/slic3r/Slic3rLocalization.java
@@ -71,7 +71,7 @@ public class Slic3rLocalization {
}
private static String replaceStr(String val) {
- return val.replace("\\n", "\n").replaceAll("\\\\(.)", "$1").replace("Slic3r", "Slice Beam").replace("PrusaSlicer", "Slice Beam");
+ return val.replace("\\n", "\n").replaceAll("\\\\(.)", "$1").replace("Slic3r", "Santoku").replace("PrusaSlicer", "Santoku");
}
public static String getString(String key) {
diff --git a/app/src/main/jni/CGAL/AABB_tree.h b/app/src/main/jni/CGAL/AABB_tree.h
index 3985cf0..225dcb9 100644
--- a/app/src/main/jni/CGAL/AABB_tree.h
+++ b/app/src/main/jni/CGAL/AABB_tree.h
@@ -553,7 +553,7 @@ public:
traits.intersection(query, singleton_data());
break;
default: // if(size() >= 2)
- root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
+ root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
}
}
diff --git a/app/src/main/jni/CGAL/boost/graph/iterator.h b/app/src/main/jni/CGAL/boost/graph/iterator.h
index c8af78e..ca996a2 100644
--- a/app/src/main/jni/CGAL/boost/graph/iterator.h
+++ b/app/src/main/jni/CGAL/boost/graph/iterator.h
@@ -221,7 +221,7 @@ public:
operator bool_type() const
{
- return (! (this->base() == nullptr)) ?
+ return (g != nullptr) ?
&Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
}
@@ -321,7 +321,7 @@ public:
operator bool_type() const
{
- return (! (this->base() == nullptr)) ?
+ return (g != nullptr) ?
&Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
}
@@ -420,7 +420,7 @@ public:
operator bool_type() const
{
- return (! (this->base() == nullptr)) ?
+ return (g != nullptr) ?
&Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
}
diff --git a/app/src/main/jni/libslic3r/Arrange/Core/DataStoreTraits.hpp b/app/src/main/jni/libslic3r/Arrange/Core/DataStoreTraits.hpp
index ba932d5..a784ff3 100644
--- a/app/src/main/jni/libslic3r/Arrange/Core/DataStoreTraits.hpp
+++ b/app/src/main/jni/libslic3r/Arrange/Core/DataStoreTraits.hpp
@@ -71,7 +71,7 @@ template using WritableDataStoreOnly = std::enable_if_t
void set_data(ArrItem &itm, const std::string &key, T &&data)
{
- WritableDataStoreTraits::template set(itm, key, std::forward(data));
+ WritableDataStoreTraits::set(itm, key, std::forward(data));
}
template constexpr bool IsReadWritableDataStore = IsDataStore && IsWritableDataStore;
diff --git a/app/src/main/jni/nlopt/algs/stogo/tools.h b/app/src/main/jni/nlopt/algs/stogo/tools.h
index 668a5ee..fb07d4d 100644
--- a/app/src/main/jni/nlopt/algs/stogo/tools.h
+++ b/app/src/main/jni/nlopt/algs/stogo/tools.h
@@ -10,6 +10,7 @@
#include
#include
#include
+#include
#include "linalg.h"
@@ -36,7 +37,7 @@ public:
friend ostream & operator << (ostream &, RCTrial) ;
};
-class TrialGT : public unary_function
+class TrialGT
// Predicate for Trial (needed for remove_if)
{
public:
diff --git a/app/src/main/jni/openvdb/tree/NodeManager.h b/app/src/main/jni/openvdb/tree/NodeManager.h
index 4d0d9b4..12dabaa 100644
--- a/app/src/main/jni/openvdb/tree/NodeManager.h
+++ b/app/src/main/jni/openvdb/tree/NodeManager.h
@@ -327,7 +327,7 @@ private:
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(mNodeOp, it);
+ OpT::eval(mNodeOp, it);
}
}
const NodeOp mNodeOp;
@@ -347,7 +347,7 @@ private:
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(mNodeOp, it);
+ OpT::eval(mNodeOp, it);
}
}
const NodeOp& mNodeOp;
@@ -372,7 +372,7 @@ private:
void operator()(const NodeRange& range)
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
- OpT::template eval(*mNodeOp, it);
+ OpT::eval(*mNodeOp, it);
}
}
void join(const NodeReducer& other)
diff --git a/app/src/main/jni/zlib/gzlib.c b/app/src/main/jni/zlib/gzlib.c
index 983153c..8876f23 100644
--- a/app/src/main/jni/zlib/gzlib.c
+++ b/app/src/main/jni/zlib/gzlib.c
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
+#include
#if defined(_WIN32) && !defined(__BORLANDC__)
# define LSEEK _lseeki64
diff --git a/app/src/main/jni/zlib/gzread.c b/app/src/main/jni/zlib/gzread.c
index 4168cbc..5c0d651 100644
--- a/app/src/main/jni/zlib/gzread.c
+++ b/app/src/main/jni/zlib/gzread.c
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
+#include
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
state->fd, and update state->eof, state->err, and state->msg as appropriate.
diff --git a/app/src/main/jni/zlib/gzwrite.c b/app/src/main/jni/zlib/gzwrite.c
index 435b462..a6fcbdd 100644
--- a/app/src/main/jni/zlib/gzwrite.c
+++ b/app/src/main/jni/zlib/gzwrite.c
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
+#include
/* Initialize state for writing a gzip file. Mark initialization by setting
state->size to non-zero. Return -1 on a memory allocation failure, or 0 on
diff --git a/app/src/main/jniLibs/arm64-v8a/libc++_shared.so b/app/src/main/jniLibs/arm64-v8a/libc++_shared.so
index 1653847..e978645 100644
Binary files a/app/src/main/jniLibs/arm64-v8a/libc++_shared.so and b/app/src/main/jniLibs/arm64-v8a/libc++_shared.so differ
diff --git a/app/src/main/jniLibs/arm64-v8a/libgmp.so b/app/src/main/jniLibs/arm64-v8a/libgmp.so
index c3baf1b..63f3ff7 100644
Binary files a/app/src/main/jniLibs/arm64-v8a/libgmp.so and b/app/src/main/jniLibs/arm64-v8a/libgmp.so differ
diff --git a/app/src/main/jniLibs/arm64-v8a/libgmpxx.so b/app/src/main/jniLibs/arm64-v8a/libgmpxx.so
index 24dba28..d8b3909 100644
Binary files a/app/src/main/jniLibs/arm64-v8a/libgmpxx.so and b/app/src/main/jniLibs/arm64-v8a/libgmpxx.so differ
diff --git a/app/src/main/jniLibs/arm64-v8a/libmpfr.so b/app/src/main/jniLibs/arm64-v8a/libmpfr.so
index 73816fd..4bcacbc 100644
Binary files a/app/src/main/jniLibs/arm64-v8a/libmpfr.so and b/app/src/main/jniLibs/arm64-v8a/libmpfr.so differ
diff --git a/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so b/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so
index 787016a..aebe061 100644
Binary files a/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so and b/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so differ
diff --git a/app/src/main/jniLibs/armeabi-v7a/libgmp.so b/app/src/main/jniLibs/armeabi-v7a/libgmp.so
index 291c21c..3d8d4bd 100644
Binary files a/app/src/main/jniLibs/armeabi-v7a/libgmp.so and b/app/src/main/jniLibs/armeabi-v7a/libgmp.so differ
diff --git a/app/src/main/jniLibs/armeabi-v7a/libgmpxx.so b/app/src/main/jniLibs/armeabi-v7a/libgmpxx.so
index 704cbc2..ef6b298 100644
Binary files a/app/src/main/jniLibs/armeabi-v7a/libgmpxx.so and b/app/src/main/jniLibs/armeabi-v7a/libgmpxx.so differ
diff --git a/app/src/main/jniLibs/armeabi-v7a/libmpfr.so b/app/src/main/jniLibs/armeabi-v7a/libmpfr.so
index 8be3649..0b23e7c 100644
Binary files a/app/src/main/jniLibs/armeabi-v7a/libmpfr.so and b/app/src/main/jniLibs/armeabi-v7a/libmpfr.so differ
diff --git a/app/src/main/jniLibs/x86/libc++_shared.so b/app/src/main/jniLibs/x86/libc++_shared.so
index 021ef66..c2a7d95 100644
Binary files a/app/src/main/jniLibs/x86/libc++_shared.so and b/app/src/main/jniLibs/x86/libc++_shared.so differ
diff --git a/app/src/main/jniLibs/x86_64/libc++_shared.so b/app/src/main/jniLibs/x86_64/libc++_shared.so
index 085f341..0afd6ac 100644
Binary files a/app/src/main/jniLibs/x86_64/libc++_shared.so and b/app/src/main/jniLibs/x86_64/libc++_shared.so differ
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 0000000..c67ed40
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/icon_adaptive_foreground.png b/app/src/main/res/drawable/icon_adaptive_foreground.png
deleted file mode 100644
index ee39edc..0000000
Binary files a/app/src/main/res/drawable/icon_adaptive_foreground.png and /dev/null differ
diff --git a/app/src/main/res/drawable/icon_static.png b/app/src/main/res/drawable/icon_static.png
deleted file mode 100644
index 5752288..0000000
Binary files a/app/src/main/res/drawable/icon_static.png and /dev/null differ
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..7353dbd
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..7353dbd
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..76b6944
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..76b6944
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..92c010f
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..92c010f
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-v32/icon.xml b/app/src/main/res/mipmap-v32/icon.xml
deleted file mode 100644
index c16d993..0000000
--- a/app/src/main/res/mipmap-v32/icon.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..905b769
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..905b769
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..412dada
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..412dada
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..5eb9810
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..5eb9810
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap/icon.png b/app/src/main/res/mipmap/icon.png
deleted file mode 100644
index 5752288..0000000
Binary files a/app/src/main/res/mipmap/icon.png and /dev/null differ
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index a9c93c4..dc74f55 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -140,7 +140,7 @@
Похоже всё настроено.\nПросто нажмите завершить!
Завершить
Ранний доступ
- Вы используете ранний доступ Slice Beam.\nПожалуйста обратите внимание, что некоторые функции могут быть недоступны, содержать ошибки или работать не так, как ожидается.\nДля получения новостей о приложении подпишитесь на Telegram-канал разработчика.
+ Вы используете ранний доступ Santoku.\nОбратите внимание, что некоторые функции могут быть недоступны, содержать ошибки или работать не так, как ожидается.
Сбросить настройки по-умолчанию
Вы уверены?
Это действие не может быть отменено.
diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 0000000..55b08d6
--- /dev/null
+++ b/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #DC3D3D
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 034f7ae..b25a32c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -140,7 +140,7 @@
All seems to be configured.\nJust tap finish!
Finish
Early access
- You are using an Early Access of Slice Beam.\nPlease note that some features may be unavailable, buggy or work not as expected.\nPlease subscribe to developer\'s Telegram for app\'s news.
+ You are using an Early Access of Santoku.\nPlease note that some features may be unavailable, buggy or work not as expected.
Reset to defaults
Are you sure?
This action can not be undone.
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 92bd289..30c786a 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -1,7 +1,7 @@