diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a74f0afb2..3f5e5d6b7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -43,9 +43,6 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" tools:replace="android:allowBackup"> - when (call.method) { "back" -> back(); @@ -174,12 +172,6 @@ class MainActivity : AudioServiceActivity() { } } - "maxScreenSize" -> { - maxScreenSize()?.let { - result.success(it) - } - } - "sdkInt" -> { result.success(Build.VERSION.SDK_INT) } @@ -189,28 +181,6 @@ class MainActivity : AudioServiceActivity() { } } - private fun maxScreenSize(): Map? { - try { - val density = resources.displayMetrics.density - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - val maxBounds = windowManager.maximumWindowMetrics.bounds - return mapOf( - "maxWidth" to (maxBounds.width() / density).roundToInt(), - "maxHeight" to (maxBounds.height() / density).roundToInt(), - ) - } else { - val realSizePoint = Point() - windowManager.defaultDisplay.getRealSize(realSizePoint) - return mapOf( - "maxWidth" to (realSizePoint.x / density).roundToInt(), - "maxHeight" to (realSizePoint.y / density).roundToInt(), - ) - } - } catch (e: Exception) { - return null - } - } - private fun back() { val intent = Intent(Intent.ACTION_MAIN).apply { addCategory(Intent.CATEGORY_HOME) @@ -232,11 +202,6 @@ class MainActivity : AudioServiceActivity() { super.onDestroy() } - override fun onUserLeaveHint() { - super.onUserLeaveHint() - methodChannel.invokeMethod("onUserLeaveHint", null) - } - override fun onPictureInPictureModeChanged( isInPictureInPictureMode: Boolean, newConfig: Configuration? diff --git a/assets/shaders/Anime4K_AutoDownscalePre_x2.glsl b/assets/shaders/Anime4K_AutoDownscalePre_x2.glsl deleted file mode 100644 index 3e381373d..000000000 --- a/assets/shaders/Anime4K_AutoDownscalePre_x2.glsl +++ /dev/null @@ -1,36 +0,0 @@ -// This is free and unencumbered software released into the public domain. - -// Anyone is free to copy, modify, publish, use, compile, sell, or -// distribute this software, either in source code form or as a compiled -// binary, for any purpose, commercial or non-commercial, and by any -// means. - -// In jurisdictions that recognize copyright laws, the author or authors -// of this software dedicate any and all copyright interest in the -// software to the public domain. We make this dedication for the benefit -// of the public at large and to the detriment of our heirs and -// successors. We intend this dedication to be an overt act of -// relinquishment in perpetuity of all present and future rights to this -// software under copyright law. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. - -// For more information, please refer to - -//!DESC Anime4K-v4.0-AutoDownscalePre-x2 -//!HOOK MAIN -//!BIND HOOKED -//!BIND NATIVE -//!WHEN OUTPUT.w NATIVE.w / 2.0 < OUTPUT.h NATIVE.h / 2.0 < * OUTPUT.w NATIVE.w / 1.2 > OUTPUT.h NATIVE.h / 1.2 > * * -//!WIDTH OUTPUT.w -//!HEIGHT OUTPUT.h - -vec4 hook() { - return HOOKED_tex(HOOKED_pos); -} diff --git a/assets/shaders/Anime4K_AutoDownscalePre_x4.glsl b/assets/shaders/Anime4K_AutoDownscalePre_x4.glsl deleted file mode 100644 index 1c4d421b2..000000000 --- a/assets/shaders/Anime4K_AutoDownscalePre_x4.glsl +++ /dev/null @@ -1,36 +0,0 @@ -// This is free and unencumbered software released into the public domain. - -// Anyone is free to copy, modify, publish, use, compile, sell, or -// distribute this software, either in source code form or as a compiled -// binary, for any purpose, commercial or non-commercial, and by any -// means. - -// In jurisdictions that recognize copyright laws, the author or authors -// of this software dedicate any and all copyright interest in the -// software to the public domain. We make this dedication for the benefit -// of the public at large and to the detriment of our heirs and -// successors. We intend this dedication to be an overt act of -// relinquishment in perpetuity of all present and future rights to this -// software under copyright law. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. - -// For more information, please refer to - -//!DESC Anime4K-v3.2-AutoDownscalePre-x4 -//!HOOK MAIN -//!BIND HOOKED -//!BIND NATIVE -//!WHEN OUTPUT.w NATIVE.w / 4.0 < OUTPUT.h NATIVE.h / 4.0 < * OUTPUT.w NATIVE.w / 2.4 > OUTPUT.h NATIVE.h / 2.4 > * * -//!WIDTH OUTPUT.w 2 / -//!HEIGHT OUTPUT.h 2 / - -vec4 hook() { - return HOOKED_tex(HOOKED_pos); -} diff --git a/assets/shaders/Anime4K_Clamp_Highlights.glsl b/assets/shaders/Anime4K_Clamp_Highlights.glsl deleted file mode 100644 index 71dcf7344..000000000 --- a/assets/shaders/Anime4K_Clamp_Highlights.glsl +++ /dev/null @@ -1,90 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v4.0-De-Ring-Compute-Statistics -//!HOOK MAIN -//!BIND HOOKED -//!SAVE STATSMAX -//!COMPONENTS 1 - -#define KERNELSIZE 5 //Kernel size, must be an positive odd integer. -#define KERNELHALFSIZE 2 //Half of the kernel size without remainder. Must be equal to trunc(KERNELSIZE/2). - -float get_luma(vec4 rgba) { - return dot(vec4(0.299, 0.587, 0.114, 0.0), rgba); -} - -vec4 hook() { - - float gmax = 0.0; - - for (int i=0; iRGB matrix has 1 for every row... (which is the case for BT.709) - //Otherwise we would need to convert RGB to YUV, modify Y then convert back to RGB. - return HOOKED_tex(HOOKED_pos) - (current_luma - new_luma); -} \ No newline at end of file diff --git a/assets/shaders/Anime4K_Restore_CNN_M.glsl b/assets/shaders/Anime4K_Restore_CNN_M.glsl deleted file mode 100644 index 7f5ea9d87..000000000 --- a/assets/shaders/Anime4K_Restore_CNN_M.glsl +++ /dev/null @@ -1,275 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.09991986, 0.13782342, -0.031251684, -0.06356843, -0.3437488, 0.05450952, 0.34347802, 0.46335372, 0.08607224, 0.044988394, 0.137179, 0.17976908, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(-0.024212424, -0.09278509, -0.00040907756, 0.34552294, -0.13254678, 0.113105185, 0.005667946, -0.00036919137, -0.06375679, 0.009184115, 0.115518734, -0.115506776, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(-0.14101827, 0.023523493, 0.044094566, -0.019271746, -0.44348842, -0.08818877, -0.4026149, -0.21995795, -0.15880394, -0.013732858, -0.020751135, 0.012719151, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(0.013001821, -0.34503505, 0.39219138, 0.18792126, 0.24760444, -0.016173402, 0.10154511, 0.15453082, -0.058132876, 0.016784398, -0.05808539, -0.11039915, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(0.37024534, 0.041440863, -0.3374568, -0.44994286, 0.19555596, 0.20855539, -0.27974075, -0.5372628, 0.21228147, -0.0295346, -0.56700057, 0.030042822, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(-0.12940632, 0.057526, 0.090682045, -0.06985033, -0.13704006, -0.047685407, 0.44615674, -0.48056605, -0.06166251, -0.01883519, 0.2032237, -0.113287605, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(0.010856669, -0.35820737, 0.16757219, 0.082619876, -0.03967303, 0.038705572, 0.32652855, -0.012030017, 0.015120559, -0.15314877, 0.23442009, 0.09767922, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(-0.046272673, -0.17752305, 0.082018286, -0.2512824, 0.58619463, -0.060903464, -0.022793597, 0.077803515, -0.17025311, 0.05136993, 0.029383298, -0.15475409, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(-0.11212024, 0.13378005, -0.2027488, 0.08056421, -0.11176219, -0.048429377, -0.08396386, 0.10507829, 0.13326839, 0.0430627, 0.051362377, 0.06482755, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(-0.061233472, 0.39222646, 0.029704979, 0.02586828); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_tf -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.16410656, -0.40521824, 0.13121907, -0.02314597, 0.105412476, -0.060401272, -0.043063477, -0.13933973, 0.12558138, -0.020861467, 0.030370515, 0.13178016, -0.14220351, 0.20736893, 0.003321564, -0.29241714) * go_0(-1.0, -1.0); - result += mat4(0.18517321, 0.29162985, -0.26783395, 0.039760686, 0.025527012, -0.067319244, 0.055004176, 0.048916563, 0.12750523, -0.091435954, 0.13818842, 0.36704224, 0.0839921, 0.10186618, -0.17237376, 0.13282418) * go_0(-1.0, 0.0); - result += mat4(-0.1657887, 0.0131325135, -0.17222486, 0.091398895, -0.12756164, -0.08437298, -0.29052997, 0.3269337, 0.15870757, -0.013529402, -0.0581753, 0.11802371, 0.07099966, -0.024063632, 0.31834844, -0.11183859) * go_0(-1.0, 1.0); - result += mat4(0.46036887, -0.07654623, 0.22923063, 0.17463821, 0.10555414, -0.117430426, 0.12406777, -0.011399492, 0.028316498, 0.13684341, 0.009664087, 0.2022659, 0.04953974, -0.31342217, -0.6103131, -0.13605757) * go_0(0.0, -1.0); - result += mat4(0.03406955, -0.39819366, 0.61176, -0.46809456, -0.029321073, 0.46619493, 0.36700186, 0.02288561, 0.11464085, -0.10931452, -0.09154022, 0.07334147, -0.5609916, 0.31826234, -0.011012659, -0.46719545) * go_0(0.0, 0.0); - result += mat4(-0.056855045, 0.27037027, -0.09269696, -0.563572, -0.06816116, -0.22986612, 0.08693167, -0.16246101, 0.09954046, -0.05374176, 0.0071916827, -0.1788692, 0.3825241, -0.1609887, 0.055204768, 0.10213068) * go_0(0.0, 1.0); - result += mat4(0.0646626, 0.102358796, -0.45055822, 0.20557903, -0.23337309, 0.12633002, -0.19299199, -0.15085731, -0.13473304, 0.053790465, -0.10061193, -0.13393497, -0.04264752, -0.029740738, -0.07865285, 0.20883279) * go_0(1.0, -1.0); - result += mat4(0.010471527, -0.033218473, -0.46157447, 0.004866583, 0.23226471, -0.059343327, -0.1439596, 0.13619648, 0.013839963, 0.15930325, 0.043742355, 0.17467323, 0.33772305, 0.40261495, -0.08351293, 0.18129359) * go_0(1.0, 0.0); - result += mat4(-0.12493434, -0.1875134, -0.074943796, -0.0031701606, -0.037142616, 0.1667002, 0.16665547, -0.011248127, 0.0071619414, 0.0034872112, 0.120318964, -0.09625579, 0.14917047, -0.16310586, 0.07231737, 0.30447328) * go_0(1.0, 1.0); - result += mat4(0.093798615, 0.17074613, -0.08780678, -0.012520207, 0.118534856, 0.027508778, -0.2778478, -0.19509242, -0.34137097, 0.32000312, -0.22027159, 0.337515, 0.16220862, 0.108993016, 0.14070526, 0.12784284) * go_1(-1.0, -1.0); - result += mat4(-0.14325632, -0.1467453, -0.27502358, 0.09370837, 0.11821083, -0.012266484, -0.2100548, 0.4707502, -0.06766648, 0.58165014, -0.2512279, -0.33783755, 0.1318925, -0.04346277, 0.15454485, 0.044500057) * go_1(-1.0, 0.0); - result += mat4(-0.05683207, 0.0051946463, -0.108000524, 0.10133204, -0.50763863, 0.007308442, 0.8542404, 0.28387356, 0.022709515, 0.294523, -0.3822472, 0.66166407, 0.01404485, 0.031282708, -0.26756814, -0.123147786) * go_1(-1.0, 1.0); - result += mat4(-0.36455178, 0.3470555, -0.045303088, -0.03170764, -0.15802494, -0.0019141496, -0.25939587, -0.23875342, 0.130428, 0.03954273, -0.17985536, 0.105145946, 0.15804817, 0.12551713, 0.28371975, -0.085748516) * go_1(0.0, -1.0); - result += mat4(0.0060625463, 0.2443924, -0.017692259, -0.20214005, -0.09584515, -0.012805372, -0.13942227, 0.16143198, 0.12942013, 0.41785547, 0.046071563, 0.7030026, 0.10499644, -0.20566013, -0.031321276, 0.27830327) * go_1(0.0, 0.0); - result += mat4(-0.081274964, -0.14562319, 0.27200526, -0.20491314, 0.012910989, 0.024201397, 0.04816258, 0.21297328, -0.22015952, -0.44160756, -0.056035373, 0.33824417, -0.31645304, 0.15469243, 0.053187452, -0.20989445) * go_1(0.0, 1.0); - result += mat4(-0.046550367, 0.033185404, 0.33337244, 0.12853645, 0.23520172, -0.05909214, 0.0861368, 0.10706329, -0.07058717, -0.11759937, -0.18594047, 0.080006264, -0.055425353, -0.12506317, 0.15729053, -0.0915004) * go_1(1.0, -1.0); - result += mat4(0.042516407, 0.14844789, 0.16533111, 0.13502933, -0.0655417, -0.057256397, 0.076713726, -0.23448966, 0.12855926, 0.014219275, 0.051761385, 0.053433083, -0.2446715, -0.4008074, 0.19603717, -0.1796951) * go_1(1.0, 0.0); - result += mat4(0.14777803, 0.15524907, 0.043158617, -0.06996876, 0.19210646, -0.2144364, -0.47020787, -0.4207906, -0.18074386, -0.2163903, 0.0030754965, 0.36799973, -0.3837698, -0.0022661497, -0.37276733, -0.28934997) * go_1(1.0, 1.0); - result += vec4(-0.018297346, -0.080951825, -0.062163066, -0.08050014); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.31543177, 0.23095237, -0.06692611, -0.5867763, 0.003622504, 0.17948842, -0.14627707, 0.1745016, -0.052964583, -0.15551159, 0.05644786, -0.012665164, 0.13107763, 0.11369179, -0.09452995, -0.11973403) * go_0(-1.0, -1.0); - result += mat4(-0.2694661, -0.115382135, 0.3073268, -0.067228466, -0.25511482, -0.13922207, 0.36758214, -0.18821828, -0.022617863, 0.20333402, -0.11125889, 0.3552245, -0.013346653, -0.099095374, -0.25100616, 0.35521755) * go_0(-1.0, 0.0); - result += mat4(0.011012409, -0.13675085, 0.25642, -0.34851208, -0.23184675, 0.18012202, 0.57654136, 0.103173524, -0.16461405, 0.038177088, 0.1234096, 0.013202029, -0.19033363, 0.07469178, -0.017948546, 0.15287702) * go_0(-1.0, 1.0); - result += mat4(-0.05340533, 0.23797482, 0.20351392, -0.05333351, -0.12181174, -0.23363493, -0.20696607, 0.109941036, -0.11519453, 0.13842066, -0.10687832, 0.29040006, 0.022218632, 0.031238724, 0.2685182, 0.15300068) * go_0(0.0, -1.0); - result += mat4(0.22985318, -0.3103802, -0.22916415, 0.25238806, -0.11690287, -0.1947488, 0.118020535, 0.07814263, -0.06335474, -0.007870727, 0.076106325, 0.094677486, -0.16776285, -0.006570437, -0.29589584, 0.41413507) * go_0(0.0, 0.0); - result += mat4(0.43607962, -0.36456433, -0.123776875, -0.16634953, -0.091190875, 0.13035081, 0.28627968, 0.27249968, 0.12356344, -0.008616177, 0.09599816, -0.006144557, -0.23490307, 0.3013123, 0.14153156, 0.21837278) * go_0(0.0, 1.0); - result += mat4(0.060364585, 0.37860224, 0.039182413, -0.22805426, -0.089910224, -0.06817697, -0.2684275, -0.12528503, 0.036934495, -0.07826616, 0.06559976, -0.08253646, 0.13489649, 0.06237663, 0.126376, 0.21194184) * go_0(1.0, -1.0); - result += mat4(-0.12534817, 0.21225189, -0.27818045, -0.3070443, -0.006957577, -0.025105853, 0.12100924, -0.06916452, 0.23081483, 0.1802756, -0.18995638, 0.16603014, -0.2904096, -0.25292823, -0.21834068, 0.13719653) * go_0(1.0, 0.0); - result += mat4(0.017209655, 0.10757137, 0.21414296, -0.30885983, 0.10467716, -0.2184891, 0.100061476, -0.1527528, 0.2100472, -0.25768545, -0.22329919, -0.29153427, -0.06983842, -0.103854865, -0.051384352, 0.14629121) * go_0(1.0, 1.0); - result += mat4(0.0059623295, -0.26060802, 0.32115817, 0.021025505, 0.09783085, -0.15865178, 0.1473021, -0.24977303, -0.033508282, 0.17480391, -0.091310136, 0.09870876, 0.10504043, -0.06105686, 0.013493489, -0.11278855) * go_1(-1.0, -1.0); - result += mat4(0.14875248, -0.14859414, 0.19377062, -0.17456068, 0.101288855, -0.1113682, -0.48944646, 0.1018565, -0.037392337, 0.08539691, 0.1751306, -0.15428723, -0.059375558, 0.027663672, 0.051804014, -0.049813222) * go_1(-1.0, 0.0); - result += mat4(0.118846565, -0.19869871, -0.037388258, 0.08456728, -0.11662527, -0.43818352, -0.093285345, 0.038507205, -0.051991668, 0.21008292, 0.10792365, 0.2020924, 0.057021596, 0.09460527, 0.0016551288, -0.0015957063) * go_1(-1.0, 1.0); - result += mat4(0.11062174, -0.2639232, -0.060295466, -0.3217331, -0.050545212, 0.30989558, 0.30906132, 0.030323273, 0.028986752, 0.037429404, 0.20855664, -0.19848943, 0.034687653, -0.09599135, -0.06250494, -0.13215867) * go_1(0.0, -1.0); - result += mat4(-0.010391146, 0.07657845, 0.44491258, 0.0435906, 0.0075931503, 0.42632654, 0.47022533, 0.34737435, -0.15452717, -0.14613411, -0.45231065, 0.12094409, 0.0067911847, 0.057501152, 0.09876979, 0.044946447) * go_1(0.0, 0.0); - result += mat4(-0.15607435, 0.2293058, -0.09520331, 0.012836732, -0.15282455, 0.26437718, -0.1685477, -0.13211122, -0.055801593, -0.016778728, -0.34478986, -0.23228309, 0.12300962, -0.13235827, -0.13987203, -0.16550972) * go_1(0.0, 1.0); - result += mat4(0.13161735, -0.09039346, -0.033475474, -0.23686698, 0.1514885, 0.20977421, 0.031431954, -0.0049226107, 0.090661936, 0.15288061, -0.03316583, 0.09646573, -0.32651708, 0.18825398, -0.15777239, 0.17572704) * go_1(1.0, -1.0); - result += mat4(0.112157226, -0.08712878, 0.23453182, 0.1043877, -0.14686783, 0.28682423, -0.086443506, 0.059457052, -0.31530112, -0.2700583, -0.06028952, -0.070416875, 0.18053482, 0.16653341, 0.25215197, 0.061915852) * go_1(1.0, 0.0); - result += mat4(-0.20122242, 0.076313145, -0.0988483, 0.094337784, -0.35436687, 0.3762327, -0.07809558, 0.3055848, 0.10425242, -0.17087407, 0.030301496, -0.13911743, 0.01630275, 0.24247427, -0.006474477, 0.03842641) * go_1(1.0, 1.0); - result += vec4(-0.008952847, -0.0058945753, -0.08097229, 0.020968592); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!SAVE conv2d_3_tf -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.2237721, -0.0064096362, -0.31808427, 0.73477733, 0.015353088, 0.23983319, 0.14967978, -0.34920225, -0.07456269, 0.093151815, -0.14331086, -0.24586205, -0.14183366, 0.06401045, -0.22044073, 0.29932275) * go_0(-1.0, -1.0); - result += mat4(-0.07968509, -0.3349146, 0.16529128, 0.08443499, 0.4095855, -0.17120704, 0.17425705, 0.15298946, 0.2981273, 0.2212369, 0.10392389, -0.28775454, -0.065247655, -0.15255849, 0.13094437, 0.18685219) * go_0(-1.0, 0.0); - result += mat4(0.015706737, -0.17755036, 0.2622526, 0.112057306, -0.15876788, -0.38466996, -0.33700845, -0.031711742, -0.023320962, -0.3145249, -0.21223734, -0.1314596, -0.1888095, -0.046370104, 0.09000896, -0.0046378844) * go_0(-1.0, 1.0); - result += mat4(-0.31127506, 0.31304324, -0.03965752, 0.03649018, -0.029851055, 0.05801377, 0.00040150844, -0.04422069, 0.18019931, 0.14415511, -0.09845236, 0.21895434, -0.013932474, -0.046454947, -0.3403935, -0.006705289) * go_0(0.0, -1.0); - result += mat4(-0.34878647, -0.5129283, 0.060250953, -0.16354133, 0.20644619, 0.08732273, -0.24118888, 0.24455065, 0.24449423, 0.44103387, 0.22455928, 0.25738943, -0.26914698, -0.21309987, 0.08386486, 0.021484816) * go_0(0.0, 0.0); - result += mat4(-0.057454903, -0.4121922, 0.022661546, 0.37178272, 0.03331408, 0.05044008, 0.04324371, 0.20727943, 0.2432641, 0.076906696, -0.20858039, 0.012439015, -0.19335061, 0.09217451, 0.1968369, -0.19435833) * go_0(0.0, 1.0); - result += mat4(-0.16960496, 0.24616167, 0.37977478, 0.14324574, -0.011531225, -0.11312143, -0.18141079, -0.23843932, 0.0086012175, -0.3564491, -0.12639481, 0.009799298, -0.29120612, 0.23756824, 0.18035695, -0.087133996) * go_0(1.0, -1.0); - result += mat4(-0.10081239, 0.29191494, 0.10434693, 0.08970636, 0.008997759, 0.104756236, 0.039641086, 0.02323888, -0.11627765, 0.023693223, -0.30801758, -0.120208986, 0.05086147, 0.18498175, 0.15595439, -0.09877306) * go_0(1.0, 0.0); - result += mat4(0.101321675, -0.2929976, 0.38810417, 0.5605376, -0.04073937, 0.030110704, -0.18147062, -0.09833952, 0.01927733, 0.15335669, -0.15384074, -0.110595055, -0.054297395, -0.077522054, 0.07918369, -0.068480626) * go_0(1.0, 1.0); - result += mat4(0.23263514, -0.11719232, 0.2903209, -0.007503795, -0.020222448, -0.17790157, -0.15600762, -0.08741775, 0.12529704, 0.25548857, -0.04585447, -0.10255033, 0.18350503, -0.29593533, 0.0868933, 0.027004737) * go_1(-1.0, -1.0); - result += mat4(-0.14958654, -0.006238835, -0.2928948, 0.1988557, -0.17057803, 0.12524141, 0.13978264, -0.019280292, 0.05967142, -0.07790818, -0.5893818, -0.022845713, -0.08596779, 0.07875358, -0.03316667, -0.4369282) * go_1(-1.0, 0.0); - result += mat4(0.19195688, -0.060883682, -0.25897828, 0.07063324, 0.090833396, 0.003422883, 0.109534174, 0.031180874, -0.05017118, 0.022862168, -0.270113, -0.057831235, 0.53920543, -0.10252776, -0.091807485, 0.004294343) * go_1(-1.0, 1.0); - result += mat4(-0.18494242, -0.119284816, 0.3821897, 0.07777979, 0.15568028, -0.2854859, -0.22441281, -0.049155876, -0.15292497, 0.21895619, -0.095677756, 0.15210424, 0.001643022, -0.026176987, 0.048463076, -0.4824009) * go_1(0.0, -1.0); - result += mat4(0.007215129, 0.17074333, 0.053930074, -0.027014816, -0.17180431, -0.15163863, -0.0012122132, -0.18934256, -0.08294297, -0.24580221, -0.46552867, -0.27923223, 0.4092668, 0.06288688, -0.1602188, -0.0030876845) * go_1(0.0, 0.0); - result += mat4(0.111870885, 0.03317145, 0.14155298, 0.20328505, -0.05104131, 0.13979794, 0.018966835, -0.07238511, 0.05493792, -0.14975783, -0.10293237, -0.21985306, 0.49054706, 0.18288186, -0.26925826, 0.35845932) * go_1(0.0, 1.0); - result += mat4(0.3747799, -0.096748486, -0.17139742, 0.25289854, -0.17421168, -0.018461818, 0.09747162, 0.01660535, -0.20580359, 0.56189656, 0.17151354, -0.26347768, 0.28350568, -0.21486014, -0.44330928, -0.008981037) * go_1(1.0, -1.0); - result += mat4(0.10169985, -0.18244018, 0.04760736, 0.41017643, -0.09468786, -0.024218475, 0.103733875, -0.22540338, 0.10630112, 0.3677178, -0.104170956, 0.057317447, 0.21764882, 0.0789158, -0.22041337, 0.15065216) * go_1(1.0, 0.0); - result += mat4(0.11633995, -0.008195114, -0.14501533, 0.07168025, 0.058413275, 0.055995367, 0.09362145, -0.13827963, 0.13760869, 0.040319785, 0.038895044, 0.2675253, -0.087339684, 0.1412073, -0.17166458, -0.2312994) * go_1(1.0, 1.0); - result += vec4(-0.059377354, -0.02055341, 0.07234869, -0.015452986); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!SAVE conv2d_4_tf -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.29012984, -0.13150147, 0.31015614, 0.05992291, -0.050289866, 0.14845313, -0.09608898, 0.27913308, 0.060307387, -0.04160452, 0.035932682, -0.08137563, -0.07999419, 0.11818284, -0.27512288, 0.21948813) * go_0(-1.0, -1.0); - result += mat4(0.12916058, -0.21759962, -0.33868533, 0.021636661, 0.053470243, 0.1412425, 0.043395396, -0.26751056, -0.01689101, -0.2623835, 0.010809152, 0.062962815, -0.20692012, -0.1677863, -0.23313859, -0.17402615) * go_0(-1.0, 0.0); - result += mat4(-0.08204112, -0.23672083, -0.0064437394, -0.13200696, -0.056692924, -0.02708657, 0.12536962, 0.004428919, 0.14137582, 0.15404348, -0.105753876, 0.047957454, 0.15734316, 0.16562423, -0.010160829, -0.06602983) * go_0(-1.0, 1.0); - result += mat4(0.025653997, -0.10877775, -0.31258908, 0.18841636, -0.36005193, 0.1816357, -0.34537643, -0.0741087, 0.4663994, 0.0065186517, 0.08109033, 0.2976773, -0.35774228, -0.041366056, -0.37852773, 0.050565656) * go_0(0.0, -1.0); - result += mat4(0.04392313, 0.11316681, -0.14421389, 0.17985669, -0.1651274, -0.5656209, -0.124100484, 0.42774054, -0.1153939, 0.16829851, 0.2025612, 0.054007456, -0.06868256, -0.56935954, -0.12227961, 0.17688861) * go_0(0.0, 0.0); - result += mat4(0.34041, 0.499, 0.15234196, 0.21353458, -0.2732667, -0.049950935, 0.03550811, -0.21051687, 0.2609023, 0.016438454, -0.29874632, 0.37994128, 0.049288407, -0.31126305, 0.029235512, -0.012256015) * go_0(0.0, 1.0); - result += mat4(-0.0046853204, 0.15391374, -0.040689662, 0.20186873, -0.08137621, 0.35905558, 0.23733845, 0.21794793, -0.066420384, 0.029600656, -0.31421044, -0.050773863, -0.06260773, 0.04634221, -0.10948491, -0.045498934) * go_0(1.0, -1.0); - result += mat4(-0.082953, -0.025837064, -0.09928303, -0.14300232, 0.275064, 0.07793617, 0.22240888, 0.06637834, -0.4382666, -0.2932182, -0.27243167, -0.14221182, 0.5695728, 0.20719238, 0.5575927, 0.40816882) * go_0(1.0, 0.0); - result += mat4(-0.18510929, -0.15052167, 0.25277212, 0.06804461, 0.016387, 0.20310035, 0.2903229, -0.0615877, -0.28987274, -0.11942605, 0.013498961, 0.3184152, 0.29543474, -0.042830903, -0.018111207, -0.13263674) * go_0(1.0, 1.0); - result += mat4(0.25749087, 0.0053866603, -0.09391162, -0.06129529, -0.094091184, -0.07419633, 0.0013858611, 0.012000353, -0.062903, -0.0204224, -0.12113313, 0.017942557, -0.073379934, 0.052201986, 0.35864577, 0.023564404) * go_1(-1.0, -1.0); - result += mat4(0.100115694, 0.19451359, 0.23252094, 0.19506809, -0.12470779, 0.0027281935, -0.17488572, -0.018721964, -0.15159339, 0.18457152, 0.057712987, -0.08191495, 0.19735703, 0.07326743, -0.28563106, 0.01642815) * go_1(-1.0, 0.0); - result += mat4(0.068062514, 0.28356665, 0.07377898, 0.42776972, 0.28725025, -0.13045293, -0.17525704, -0.05885591, -0.16676305, -0.2555945, -0.10078422, -0.053032875, 0.084470876, 0.06460686, 0.13824362, -0.05231353) * go_1(-1.0, 1.0); - result += mat4(0.22637829, -0.028969254, 0.1968254, -0.13331996, 0.038017053, -0.008854481, -0.2031639, 0.09237089, -0.3821112, 0.1108527, -0.11029933, -0.24542028, 0.22416145, -0.031492114, -0.19144306, -0.0996271) * go_1(0.0, -1.0); - result += mat4(0.10776744, 0.16363445, 0.14656505, -0.3737814, -0.06642015, 0.5616549, -0.008412252, -0.37266847, 0.12506576, -0.15329036, 0.037538245, -0.10810259, 0.01706349, 0.1813702, 0.035651788, -0.012786579) * go_1(0.0, 0.0); - result += mat4(-0.4023338, -0.2098614, -0.18285121, -0.02727653, 0.26107362, 0.041306913, -0.036515504, -0.045217298, -0.39958602, -0.21229339, -0.021053292, -0.13427502, 0.36178818, 0.20934913, 0.1500852, 0.2634554) * go_1(0.0, 1.0); - result += mat4(0.07794611, -0.25937587, -0.06822529, -0.056336135, 0.094220124, 0.21588847, -0.0455218, -0.10968329, -0.08068449, -0.31366697, 0.07799637, 0.24252681, 0.23963861, 0.13715535, 0.010329345, 0.09094301) * go_1(1.0, -1.0); - result += mat4(-0.20975718, -0.12550138, 0.14453574, -0.0020878632, -0.07153068, 0.3249998, -0.056577377, 0.18166828, 0.37204072, 0.17018336, 0.3752895, 0.32178587, 0.2571982, -0.27258632, -0.25971004, -0.40536007) * go_1(1.0, 0.0); - result += mat4(-0.3243907, -0.06300621, -0.09398436, -0.19549188, 0.14906861, 0.061537784, -0.055284478, 0.11281728, 0.12964857, 0.09979093, -0.1810159, -0.4104283, 0.05807971, -0.056371246, 0.08072554, 0.18479007) * go_1(1.0, 1.0); - result += vec4(-0.048888464, -0.0561434, 0.030690912, -0.030496685); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!SAVE conv2d_5_tf -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.15332128, 0.027258258, 0.14900503, -0.15982795, 0.17021236, -0.51046044, -0.15287271, -0.058167327, 0.51826185, -0.34817994, 0.004513167, 0.05395769, 0.1990321, -0.049979225, 0.11391989, -0.16062729) * go_0(-1.0, -1.0); - result += mat4(0.033682905, 0.019728886, 0.19931756, 0.17381927, 0.2585768, -0.2124572, -0.014632459, 0.39779893, -0.1146207, -0.2396625, 0.08960277, 0.38345298, 0.25497693, 0.11692859, -0.14207517, 0.12667973) * go_0(-1.0, 0.0); - result += mat4(-0.14911255, 0.08910706, 0.16136818, 0.03914566, 0.24204038, -0.03607149, -0.4571109, 0.10802461, -0.0021356856, 0.00885878, 0.22297303, 0.2367231, 0.045177583, 0.11120606, -0.009971904, -0.059262395) * go_0(-1.0, 1.0); - result += mat4(0.24565999, -0.2261384, 0.47373205, 0.024613412, -0.10923052, 0.039027315, -0.42707404, -0.3783373, 0.3544573, -0.5468578, -0.27599156, -0.09455918, 0.18760219, -0.19082001, 0.030565469, 0.20589156) * go_0(0.0, -1.0); - result += mat4(0.1973198, -0.03433863, 0.059960485, 0.045642868, 0.1819595, -0.14460869, 0.1286175, 0.2067575, -0.042632047, -0.11842967, -0.11224446, -0.18764776, -0.19563004, 0.027425969, 0.24056377, 0.5949649) * go_0(0.0, 0.0); - result += mat4(0.055027682, 0.16331595, -0.2608588, 0.12545955, 0.4588985, 0.03642909, 0.22187738, 0.45190734, -0.001210133, -0.057651415, -0.061199043, 0.11935476, -0.049561135, 0.27509886, 0.13778673, -0.124914035) * go_0(0.0, 1.0); - result += mat4(-0.02257459, 0.27705106, 0.044165276, -0.26521233, 0.05982374, -0.2824302, 0.3171142, 0.08430561, -0.10155528, 0.16182268, -0.09183147, -0.19447176, 0.3295707, -0.50616395, -0.036964044, 0.23166709) * go_0(1.0, -1.0); - result += mat4(-0.0232342, 0.07299799, -0.18038079, -0.13672702, -0.108305976, 0.15024792, -0.19531927, 0.0870979, -0.26488534, 0.19481428, 0.10737945, -0.14573483, -0.33094683, 0.24155116, -0.09850332, 0.2797003) * go_0(1.0, 0.0); - result += mat4(-0.24089853, 0.19506595, 0.4799156, -0.058313113, 0.36212957, -0.44844806, 0.23864488, 0.15477742, -0.07795971, -0.0033861927, -0.11216164, 0.033454563, -0.25893036, 0.23793478, -0.15769425, -0.00033481256) * go_0(1.0, 1.0); - result += mat4(0.05772507, -0.1640253, -0.13499664, -0.20460358, -0.024399966, 0.14966168, -0.090857334, -0.039677754, 0.00036956606, -0.24236615, -0.053542696, -0.0049544116, 0.026651502, 0.39019194, -0.2742246, -0.061242323) * go_1(-1.0, -1.0); - result += mat4(-0.016323274, -0.036179908, 0.029965919, 0.11151491, -0.00016685206, -0.29573023, 0.17996423, -0.20145437, 0.1324275, -0.18442132, -0.24618152, 0.061780427, -0.02770517, 0.28452995, 0.39804098, -0.1174389) * go_1(-1.0, 0.0); - result += mat4(-0.025068847, -0.053328387, -0.27053785, 0.26866457, -0.09866204, 0.057677213, 0.01850112, -0.18014707, -0.13319959, -0.14411181, -0.26355243, -0.022209354, -0.05062645, -0.036771543, 0.13294417, -0.18458557) * go_1(-1.0, 1.0); - result += mat4(-0.046194963, 0.038230438, -0.08993043, -0.07236354, 0.11031123, -0.16504908, -0.09517036, -0.16459833, -0.5279925, 0.12686682, -0.05726125, 0.055361677, 0.31593755, 0.027328093, 0.001839602, 0.30581662) * go_1(0.0, -1.0); - result += mat4(0.08608678, 0.03168437, 0.007713377, -0.26140293, -0.1268983, 0.13395861, -0.069848835, -0.24080403, 0.018839337, -0.049821075, -0.21461345, -0.14168301, -0.0872339, 0.47096667, 0.022512507, 0.14860632) * go_1(0.0, 0.0); - result += mat4(0.06293673, 0.22462969, 0.045494985, 0.021673543, 0.18227446, -0.2956555, 0.08010543, -0.01919729, -0.012190269, 0.241983, -0.046537094, -0.40094566, -0.3853647, 0.1081711, -0.16926058, 0.16138376) * go_1(0.0, 1.0); - result += mat4(-0.14854589, -0.17625804, -0.10849075, 0.221543, 0.099971965, 0.13901573, 0.29464146, 0.020068526, 0.054358527, -0.10351705, -0.0062914286, 0.24127026, -0.16914125, 0.12729423, -0.18377453, -0.6452375) * go_1(1.0, -1.0); - result += mat4(0.12603393, -0.10986093, 0.2314103, 0.16915044, -0.13619255, -0.09349073, 0.20594226, -0.34507084, 0.19077192, 0.052500796, 0.07185645, 0.029082738, -0.015576321, 0.08254907, -0.5501743, -0.38495848) * go_1(1.0, 0.0); - result += mat4(0.09300796, -0.079218306, 0.46825135, -0.08735625, 0.06321122, 0.16234867, 0.042932414, -0.013057422, 0.09697148, 0.23457524, 0.19417483, -0.16804664, 0.18379296, 0.17770062, -0.050235, -0.059676602) * go_1(1.0, 1.0); - result += vec4(0.011169491, 0.032399546, 0.138099, 0.023857072); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!SAVE conv2d_6_tf -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.22753362, -0.08612073, 0.33140692, 0.08699529, -0.18788953, -0.056579117, -0.12905197, -0.06694621, 0.054559365, 0.15031597, -0.13430363, 0.021646025, 0.14884405, -0.0694291, 0.26149413, 0.11270503) * go_0(-1.0, -1.0); - result += mat4(0.17876762, -0.09637848, 0.11285323, 0.2004893, 0.1317187, -0.036162686, 0.17958368, -0.069625, 0.28760737, -0.12505141, 0.12760694, 0.047717955, -0.16811855, -0.16340709, 0.13278298, -0.08403954) * go_0(-1.0, 0.0); - result += mat4(-0.21917523, 0.079711854, -0.28642535, 0.2822416, 0.03001489, -0.014772918, -0.3487396, 0.10597145, -0.013841082, 0.17034237, 0.10810282, -0.08089695, -0.22184245, -0.59067357, 0.44113398, 0.13045649) * go_0(-1.0, 1.0); - result += mat4(-0.29906932, 0.013923749, 0.2031124, -0.11846688, -0.13953634, 0.08003455, -0.10164494, -0.21218559, 0.10563715, 0.31033117, -0.075903505, 0.047310907, -0.37824214, -0.14506383, 0.11866701, -0.21384487) * go_0(0.0, -1.0); - result += mat4(-0.1353849, 0.19258606, 0.063908584, -0.2043788, 0.27244982, 0.1665306, -0.29357895, -0.22441709, 0.18514316, -0.17840464, 0.20986097, 0.14351055, -0.057732623, 0.42166704, -0.23182064, -0.4957248) * go_0(0.0, 0.0); - result += mat4(-0.34830126, 0.109066755, -0.28285867, -0.048280068, -0.12290918, 0.04291651, -0.047484186, -0.03702595, 0.23047262, 0.09398974, 0.022467108, 0.08271034, 0.3066665, -0.54077, 0.057771873, 0.23194093) * go_0(0.0, 1.0); - result += mat4(-0.17731948, -0.3175927, 0.1452728, 0.09396786, -0.16433562, -0.01833653, -0.22345604, -0.04161193, -0.14827462, 0.18544114, -0.15544125, -0.06179007, 0.16989979, -0.20985202, 0.16391534, -0.09447268) * go_0(1.0, -1.0); - result += mat4(-0.053878862, -0.21034616, 0.023831524, 0.19772215, 0.31647214, 0.0126534775, -0.19130844, -0.049282108, -0.21446131, 0.067189045, 0.09117449, -0.25548774, 0.12109098, 0.22009392, -0.3924665, -0.13340388) * go_0(1.0, 0.0); - result += mat4(-0.16096684, -0.18495405, 0.10410178, 0.0015673033, -0.00183498, -0.044303037, -0.062745355, -0.090802394, 0.043269135, 0.06924481, -0.21367405, -0.14619029, 0.11555763, -0.20292862, 0.5799557, 0.14739846) * go_0(1.0, 1.0); - result += mat4(-0.21030277, -0.09578802, 0.013482288, -0.21484336, 0.12995781, 0.40431052, -0.3347856, -0.18183486, 0.15550353, -0.04402301, 0.4603779, 0.14874357, -0.07694621, -0.053523075, -0.19607326, -0.10850742) * go_1(-1.0, -1.0); - result += mat4(-0.2347211, 0.2697403, -0.0634794, -0.17925987, 0.17231455, 0.24999185, -0.5208536, -0.10491828, -0.233575, 0.52950364, 0.0038063182, -0.1380038, 0.022935199, 0.19369157, 0.14586553, 0.1938704) * go_1(-1.0, 0.0); - result += mat4(-0.10245223, 0.34150192, 0.25862157, -0.20165509, 0.5597771, 0.114510864, -0.122526556, -0.04010975, 0.1704679, -0.23335956, -0.16771887, -0.03783455, -0.056995615, 0.24153493, -0.08082429, -0.24210933) * go_1(-1.0, 1.0); - result += mat4(-0.103466526, 0.15278348, -0.30526164, -0.080755696, 0.103505425, 0.15862796, 0.14696524, -0.008358076, -0.09180311, -0.12505089, 0.28052542, -0.13551563, 0.07528779, -0.09636086, -0.10369617, 0.23656134) * go_1(0.0, -1.0); - result += mat4(-0.25752836, 0.099439755, -0.30716348, 0.035077725, 0.023509016, 0.23106368, 0.05277125, 0.34910464, 0.088015385, 0.26995596, 0.1390645, -0.40671825, 0.18096298, -0.100688554, 0.5492049, 0.2482101) * go_1(0.0, 0.0); - result += mat4(0.41411775, -0.107200556, -0.13813478, 0.13768874, 0.27137747, 0.06313619, -0.08522967, 0.03218302, -0.03166121, -0.3415683, -0.52242, -0.1741813, -0.36956537, 0.179129, -0.09742935, -0.11696616) * go_1(0.0, 1.0); - result += mat4(-0.07975504, 0.17964838, 0.37122533, 0.16064765, 0.14309953, 0.29473078, 0.0926391, -0.22333665, 0.34612748, -0.3387473, 0.0077308523, -0.07239449, 0.18522519, -0.21297298, 0.11493978, 0.16117814) * go_1(1.0, -1.0); - result += mat4(-0.17402779, 0.10023144, 0.11712206, 0.031971734, 0.18713303, 0.08736295, 0.013007052, -0.06943139, -0.20102951, -0.010721135, -0.2562522, 0.34877458, -0.13732676, -0.40258047, 0.25824392, 0.15720639) * go_1(1.0, 0.0); - result += mat4(0.044494305, 0.3296108, 0.0017603852, 0.09362289, 0.38839245, 0.40015858, -0.13395199, -0.044521853, -0.56266373, 0.251378, 0.5005789, -0.13106057, -0.18491416, -0.046887, 0.067797676, -0.14694957) * go_1(1.0, 1.0); - result += vec4(0.013687534, -0.08185164, -0.04755438, 0.290178); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(M)-Conv-3x1x1x56 -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_tf -//!BIND conv2d_1_tf -//!BIND conv2d_2_tf -//!BIND conv2d_3_tf -//!BIND conv2d_4_tf -//!BIND conv2d_5_tf -//!BIND conv2d_6_tf -//!SAVE MAIN -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -#define g_0 (max((conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_1 (max(-(conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_2 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_4 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_5 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_6 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_8 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_9 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_10 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_12 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_13 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.08837163, -0.065234736, -0.034704313, 0.0, 0.021405501, 0.013663729, 0.019249594, 0.0, 0.05328863, 0.03580334, 0.046457592, 0.0, -0.12216048, 0.022547891, 0.016400825, 0.0) * g_0; - result += mat4(0.061996464, 0.05631466, 0.06808407, 0.0, -0.005013109, -0.0044589997, -0.032367796, 0.0, 0.016481603, 0.13721058, 0.14924648, 0.0, 0.020035887, -0.07250003, -0.08034037, 0.0) * g_1; - result += mat4(0.24078514, 0.081361525, 0.053420708, 0.0, -0.009353794, -0.051077116, -0.058007747, 0.0, -0.14071098, 0.01035966, 0.005308949, 0.0, -0.1489842, -0.06711817, -0.05552926, 0.0) * g_2; - result += mat4(-0.13002375, 0.012733757, 0.017821986, 0.0, 0.17767483, 0.20204604, 0.1751779, 0.0, 0.12804912, 0.07381453, 0.05655911, 0.0, 0.17044514, 0.07301451, 0.06523978, 0.0) * g_3; - result += mat4(-0.1170986, -0.05130371, -0.027939914, 0.0, -0.16645707, -0.121526904, -0.09471366, 0.0, -0.04143118, 0.026693767, 0.034615446, 0.0, -0.084318705, -0.064990036, -0.054324172, 0.0) * g_4; - result += mat4(0.12094524, 0.09518409, 0.07387219, 0.0, 0.062216382, 0.053228356, 0.031372335, 0.0, 0.072797105, 0.026258165, 0.009804673, 0.0, 0.120719045, 0.073281154, 0.056623302, 0.0) * g_5; - result += mat4(-0.11141495, -0.11566289, -0.10398725, 0.0, -0.0651895, -0.06820691, -0.054204144, 0.0, -0.032746475, -0.008849683, -0.007610222, 0.0, -0.024655705, -0.048778858, -0.041144755, 0.0) * g_6; - result += mat4(0.058090195, 0.07538767, 0.059722915, 0.0, 0.044788487, 0.04212742, 0.027502589, 0.0, 0.04892866, 0.015416752, 0.008312418, 0.0, -0.011864114, -0.0074752793, -0.0060824654, 0.0) * g_7; - result += mat4(0.043446552, 0.061971307, 0.05758086, 0.0, -0.06379154, -0.053758245, -0.047204215, 0.0, 0.016307736, 0.03423424, 0.030179083, 0.0, 0.041445345, 0.03843772, 0.033059113, 0.0) * g_8; - result += mat4(-0.003803544, 0.0008906116, -0.00059585314, 0.0, 0.102071285, 0.11485224, 0.10007254, 0.0, -0.074306004, -0.08803551, -0.07972321, 0.0, -0.030704215, -0.021514274, -0.009049376, 0.0) * g_9; - result += mat4(0.0066058086, 0.0011408008, 0.0016199006, 0.0, -0.03916473, -0.042929266, -0.04018418, 0.0, -0.03153446, -0.039413508, -0.034767237, 0.0, 0.113516055, 0.12577052, 0.113335624, 0.0) * g_10; - result += mat4(0.02655948, 0.041905303, 0.03861737, 0.0, 0.048471425, 0.049788587, 0.050447535, 0.0, 0.12092813, 0.13564217, 0.12613249, 0.0, -0.0023508538, 0.0012828974, 0.0028730957, 0.0) * g_11; - result += mat4(0.0084758485, 0.008800083, 0.008206044, 0.0, -0.056123603, -0.06610845, -0.060320783, 0.0, -0.081793964, -0.101638645, -0.096699014, 0.0, -0.04402356, -0.04177539, -0.03829645, 0.0) * g_12; - result += mat4(0.10676299, 0.118409514, 0.10618478, 0.0, -0.05880252, -0.06488367, -0.06432695, 0.0, 0.019221924, 0.017602798, 0.017413978, 0.0, -0.07512528, -0.080483615, -0.066218294, 0.0) * g_13; - result += vec4(-0.010478934, -0.008364784, -0.010246552, 0.0); - return result + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/Anime4K_Restore_CNN_S.glsl b/assets/shaders/Anime4K_Restore_CNN_S.glsl deleted file mode 100644 index 209bfbb6b..000000000 --- a/assets/shaders/Anime4K_Restore_CNN_S.glsl +++ /dev/null @@ -1,137 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v4.0-Restore-CNN-(S)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.19288683, -0.21397883, 0.111997396, -0.04791413, -0.26682988, -0.06144587, -0.03601853, -0.16693151, 0.038494494, -0.16651472, 0.147657, -0.083003886, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(-0.14286195, 0.08746566, -0.40107322, 0.12390977, -0.33392772, -0.18703035, -0.21326795, 0.04780781, -0.15155545, -0.0010025925, -0.1554875, -0.10676251, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(0.28095165, 0.022872915, -0.21342312, -0.29982176, 0.025937587, -0.055012174, -0.33779636, 0.0015666655, 0.076416336, 0.06656033, -0.1557806, 0.1078894, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(-0.31584853, 0.07527119, 0.30713862, -0.34014285, -0.50103146, -0.07217874, 0.512807, -0.09597398, -0.32097813, -0.051580857, -0.022466356, 0.01148551, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.026032459, -0.04193211, 0.37703893, -0.031916667, -0.27421117, 1.0906446, -0.049654085, -0.19814016, 0.07819544, 0.06003738, 0.1405805, -0.0064135445, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(0.041450135, 0.11319654, -0.23237701, 0.08443178, 0.53344345, 0.30857387, -0.057264958, -0.1575803, 0.2325609, -0.027797326, -0.04544767, -0.18720597, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(0.2531829, -0.074966915, -0.27800754, -0.3146097, 0.20126024, -0.5380133, -0.15082566, -0.19021043, 0.29951036, 0.17123336, -0.01681872, -0.12574998, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.25203633, 0.19882993, 0.14906439, 0.13593598, 0.40712556, 0.084902965, 0.42969635, 0.2961132, -0.057267334, -0.030388135, 8.8084314e-05, 0.0210724, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(-0.13459359, -0.12199573, 0.12591946, 0.24736497, 0.2033463, -0.09388599, -0.094370656, 0.1071285, -0.18479438, -0.066625565, 0.08279283, 0.20130983, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(-0.011108127, -0.07481861, 0.07640154, 0.4964964); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(S)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_tf -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.056432575, 0.0028165397, -0.026325442, -0.14802271, 0.16885762, -0.062179096, -0.2332292, 0.17513658, -0.08011296, 0.02947316, 0.014771492, -0.17946689, 0.026012989, -0.09823925, 0.036625937, -0.06924322) * go_0(-1.0, -1.0); - result += mat4(-0.13571467, 0.09831142, 0.12911566, 0.06305893, -0.07188695, -0.20161287, 0.3858435, -0.21069056, -0.12294444, -0.1404628, -0.022659872, 0.23008968, 0.10969853, 0.17640765, 0.39796907, 0.20413099) * go_0(-1.0, 0.0); - result += mat4(-0.0061665224, 0.055102807, -0.0059629944, -0.021429887, 0.061626043, 0.16898955, -0.21215646, 0.16510476, 0.2238265, 0.19429931, 0.09874656, 0.06828208, -0.122404456, -0.00026717107, -0.28203064, -0.29979932) * go_0(-1.0, 1.0); - result += mat4(-0.22735378, 0.14538136, 0.11549746, 0.194148, -0.09841722, -0.0661309, 0.348576, -0.017375294, -0.044078812, 0.1298332, 0.04793373, -0.30687734, 0.08353025, 0.083519086, 0.10766399, 0.31796935) * go_0(0.0, -1.0); - result += mat4(0.048365135, -0.17566709, -0.33212858, -0.052667376, -0.26443407, -0.010216014, 0.1573303, 0.05725314, 0.08140953, -0.09664591, 0.076109104, -0.026773714, 0.07732627, 0.10188082, -0.28266954, -0.16230233) * go_0(0.0, 0.0); - result += mat4(0.29931107, 0.117944, -0.10414009, 0.12795551, 0.12576093, 0.17082554, -0.15803693, 0.13430743, -0.025801308, -0.10797019, 0.0721032, 0.2825884, -0.11025257, 0.12798019, 0.081827976, -0.050441865) * go_0(0.0, 1.0); - result += mat4(-0.11827391, 0.08306765, -0.3430314, 0.07898041, -0.023839617, -0.019507334, 0.23176382, -0.40992323, 0.09411734, 0.38415068, -0.25845516, -0.29984522, 0.1470966, -0.0684779, -0.07071314, -0.026773235) * go_0(1.0, -1.0); - result += mat4(0.19091596, 0.082110435, -0.5266589, -0.1744098, -0.015838385, -0.046316292, 0.023171103, -0.03731331, 0.2642396, 0.31824252, -0.041754793, -0.09525519, -0.14696182, 0.052168854, 0.039857205, -0.027555354) * go_0(1.0, 0.0); - result += mat4(0.15207373, 0.09845733, 0.0142631065, 0.096375965, 0.06089903, 0.17902578, -0.42391995, 0.22475442, 0.016356342, -0.06277531, -0.12173141, -0.18635495, -0.0013459618, 0.15725887, 0.019310836, 0.20293565) * go_0(1.0, 1.0); - result += mat4(-0.18395247, 0.30672902, 0.09034339, 0.1821889, -0.0419004, -0.2169228, -0.14052129, 0.11006559, 0.1709272, 0.51062274, 0.13758625, -0.2242552, -0.030382963, 0.3357568, -0.26491287, 0.02501938) * go_1(-1.0, -1.0); - result += mat4(0.040511727, 0.12523083, -0.27318433, 0.08388512, 0.25354835, 0.3404216, -0.2632471, -0.17784123, 0.2732347, 0.4468553, 0.084667034, -0.1856242, 0.034099877, -0.00954992, -0.32751867, -0.062207516) * go_1(-1.0, 0.0); - result += mat4(0.17564747, 0.11645554, -0.16362113, 0.105654195, -0.2762563, -0.1413764, 0.23264363, -0.14000498, 0.095402054, 0.0715738, -0.19346157, -0.028285999, 0.009799127, 0.04059529, 0.19688335, 0.1282381) * go_1(-1.0, 1.0); - result += mat4(0.23575781, -0.11446148, -0.20504695, 0.035568226, 0.36890212, -0.85968876, -0.18545328, 0.33796397, -0.30916876, -0.10445518, -0.3046253, 0.33271998, -0.06263589, -0.2160114, -0.16383372, -0.31173357) * go_1(0.0, -1.0); - result += mat4(0.20469664, 0.4039374, -0.070057206, 0.030353077, 0.39843914, -0.15490077, -0.24476516, 0.38238233, -0.21809858, 0.23496576, -0.051794037, 0.033664484, -0.14411364, -0.2515329, 0.124655396, -0.05818785) * go_1(0.0, 0.0); - result += mat4(-0.09065731, -0.16787091, 0.013269188, 0.23687351, -0.41504318, -0.048163068, 0.31760025, -0.33648986, 0.29752317, 0.2926866, 0.14408836, -0.33382463, -0.15873958, -0.121961035, 0.11797893, 0.09000567) * go_1(0.0, 1.0); - result += mat4(0.13356976, 0.013763947, 0.012169505, -0.109594524, 0.03417223, 0.7031121, 0.65146804, 0.5250268, -0.50132495, -0.419648, 0.2940041, 0.83051753, -0.17595838, 0.1633008, -0.018587278, 0.079596795) * go_1(1.0, -1.0); - result += mat4(0.07570128, -0.1581438, 0.03904949, 0.14890033, -0.054611947, 0.17469402, -0.44252598, 0.036181703, -0.4981031, -0.37507218, -0.18466389, 0.2645845, 0.25189674, -0.025896115, 0.034307647, -0.020462232) * go_1(1.0, 0.0); - result += mat4(-0.11645865, 0.02296537, 0.040909223, 0.015069485, 0.062284566, -0.22526766, 0.09241534, -0.32623053, 0.18208642, 0.3954284, 0.2884468, -0.25137675, -0.037232924, -0.10185309, -0.17956531, 0.018966453) * go_1(1.0, 1.0); - result += vec4(-0.16371979, -0.024620198, -0.035754893, 0.04176776); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(S)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.01921286, -0.26684764, -0.12663573, 0.31641877, -0.25313398, 0.12264074, 0.58750325, -0.14084283, 0.5837018, -0.042300556, -0.20435576, -0.009954825, 0.060783498, 0.05540401, 0.2205112, -0.06578902) * go_0(-1.0, -1.0); - result += mat4(-0.21930243, -0.03774968, 0.22615197, 0.18338196, 0.011201461, -0.271034, 0.00573116, -0.12248194, 0.47990513, 0.2982416, -0.1087603, -0.050099242, -0.07620939, -0.07148229, 0.03691984, -0.16796488) * go_0(-1.0, 0.0); - result += mat4(-0.14962853, -0.053769328, 0.02387081, 0.22002189, 0.052237745, -0.26160842, -0.08603077, 0.012542448, 0.08119985, 0.075785555, -0.33437458, -0.43373227, -0.13206963, -0.08759176, -0.03288923, -0.09799959) * go_0(-1.0, 1.0); - result += mat4(-0.1305593, -0.5974288, 0.06058367, 0.08406488, 0.013692483, 0.06646377, 0.16469325, 0.08990975, 0.42217395, -0.11289523, -0.06165009, 0.48556912, -0.15702641, -0.19922857, -0.0035429662, -0.0022089656) * go_0(0.0, -1.0); - result += mat4(-0.1964807, 0.038099788, 0.21587034, 0.039734077, -0.07063389, 0.11604167, -0.24558097, -0.08900199, -0.7684516, -0.1037487, -0.09380674, 0.33144563, -0.16653742, 0.0028585843, -0.33774406, -0.0528696) * go_0(0.0, 0.0); - result += mat4(-0.27298656, -0.05665099, 0.09661685, 0.19780266, 0.1025106, -0.22055034, -0.21218458, -0.040628925, 0.0095010325, 0.13118382, -0.42582452, -0.22197723, 0.21006055, -0.06189587, -0.15285942, -0.09526762) * go_0(0.0, 1.0); - result += mat4(-0.14494462, -0.046788953, 0.065877035, 0.09911713, 0.35096622, 0.16682479, 0.028363144, 0.36037162, 0.29413632, 0.28212717, -0.025364442, -0.3406269, 0.047262143, -0.11892685, -0.008032766, 0.29743317) * go_0(1.0, -1.0); - result += mat4(-0.15191558, -0.36980554, 0.14555687, 0.0043930537, -0.012661432, 0.15737776, -0.115250416, 0.10324491, 0.24491951, -0.15575431, -0.27802598, 0.21959937, 0.18063772, 0.4455559, -0.09693302, 0.33382267) * go_0(1.0, 0.0); - result += mat4(0.2717801, 0.13452889, 0.14105384, 0.16324317, -0.40111846, 0.1154301, -0.0076733204, -0.09697362, 0.44306824, -0.02831414, -0.2153124, -0.12075326, 0.060776163, 0.30347148, -0.0036976219, -0.12070682) * go_0(1.0, 1.0); - result += mat4(-0.39780128, -0.29875937, -0.12952097, 0.080333896, 0.07520163, 0.021689568, -0.23121156, -0.038140096, -0.1593877, 0.017156163, -0.06038025, 0.009244022, -0.13917233, 0.30957314, 0.243109, -0.104947075) * go_1(-1.0, -1.0); - result += mat4(-0.07965157, 0.06776501, -0.13288979, 0.005851189, -0.08768168, -0.03689969, 0.12034646, 0.22441491, 0.14453568, -0.17648841, -0.3378289, -0.018329712, 0.11722939, -0.34161824, 0.08424494, -0.01400687) * go_1(-1.0, 0.0); - result += mat4(0.08153887, 0.07222914, -0.14663404, -0.038526025, -0.07385973, 0.18440577, 0.35890242, 0.17084727, 0.26345527, 0.15280858, -0.007446105, -0.024403179, -0.30336383, -0.22978698, 0.11612946, -0.23614909) * go_1(-1.0, 1.0); - result += mat4(-0.07447396, 0.09023449, -0.13798, -0.086943336, -0.30787337, 0.15087669, 0.14418626, -0.03371195, 0.048989657, -0.13075387, -0.13458036, -0.059836224, 0.06495196, 0.269715, 0.3674355, 0.38956037) * go_1(0.0, -1.0); - result += mat4(0.34981915, -0.048779126, 0.31717536, 0.38080826, -0.20149232, -0.82969636, -0.10167862, 0.6382858, 0.25976858, 0.4370118, -0.04724865, -0.10014156, 0.19380626, -0.080370255, 0.09578106, -0.035166856) * go_1(0.0, 0.0); - result += mat4(-0.026443917, 0.4132611, 0.01822534, 0.12742202, -0.26652107, -0.2996705, 0.30905882, 0.07989903, 0.38249823, 0.21486135, 0.025314959, -0.14717339, -0.13344015, -0.32088286, -0.2833883, -0.30973712) * go_1(0.0, 1.0); - result += mat4(0.021517841, 0.006556378, 0.2025686, -0.12044382, -0.38583103, -0.0027515136, -0.06556736, -0.097090125, 0.04676486, -0.11954886, -0.051612873, 0.07831412, -0.18823163, -0.16542958, 0.04245155, 0.6437998) * go_1(1.0, -1.0); - result += mat4(-0.39475346, -0.2936861, 0.26768062, -0.28151843, 0.21935691, 0.2101108, -0.15455097, 0.19548604, 0.09188909, -0.020147726, 0.103328265, -0.12574542, -0.34167948, 0.07523185, -0.17669058, 0.62446547) * go_1(1.0, 0.0); - result += mat4(-0.37661025, -0.29630858, 0.05451026, 0.1611643, 0.14079669, -0.2170294, -0.038716137, 0.13514164, -0.21235192, -0.07860726, -0.005749412, 0.025625167, -0.13297133, 0.33012658, -0.27434957, -0.18416783) * go_1(1.0, 1.0); - result += vec4(-0.0036821906, -0.050239526, -0.01355402, 0.00048220603); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(S)-Conv-3x3x3x8 -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_2_tf -//!SAVE MAIN -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.15873, 0.17989138, 0.14648493, 0.0, -0.017379675, -0.017363746, -0.019855022, 0.0, 0.009670625, 0.0070157526, 0.0075994316, 0.0, 0.025388412, 0.027231036, 0.024052646, 0.0) * go_0(-1.0, -1.0); - result += mat4(0.048195973, 0.041760173, 0.037366055, 0.0, -0.115950756, -0.12887983, -0.12535639, 0.0, 0.032125086, 0.03397254, 0.032950625, 0.0, 0.01223746, 0.020822672, 0.0161561, 0.0) * go_0(-1.0, 0.0); - result += mat4(0.0890567, 0.094453335, 0.09014035, 0.0, 0.016081346, 0.017434116, 0.020783134, 0.0, -0.011775135, -0.010094134, -0.018522855, 0.0, 0.072103254, 0.07940666, 0.065876864, 0.0) * go_0(-1.0, 1.0); - result += mat4(-0.04841196, -0.06963968, -0.056574684, 0.0, 0.10912542, 0.11813441, 0.10643838, 0.0, -0.013013885, -0.01562045, -0.013802797, 0.0, 0.037505716, 0.04352026, 0.04645123, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.3472869, -0.36243078, -0.33530185, 0.0, 0.23654196, 0.2305048, 0.22150646, 0.0, -0.045226905, -0.041799217, -0.042511635, 0.0, -0.10267792, -0.1123385, -0.10845448, 0.0) * go_0(0.0, 0.0); - result += mat4(0.011987401, 0.012285043, 0.007813165, 0.0, -0.15911353, -0.17523928, -0.1535267, 0.0, 0.15675929, 0.16531634, 0.15948962, 0.0, -0.09240023, -0.09513292, -0.084187366, 0.0) * go_0(0.0, 1.0); - result += mat4(0.069052905, 0.07278333, 0.0756627, 0.0, -0.012180326, -0.018794727, -0.031050753, 0.0, -0.044663202, -0.04362803, -0.038904265, 0.0, -0.008540197, -0.011201734, -0.01556625, 0.0) * go_0(1.0, -1.0); - result += mat4(-0.08261173, -0.09042543, -0.07589266, 0.0, 0.043515377, 0.045066774, 0.04037769, 0.0, -0.06262993, -0.07469342, -0.058593787, 0.0, 0.026696987, 0.028740842, 0.037405368, 0.0) * go_0(1.0, 0.0); - result += mat4(0.07975598, 0.09597654, 0.08997132, 0.0, -0.07844719, -0.07880916, -0.06835411, 0.0, 0.05668995, 0.050163813, 0.053357534, 0.0, -0.020040333, -0.019867316, -0.01907621, 0.0) * go_0(1.0, 1.0); - result += mat4(-0.017078733, -0.017393313, -0.008266595, 0.0, -0.0033478448, -0.0027439648, -0.0042334674, 0.0, -0.06354017, -0.062058125, -0.04652064, 0.0, -0.010787706, -0.0062706997, -0.007573461, 0.0) * go_1(-1.0, -1.0); - result += mat4(-0.019895451, -0.016341688, -0.008712399, 0.0, 0.026231976, 0.023955572, 0.0216376, 0.0, -0.061950512, -0.05481285, -0.05261985, 0.0, -0.018804235, -0.016235247, -0.0131616965, 0.0) * go_1(-1.0, 0.0); - result += mat4(-0.055628926, -0.063315354, -0.057192408, 0.0, -0.0256364, -0.028660972, -0.02937357, 0.0, -0.017604912, -0.020851422, -0.016070362, 0.0, -0.0870202, -0.0832279, -0.07525406, 0.0) * go_1(-1.0, 1.0); - result += mat4(0.062738225, 0.07106593, 0.061644047, 0.0, -0.06068257, -0.06983662, -0.066070385, 0.0, 0.024919355, 0.03227179, 0.028569462, 0.0, -0.07866227, -0.098967604, -0.092128105, 0.0) * go_1(0.0, -1.0); - result += mat4(0.040397774, 0.047241107, 0.03962998, 0.0, -0.09112752, -0.10057507, -0.09301817, 0.0, 0.10833967, 0.101835825, 0.10027467, 0.0, 0.27189335, 0.27433604, 0.26781923, 0.0) * go_1(0.0, 0.0); - result += mat4(-0.044211388, -0.042373534, -0.03658007, 0.0, 0.113148406, 0.12423258, 0.107804194, 0.0, -0.17081551, -0.18562958, -0.17475435, 0.0, 0.09636739, 0.10763415, 0.093332425, 0.0) * go_1(0.0, 1.0); - result += mat4(-0.03798545, -0.047811143, -0.050768293, 0.0, 0.018775463, 0.026812987, 0.03452908, 0.0, 0.0055677597, 0.0039081173, -0.0017878668, 0.0, -0.10728597, -0.12618187, -0.109045394, 0.0) * go_1(1.0, -1.0); - result += mat4(0.06359783, 0.064184755, 0.04934199, 0.0, -0.009819327, -0.006616115, -0.007431496, 0.0, 0.025055679, 0.024787048, 0.017360551, 0.0, -0.047140837, -0.061695747, -0.06440822, 0.0) * go_1(1.0, 0.0); - result += mat4(0.060199022, 0.06482763, 0.059514645, 0.0, 0.026998974, 0.028776823, 0.024897143, 0.0, 0.17968474, 0.19337215, 0.16760105, 0.0, 0.0075838566, 0.010503482, 0.011993149, 0.0) * go_1(1.0, 1.0); - result += vec4(-0.0052927984, -0.0060193934, -0.0048643993, 0.0); - return result + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/Anime4K_Restore_CNN_VL.glsl b/assets/shaders/Anime4K_Restore_CNN_VL.glsl deleted file mode 100644 index 0810c8d56..000000000 --- a/assets/shaders/Anime4K_Restore_CNN_VL.glsl +++ /dev/null @@ -1,873 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(0.1690102, -0.2560719, 0.39658326, -0.3679659, -0.27616683, -0.35619372, -0.3748396, 0.08430813, -0.29574734, -0.31511316, -0.09773105, 0.13616018, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(-0.1326393, -0.259433, 0.025070239, 0.58914864, -0.036478516, 0.30723435, 0.007458902, 0.012962684, 0.2493056, 0.13007334, -0.08448256, -0.38414413, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(-0.11539356, 0.35253766, 0.26143202, 0.2760807, -0.09371543, -0.028165473, -0.028452158, -0.27050856, 0.06718067, -0.0056619495, -0.17654495, 0.17288211, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(-0.16145481, -0.3204927, -0.54317135, 0.11830119, 0.49315026, 0.12008072, 0.50857407, -0.30382085, 0.25807253, 0.020755528, 0.29388228, 0.106109895, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.22728722, 0.50484747, -0.07904469, 0.33114597, 0.50306976, -0.22760947, 0.14773269, 0.17628263, 0.14788547, -0.08223464, -0.10880935, -0.3151985, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(0.3414351, 0.057279214, -0.14419858, 0.09761111, -0.11794496, 0.021717256, -0.22750235, 0.13986664, -0.38932344, 0.28996095, 0.3773904, 0.13175532, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(0.1376552, -0.19587159, -0.35147396, -0.097646296, 0.1686707, -0.14385861, 0.031198, 0.12383533, -0.23089902, 0.08707301, 0.3362293, -0.100579016, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(-0.056774966, 0.047585852, -0.36395878, -0.20211312, 0.4077735, 0.12631284, 0.39813092, -0.033365678, 0.2307249, -0.09131807, 0.20823865, 0.31084216, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(-0.12456089, 0.09755632, 0.31490886, -0.06579996, -0.13386595, 0.07564795, -0.26605195, -0.075180635, -0.11182657, 0.06757017, -0.14351276, -0.16828312, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(-0.046043985, 0.055581126, -0.08791638, -0.13022089); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf1 -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.15485518, -0.29363206, -0.22610365, -0.14291525, -0.45240572, -0.18319772, -0.12209436, 0.15031648, 0.09878383, 0.06711082, 0.25763842, -0.084633484, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(-0.10204406, 0.16167697, 0.22371867, -0.37947702, -0.24476196, -0.038824454, 0.060157117, 0.15764871, -0.08072927, -0.2210841, -0.31835055, 0.009979876, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(0.20506924, 0.21132155, -0.0922578, -0.07430473, 0.14529926, 0.20549752, 0.0077948375, 0.13246094, -0.32353187, 0.21074104, 0.092629515, 0.17590871, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(0.04125819, -0.44050243, 0.23729716, 0.3218237, 0.12943116, -0.011674174, 0.10390632, 0.027775545, -0.20308031, -0.16904089, -0.2121676, -0.022515794, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(0.09664124, 0.20127031, 0.60345304, 0.16697013, 0.23093723, -0.38116834, 0.109695725, 0.0007595324, 0.4092646, 0.009624758, 0.11229678, 0.25326383, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(0.014879592, 0.19204311, 0.07102085, -0.7312604, 0.34860876, 0.3429918, -0.027331594, 0.27636307, 0.1342437, 0.107820466, -0.12645108, 0.21081445, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(-0.12687613, -0.09247973, -0.25973785, 0.4350873, -0.18987224, 0.028678741, -0.0903819, -0.63974863, 0.205591, 0.11308998, 0.18458389, -0.4149041, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.34691808, -0.025498383, 0.3428986, 0.21663484, 0.23404741, -0.1725327, -0.0036315925, -0.13299675, -0.1873967, 0.031331502, -0.08785591, -0.0013278709, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(-0.35846514, 0.048703704, -0.104165934, 0.16529736, -0.15378916, 0.26030356, -0.07134151, 0.03692383, -0.15807101, -0.18885155, 0.044707954, -0.11444462, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(-0.0022791293, -0.024132347, -0.57621074, 0.028573977); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.010346764, 0.07230188, -0.24734616, -0.09937907, 0.02228549, -0.19550583, -0.019540425, -0.1037373, 0.033996485, -0.075554, -0.20228972, 0.07090153, -0.09194035, -0.058972966, 0.1768268, 0.27517542) * go_0(-1.0, -1.0); - result += mat4(0.020078976, 0.12433655, -0.1620775, 0.036401592, 0.079748705, 0.11660013, 0.17917652, -0.017513236, -0.18936846, 0.24478136, -0.45726213, -0.045004416, -0.08295188, 0.067733586, -0.080548316, 0.2744211) * go_0(-1.0, 0.0); - result += mat4(0.024916803, 0.27562472, 0.043771956, -0.012240604, 0.0786355, 0.042651594, 0.16049327, -0.14577515, -0.032735053, 0.17658092, 0.16382934, -0.02337374, 0.11551492, 0.056343183, -0.17930213, 0.14259394) * go_0(-1.0, 1.0); - result += mat4(0.20010485, 0.06747722, -0.19026905, 0.11013709, 0.13062745, -0.044626113, -0.0062261797, 0.2189639, 0.1403497, -0.022713251, -0.19452858, -0.010305412, -0.06407589, 0.09836748, 0.025805516, 0.23430973) * go_0(0.0, -1.0); - result += mat4(-0.14664203, 0.034910418, 0.024714258, -0.066872925, -0.15717538, -0.14179383, -0.14091893, 0.05859166, 0.18919097, -0.18544437, -0.09068573, -0.08615929, -0.051434122, 0.2170678, 0.18409058, -0.17461225) * go_0(0.0, 0.0); - result += mat4(-0.11354446, 0.10745854, 0.2682663, 0.05949201, -0.10695986, 0.1407851, -0.03551388, 0.10691649, -0.17148238, -0.38287184, 0.2074456, 0.11828914, 0.048535194, 0.1464864, -0.18169662, -0.14074169) * go_0(0.0, 1.0); - result += mat4(0.22160622, -0.1513045, -0.053284165, 0.033202525, 0.15574448, -0.043640967, -0.0093824165, -0.0019965349, -0.097964935, -0.08289824, 0.08239996, 0.07868361, 0.05731752, -0.20441617, -0.013016076, -0.253108) * go_0(1.0, -1.0); - result += mat4(-0.031249097, -0.2272863, 0.23573665, 0.03357689, 0.011395065, -0.10885564, -0.06287508, -0.031719524, 0.10331069, 0.17560169, 0.18303394, 0.022961004, -0.17011635, -0.24371737, 0.10678694, -0.3222825) * go_0(1.0, 0.0); - result += mat4(-0.1275465, -0.08844758, 0.10994917, -0.00910273, 0.09393154, 0.03894992, 0.14367905, -0.11811715, -0.09077633, -0.015776094, 0.27427456, -0.13283503, 0.18724327, -0.08139094, 0.04933602, -0.051852766) * go_0(1.0, 1.0); - result += mat4(-0.06764611, -0.27426586, 0.12045272, 0.09410856, -0.14258035, 0.11802992, -0.09093882, 0.0022018093, 0.4590643, 0.046258576, -0.07827223, 0.448011, -0.103631735, -0.016930219, -0.15421398, 0.11045997) * go_1(-1.0, -1.0); - result += mat4(-0.17295076, 0.00151352, 0.14938255, 0.08336512, -0.07496541, -0.07561223, -0.0846474, 0.14979269, -0.09142163, 0.23925088, -0.015199518, -0.37749895, -0.20636298, -0.022585187, -0.20371509, 0.0745308) * go_1(-1.0, 0.0); - result += mat4(0.06458832, -0.009722021, -0.123604394, 0.06548835, -0.3039139, -0.022024399, 0.05297587, -0.0626883, 0.23556642, 0.1516464, -0.07004877, -0.1845364, -0.05918428, 0.19158973, -0.14983447, 0.030489758) * go_1(-1.0, 1.0); - result += mat4(0.36604697, 0.17516142, -0.10853731, -0.22694224, -0.107650936, 0.23013335, 0.094055794, -0.17047717, -0.3006048, -0.08621717, -0.18815655, -0.03570218, 0.09676118, -0.017718751, 0.059138596, 0.073388465) * go_1(0.0, -1.0); - result += mat4(-0.12791575, 0.101956226, 0.13091874, -0.046373338, 0.04955811, -0.04030444, 0.13869923, -0.046699073, -0.42611042, -0.7173929, 0.052184317, 0.6178025, -0.02929954, -0.07638965, -0.15000828, 0.030710017) * go_1(0.0, 0.0); - result += mat4(0.057806686, 0.20842272, -0.20148766, 0.006666912, 0.13356528, -0.45265228, -0.07354092, 0.21447696, 0.019552143, -0.13645506, 0.14643854, -0.0071413796, -0.15487236, -0.002250615, 0.30622452, 0.0033902125) * go_1(0.0, 1.0); - result += mat4(0.06896002, 0.24397352, -0.06479052, 0.20676947, -0.24259068, 0.055320013, -0.09032122, -0.11222854, -0.08982342, -0.114818625, -0.06399291, -0.3024516, -0.06302166, -0.1925528, 0.03458982, 0.028828239) * go_1(1.0, -1.0); - result += mat4(0.09764086, 0.09599894, -0.0073313303, 0.14418933, -0.045712367, 0.12657364, 0.04620374, -0.069778584, 0.30047333, -0.012418192, 0.15516461, -0.18087754, 0.08178273, 0.14262857, -0.01741533, -0.12509112) * go_1(1.0, 0.0); - result += mat4(0.04697884, -0.1506804, 0.031823065, 0.13397239, -0.18396698, 0.10681781, -0.29586303, -0.0039136545, 0.17560847, -0.12486726, -0.018646788, -0.20688744, -0.030614454, -0.0527634, 0.23593572, -0.10542146) * go_1(1.0, 1.0); - result += mat4(-0.19182229, -0.32615846, 0.26283535, -0.1371942, -0.071202695, 0.12056063, -0.11450658, -0.27711076, -0.42096004, 0.0014352369, 0.1559669, -0.14464542, -0.17973948, 0.079166576, -0.12501791, -0.20623216) * go_2(-1.0, -1.0); - result += mat4(0.12469872, 0.32190827, -0.059510354, 0.1393449, -0.12845798, -0.019571869, -0.22630808, -0.14031963, 0.36072046, 0.05858427, 0.19278921, 0.121090546, -0.067538865, -0.018770566, 0.14318037, -0.15561756) * go_2(-1.0, 0.0); - result += mat4(0.024663208, 0.21110268, -0.016415706, 0.060093414, -0.03739678, -0.107412934, -0.077527136, 0.30331334, 0.17196326, -0.15512557, -0.09499732, -0.15748607, -0.16680105, -0.015185634, 0.16114107, -0.21288376) * go_2(-1.0, 1.0); - result += mat4(-0.17739037, -0.1190967, 0.13191372, -0.2527187, -0.14992718, -0.30511454, 0.19145966, 0.002194003, -0.12888977, 0.19152176, 0.27528167, 0.099714965, 0.12865707, -0.12051514, -0.055013947, 0.26231763) * go_2(0.0, -1.0); - result += mat4(0.46433613, -0.11708138, -0.20157282, 0.32022122, 0.079468675, 0.029407484, 0.2559102, -0.15651533, 0.08644574, -0.09747344, -0.07528584, 0.17354868, 0.19167562, -0.17698488, -0.09896657, 0.17093097) * go_2(0.0, 0.0); - result += mat4(0.20283653, -0.33680332, 0.2282385, 0.18832158, 0.20866042, 0.00076752366, 0.16471444, -0.21548858, 0.16193539, 0.17141372, 0.03140222, 0.03913644, -0.030161971, 0.00014570929, 0.08993654, -0.064823024) * go_2(0.0, 1.0); - result += mat4(-0.3075755, 0.19942546, 0.015526995, -0.120868504, -0.254515, -0.07791228, 0.03271691, 0.11794217, 0.11258601, 0.045204375, -0.061196107, -0.115958795, 0.3861869, 0.048215542, 0.07016682, -0.009975758) * go_2(1.0, -1.0); - result += mat4(-0.07623697, 0.16094944, -0.02283455, 0.14112763, -0.051149167, 0.20429814, 0.011314802, 0.18914083, -0.24240434, -0.08784008, -0.16763984, -0.08492233, 0.31062725, -0.11925119, -0.33195966, 0.2060798) * go_2(1.0, 0.0); - result += mat4(-0.016709225, -0.14472668, -0.3677625, -0.09832719, 0.030297454, -0.05775362, -0.1401375, 0.08119674, -0.01795042, 0.05183797, -0.24320887, 0.066842034, -0.22245285, -0.02740993, 0.06316751, 0.053399116) * go_2(1.0, 1.0); - result += mat4(-0.039214406, -0.08876633, 0.045552462, 0.19226661, 0.1355001, -0.13942362, 0.17398876, 0.2914014, -0.191809, 0.037143208, 0.013333581, -0.16632195, 0.113767646, -0.106692605, 0.1589787, 0.030107044) * go_3(-1.0, -1.0); - result += mat4(0.21997562, 0.13855208, -0.05783191, -0.033682413, -0.010961168, 0.10524961, 0.02177416, 0.18289444, 0.043692037, 0.07853899, -0.039936125, -0.1004449, 0.04494073, -0.020680292, 0.17578089, -0.106598996) * go_3(-1.0, 0.0); - result += mat4(0.026852835, -0.16037546, 0.11278316, 0.12656097, -0.006857894, -0.03400118, -0.051564034, 0.00085412664, -0.37556714, -0.05279987, 0.029383834, -0.14246808, -0.056380164, -0.002399925, 0.16025752, 0.036324855) * go_3(-1.0, 1.0); - result += mat4(0.022709966, 0.046350412, 0.03390721, 0.02810572, -0.14394265, 0.04215361, -0.3206118, 0.15034916, -0.0028448137, 0.1682989, -0.042686664, 0.020543462, -0.2786501, -0.007482015, -0.040313292, -0.20745736) * go_3(0.0, -1.0); - result += mat4(0.05417556, 0.18728684, -0.046121832, -0.27939513, 0.05907976, -0.09191223, -0.16625418, -0.26038164, 0.39956605, -0.052594025, -0.0596556, 0.29517552, -0.015181923, -0.0763375, 0.25131205, 0.13038464) * go_3(0.0, 0.0); - result += mat4(-0.036903054, -0.0066989153, -0.062650286, 0.05614359, -0.0064960583, 0.028512698, -0.10906273, -0.010047654, 0.23030473, 0.049983572, 0.10439064, 0.26643834, 0.05041243, 0.09185424, -0.32352915, 0.11295159) * go_3(0.0, 1.0); - result += mat4(0.09724027, -0.34962535, 0.06586686, 0.016635379, 0.13831381, 0.01707076, -0.04690347, 0.022350075, 0.018352794, 0.022000022, 0.070613205, 0.117735535, -0.025971051, 0.18832101, -0.09643588, -0.08512127) * go_3(1.0, -1.0); - result += mat4(-0.17324433, 0.06810613, -0.057295907, -0.05115964, -0.101570815, 0.12491774, 0.08762367, -0.005862404, -0.05342927, -0.031942457, -0.039624047, -0.04298937, -0.1303138, -0.11869282, -0.024832053, 0.070463404) * go_3(1.0, 0.0); - result += mat4(-0.010514842, 0.1376259, -0.11750346, -0.03786737, 0.03459249, 0.015408171, -0.031430878, -0.060825355, -0.072958425, -0.0037895301, 0.041686177, -0.12352204, -0.06261361, 0.054514423, -0.34072715, 0.13860728) * go_3(1.0, 1.0); - result += vec4(0.018166734, -0.11002478, -0.05554318, -0.0988193); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!SAVE conv2d_1_tf1 -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.040142782, 0.0288423, 0.07569487, -0.01490842, 0.14402796, -0.13682005, 0.027765118, 0.03907358, 0.07117706, 0.058157545, -0.23862502, -0.057674367, -0.19220531, 0.0147159435, -0.18028538, 0.0963821) * go_0(-1.0, -1.0); - result += mat4(-0.1676744, -0.11937339, 0.12137117, 0.07119485, 0.14148116, -0.043578617, -0.029261118, -0.0016938087, -0.057269357, -0.080076694, 0.12193026, 0.07326153, -0.056278303, -0.01630716, -0.03792076, 0.1483611) * go_0(-1.0, 0.0); - result += mat4(-0.3021578, 0.011601693, 0.11266048, 0.19086999, -0.0122412145, 0.08431291, 0.11615175, -0.008039614, -0.39987534, 0.07820729, 0.03509667, 0.1963505, -0.08839513, -0.21571854, 0.059425723, -0.06830175) * go_0(-1.0, 1.0); - result += mat4(0.23135209, -0.12452708, 0.0943565, 0.0028859286, -0.09836373, 0.10681712, -0.3535964, 0.08457615, 0.045332734, 0.16579892, -0.03809797, -0.021596594, 0.2937497, -0.028294371, 0.046484597, -0.037604347) * go_0(0.0, -1.0); - result += mat4(0.072675414, -0.16431206, 0.28952035, 0.0076831076, -0.020242939, 0.029483542, -0.092415355, 0.08673106, 0.12109694, 0.14307201, 0.23134442, 0.11731775, 0.09981601, -0.16968462, 0.037470713, 0.14948717) * go_0(0.0, 0.0); - result += mat4(0.0029752052, 0.06526503, 0.1866458, 0.07451277, -0.31836876, 0.17115082, -0.13969697, 0.23844297, -0.03244903, -0.08832665, 0.023691226, -0.18230624, -0.074933805, -0.00044301842, 0.050572682, 0.081511915) * go_0(0.0, 1.0); - result += mat4(0.039502528, 0.051221415, -0.13968123, -0.091212444, -0.016925618, 0.15409444, -0.017455677, -0.11653652, 0.03539446, -0.00087720866, -0.12839639, 0.037198763, 0.03674469, -0.26444665, 0.019721227, -0.13013805) * go_0(1.0, -1.0); - result += mat4(0.039229527, 0.25667152, 0.0032586441, -0.00718359, 0.1617932, 0.10409968, 0.07182867, -0.09810605, 0.07789241, -0.02014911, 0.025767172, -0.14604759, 0.07175764, 0.32513744, -0.20473222, -0.16266066) * go_0(1.0, 0.0); - result += mat4(0.13418433, 0.061813723, -0.13927278, -0.2498272, 0.03468218, 0.29483125, 0.063289374, -0.04726235, 0.1898295, -0.33132064, 0.032045014, 0.02159535, -0.1148363, 0.31306976, 0.06456038, 0.048988886) * go_0(1.0, 1.0); - result += mat4(0.07151646, 0.2799246, -0.107190795, -0.16431166, -0.28007045, 0.07206954, 0.06775463, 0.009758042, 0.07032184, -0.20843789, 0.087045245, 0.1360676, -0.25718534, 0.028249472, -0.12614648, 0.009949602) * go_1(-1.0, -1.0); - result += mat4(0.020241471, -0.23390484, -0.0083223935, 0.08344701, 0.08222297, 0.12026539, -0.08652223, -0.08228822, -0.039576706, -0.24677879, -0.1157289, 0.2590508, -0.23809408, 0.19911982, -0.116798095, -0.035870325) * go_1(-1.0, 0.0); - result += mat4(0.024991842, 0.050509237, -0.024134455, -0.12659028, 0.24089767, 0.122712664, -0.10482493, -0.19403952, -0.19177693, -0.06538376, -0.041478425, 0.32176673, -0.1534002, -0.18680622, 0.06763643, 0.020806564) * go_1(-1.0, 1.0); - result += mat4(0.03437814, -0.28067374, 0.2830681, 0.038812317, -0.021698112, -0.120865285, 0.22695538, -0.045419116, -0.030475847, -0.01977341, -0.1265364, -0.3109814, 0.012255813, 0.053917278, -0.018620957, -0.14599285) * go_1(0.0, -1.0); - result += mat4(-0.016204128, -0.04093018, 0.054571863, 0.02679643, 0.01756274, -0.057685968, 0.16148666, 0.17370272, -0.11065411, 0.06378157, -0.09331551, 0.22985275, 0.057905316, 0.12323568, 0.07748665, 0.09878629) * go_1(0.0, 0.0); - result += mat4(-0.018112244, 0.063234635, -0.013184602, 0.16241394, 0.08877139, 0.02145378, -0.02490027, -0.038920373, 0.13127136, 0.14391647, 0.020553736, 0.14401346, 0.06685973, -0.25398204, 0.10369067, -0.055949755) * go_1(0.0, 1.0); - result += mat4(0.07710333, 0.047412727, 0.13813803, 0.18624061, 0.16907091, -0.039532468, 0.06234584, 0.06408178, -0.054543987, -0.045220226, -0.11093376, -0.37399602, 0.20372874, 0.004580967, -0.07742308, 0.017989937) * go_1(1.0, -1.0); - result += mat4(0.003485311, -0.08897399, -0.013108594, -0.19473282, -0.27081844, -0.16812073, 0.0052992934, -0.055331517, 0.09446357, 0.019280333, 0.16560757, -0.3230032, 0.043096773, 0.059222896, -0.064184934, -0.059852477) * go_1(1.0, 0.0); - result += mat4(0.06794279, -0.034135245, 0.083064295, 0.13506731, 0.13064219, -0.44978833, -0.03513717, 0.08999715, 0.1124541, 0.42208397, -0.0038724816, -0.014332087, -0.13751853, -0.04929869, 0.09134992, -0.17687531) * go_1(1.0, 1.0); - result += mat4(0.100909084, -0.0131197255, 0.082274795, -0.2138443, -0.08515947, -0.021058358, 0.10951775, -0.06349191, -0.29129833, -0.029262653, 0.25235432, -0.11748315, 0.121980384, 0.062347785, 0.10916932, -0.15993518) * go_2(-1.0, -1.0); - result += mat4(0.28893283, -0.05677308, -0.2641288, -0.058937225, -0.16187571, 0.006647366, -0.063294955, 0.04766719, 0.60601914, -0.07831864, -0.15710756, -0.011491797, 0.15587467, -0.08105375, 0.07847514, -0.2803333) * go_2(-1.0, 0.0); - result += mat4(-0.077989794, -0.09871811, -0.3516344, 0.15292728, 0.010889273, 0.0011189661, -0.16118282, -0.018821161, -0.039708678, -0.00060983415, -0.06367813, 0.009148068, 0.03919827, 0.18782744, 0.028040757, -0.10230145) * go_2(-1.0, 1.0); - result += mat4(-0.4079609, 0.18640275, -0.12475227, 0.13891742, 0.25121725, 0.16942379, 0.14409852, 0.087600805, 0.045335658, -0.12683709, -0.0077387216, 0.06563413, -0.19857128, 0.106910795, -0.048285246, 0.10768945) * go_2(0.0, -1.0); - result += mat4(0.5989075, 0.20941062, -0.20086494, 0.13344856, 0.073034994, 0.22358665, 0.101664364, -0.13463663, 0.18816395, -0.061176624, -0.14712185, 0.027320342, -0.09529667, 0.031148786, -0.28744993, 0.18698911) * go_2(0.0, 0.0); - result += mat4(0.14799193, 0.39471942, -0.23340325, -0.4031061, 0.18926248, -0.11091216, 0.118981816, -0.09155061, 0.17049436, 0.19803695, -0.1513267, 0.023817873, 0.0090933135, -0.04134864, 0.060486555, 0.03536634) * go_2(0.0, 1.0); - result += mat4(-0.39094314, 0.01779997, 0.12710269, 0.0067333193, -0.31255835, -0.08206612, -0.048528638, 0.369439, -0.19351655, -0.03420455, 0.15831526, -0.052294146, -0.08481741, 0.0787108, 0.1312136, -0.108919285) * go_2(1.0, -1.0); - result += mat4(-0.16068119, -0.42190582, 0.19383872, -0.018445708, 0.09803051, -0.020769652, -0.022599563, -0.052448895, -0.20645833, -0.031432863, 0.0025441595, 0.03410379, -0.20268854, 0.04481527, 0.05191063, 0.42317194) * go_2(1.0, 0.0); - result += mat4(-0.12786235, -0.23936178, 0.116561726, 0.30756372, -0.09420156, -0.044529166, -0.03585749, 0.1829332, -0.23939075, 0.24030831, 0.019878127, -0.015069802, 0.24300557, -0.22558568, -0.104956664, -0.09393648) * go_2(1.0, 1.0); - result += mat4(-0.04607054, 0.012677649, -0.027597688, 0.1618836, 0.29210827, 0.014221155, -0.13591036, -0.06895336, -0.09559534, 0.07956421, -0.11112994, -0.13325493, 0.24562472, 0.11046177, 0.057847694, 0.0016315983) * go_3(-1.0, -1.0); - result += mat4(-0.03365951, 0.027391057, 0.09653403, -0.14718771, -0.049631152, -0.06467214, -0.058545876, 0.1424002, -0.06320376, 0.181183, 0.10249362, -0.16052136, 0.3013475, -0.04156266, 0.08862033, 0.06888033) * go_3(-1.0, 0.0); - result += mat4(0.10045977, -0.004198456, -0.025856055, 0.05739418, -0.1328637, -0.025975171, 0.06553717, 0.11301186, 0.0704087, -0.083569765, 0.16066101, -0.24453588, 0.25370175, 0.037184533, 0.062386766, -0.20025635) * go_3(-1.0, 1.0); - result += mat4(-0.017958941, 0.06417776, -0.1525265, 0.12451173, 0.14567685, -0.0049682115, -0.23973411, -0.0783304, -0.010629432, 0.08055161, 0.2028341, 0.17640644, -0.20445108, -0.055524793, -0.019326134, 0.081288636) * go_3(0.0, -1.0); - result += mat4(0.007882519, -0.03722546, 0.053249408, 0.00071846246, -0.07053029, -0.21583866, 0.1415364, -0.19486657, 0.20685542, 0.17660026, -0.32156837, 0.1746825, -0.14957622, -0.09224378, -0.098153435, -0.13054638) * go_3(0.0, 0.0); - result += mat4(0.10051427, -0.17398237, 0.09842799, -0.14187703, 0.116901085, -0.1229543, -0.0007776771, -0.20410055, -0.11373484, -0.111150615, -0.1974002, -0.11641459, 0.024105398, 0.24985977, 0.015871854, -0.10724633) * go_3(0.0, 1.0); - result += mat4(-0.18081793, 0.1209351, -0.12867971, -0.019415248, 0.062617876, -0.037130393, -0.07803658, -0.22862352, 0.2586428, -0.030090366, -0.11894069, 0.18087515, -0.40921417, 0.070013195, 0.030540073, 0.035120826) * go_3(1.0, -1.0); - result += mat4(-0.13185939, 0.12992652, 0.08125049, 0.075331174, 0.064219765, 0.056629725, -0.020012032, -0.0855444, -0.044063166, -0.05396545, -0.028002812, 0.21837157, -0.15206428, -0.12681007, 0.14895032, 0.12339962) * go_3(1.0, 0.0); - result += mat4(0.08066341, -0.14773634, -0.0212227, -0.014011867, -0.048505764, 0.075407125, -0.020620076, 0.0003291325, -0.21815202, -0.23136546, 0.10853532, -0.036058456, 0.10952532, -0.052677035, -0.13005799, 0.18398996) * go_3(1.0, 1.0); - result += vec4(0.022609137, -0.028548084, 0.024431901, 0.010504478); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.069641694, 0.104958326, 0.14786446, 0.027633663, -0.004279524, -0.020451711, 0.0883571, -0.016224537, 0.13585235, 0.11078269, 0.20198658, -0.042161036, 0.020466218, 0.20994963, 0.20072585, -0.028024657) * go_0(-1.0, -1.0); - result += mat4(0.050872434, 0.12874635, 0.1298729, 0.115810685, 0.07087254, 0.09885682, 0.23018982, 0.19187538, 0.10953604, 0.0033836907, -0.13325337, 0.09830315, -0.06528767, 0.05096927, -0.016355392, -0.039334368) * go_0(-1.0, 0.0); - result += mat4(0.027010268, 0.018263958, 0.0360758, 0.016791478, 0.2815702, 0.15517488, 0.43415815, 0.044976447, -0.0070842914, -0.12546758, 0.16874593, 0.077622116, 0.02252915, 0.1769774, 0.07181055, -0.15128697) * go_0(-1.0, 1.0); - result += mat4(0.057129618, 0.118046716, 0.07237424, -0.07842637, -0.044214778, -0.12886304, 0.08603301, -0.10416606, -0.15852053, 0.3788151, 0.26181692, -0.09092249, 0.31635332, 0.064212754, 0.21923725, 0.07500004) * go_0(0.0, -1.0); - result += mat4(-0.16981383, 0.044409662, -0.3717617, -0.031610407, 0.03658662, -0.09459229, -0.09449437, -0.014000666, -0.19656453, 0.03934163, -0.16304104, -0.12761801, -0.06235523, 0.16438273, -0.036933117, -0.095564745) * go_0(0.0, 0.0); - result += mat4(0.09725091, 0.034022827, 0.17699842, 0.1079676, -0.13236652, 0.03718181, -0.06968635, -0.23288171, 0.10275666, 0.08464966, -0.37162134, -0.35782215, -0.11023659, 0.2519236, -0.035197742, -0.019324787) * go_0(0.0, 1.0); - result += mat4(-0.09968464, 0.01102193, 0.0073735216, 0.011999313, -0.004998707, 0.09518938, 0.045727003, -0.21544908, 0.006879454, -0.06398254, -0.12584935, -0.06759933, -0.0820037, -0.07775104, 0.021957919, -0.122708224) * go_0(1.0, -1.0); - result += mat4(-0.08869767, 0.031296413, -0.0034280645, 0.13778855, 0.10073061, -0.08393937, -0.032959275, -0.0500518, 0.010908757, -0.09189417, -0.057760105, 0.17652664, -0.08729078, -0.09639096, -0.25654703, 0.055152636) * go_0(1.0, 0.0); - result += mat4(0.0027847723, -0.12885433, 0.038065907, 0.17450769, 0.0864409, 0.04592345, -0.015443841, 0.077010944, 0.08967368, 0.06800111, -0.23636387, 0.35023567, 0.03165923, 0.03132063, 0.17964344, 0.035610788) * go_0(1.0, 1.0); - result += mat4(-0.032017227, -0.0022808525, -0.08470573, 0.05332408, -0.14674746, 0.025374275, -0.018281924, 0.041163016, 0.00096549373, 0.014724006, 0.004913065, 0.18494442, 0.034953076, -0.15731992, -0.13792977, 0.08041999) * go_1(-1.0, -1.0); - result += mat4(0.08305006, 8.6318905e-05, -0.007895379, 0.02731387, -0.061324496, 0.050034665, 0.22662131, -0.013876427, -0.074468784, -0.008136604, -0.23337875, -0.1742574, 0.011753501, -0.11666686, -0.22541048, -0.14549944) * go_1(-1.0, 0.0); - result += mat4(-0.028333234, 0.121047184, 0.06720256, -0.058930036, 0.030258363, 0.07292774, 0.06455556, 0.0019076486, 0.0073987027, 0.17144889, 0.06084024, -0.08762086, -0.114422195, -0.16595861, -0.08706028, -0.10736261) * go_1(-1.0, 1.0); - result += mat4(-0.02519315, -0.14611271, 0.0388848, 0.19481422, -0.05970354, -0.08391417, 0.18982239, -0.10447052, 0.15587378, -0.023997072, 0.0781739, 0.2182389, -0.023886079, -0.1422596, -0.13352804, 0.005008043) * go_1(0.0, -1.0); - result += mat4(0.08842712, -0.100292705, 0.18925671, 0.12198875, 0.061771665, -0.04473232, 0.025053164, 0.039047796, -0.1672479, -0.08934517, 0.33099812, -0.20269585, -0.21640155, -0.22029749, 0.16539703, -0.2442679) * go_1(0.0, 0.0); - result += mat4(-0.16332205, -0.101898365, 0.02919932, -0.11900455, 0.14442924, 0.0916815, 0.037550304, 0.024123482, 0.02042624, 0.033472955, -0.059437107, -0.18735693, -0.013749093, -0.06199881, -0.08685079, 0.04252364) * go_1(0.0, 1.0); - result += mat4(-0.09047013, -0.055188328, -0.09106191, -0.048969727, 0.05114009, -0.12753403, 0.07116141, 0.060749624, -0.074034564, -0.21952136, -0.09479503, 0.2753584, -0.014141759, -0.14883812, -0.0673838, -0.012279045) * go_1(1.0, -1.0); - result += mat4(0.013816464, -0.0747162, -0.19202435, -0.064403646, 0.34980014, 0.04375546, 0.20264609, 0.006684355, 0.11523799, 0.024674915, -0.08697566, -0.04662527, -0.12743855, -0.39463726, 0.0057380227, 0.01286557) * go_1(1.0, 0.0); - result += mat4(-0.08146522, 0.074080914, -0.16856177, -0.183158, 0.19228102, 0.12373886, 0.017574452, -0.01753772, 0.045071773, 0.07725093, 0.023422163, -0.011545186, 0.20751388, -0.10795588, 0.07606346, 0.10282933) * go_1(1.0, 1.0); - result += mat4(0.12512013, -0.102208994, -0.09125398, 0.12043188, -0.066011876, 0.08831903, -0.017038671, -0.005541508, -0.049607087, 0.08654939, -0.02037085, 0.26887566, 0.005012545, 0.01869507, -0.013064982, -0.010649147) * go_2(-1.0, -1.0); - result += mat4(0.006824864, -0.05071593, -0.20786697, -0.07327317, 0.011382597, 0.030494886, -0.04754353, -0.018284699, 0.01305972, -0.036589053, 0.26637617, 0.021887446, -0.026669119, -0.037982125, -0.063445956, -0.009104248) * go_2(-1.0, 0.0); - result += mat4(0.032602567, 0.07094331, 0.052653246, 0.08342047, -0.085082285, -0.14674088, -0.23073354, -0.07915851, 0.0017120204, 0.032407638, -0.039819505, 0.16942178, 0.023192152, -0.0353237, 0.10930186, 0.22939779) * go_2(-1.0, 1.0); - result += mat4(0.0010455973, -0.11821993, -0.12639599, 0.12250084, -0.12756817, 0.11478416, -0.1862587, 0.016819192, 0.02110181, -0.25492984, -0.1766048, 0.22188173, -0.21305011, 0.113442205, 0.04599144, -0.15840286) * go_2(0.0, -1.0); - result += mat4(-0.15086032, -0.17428935, 0.39080557, 0.07576757, 0.121703945, 0.17944208, -0.003140103, -0.11231332, 0.12102969, 0.15310267, 0.17578171, 0.40631834, -0.21299168, 0.024928993, 0.030104794, 0.020753227) * go_2(0.0, 0.0); - result += mat4(-0.098734386, -0.020072265, -0.14308836, -0.08490801, 0.017175158, 0.02250534, 0.04060829, 0.033022214, 0.0046218676, 0.17923212, 0.0112105915, 0.09574084, 0.14819936, -0.14692923, 0.12634254, 0.060762513) * go_2(0.0, 1.0); - result += mat4(0.030521613, -0.097913325, -0.016720278, 0.11273997, 0.013019863, -0.06557118, 0.0405774, 0.0915019, 0.022414956, -0.053254984, 0.18639986, 0.07820968, 0.06498986, 0.058922634, -0.02240318, -0.086019725) * go_2(1.0, -1.0); - result += mat4(0.2058775, 0.01502064, 0.05847032, 0.007249146, 0.086483665, 0.19420148, 0.03892261, -0.013546935, -0.07980237, 0.04347281, -0.10376214, -0.1366535, 0.05285337, 0.07213318, 0.3642818, -0.11331124) * go_2(1.0, 0.0); - result += mat4(-0.025740806, 0.14551482, -0.037410017, -0.17477523, -0.11853099, -0.060820814, -0.102599286, -0.13267937, -0.103053465, -0.014044828, -0.01888072, -0.06499249, 0.22311528, -0.051850274, -0.034120858, 0.044562567) * go_2(1.0, 1.0); - result += mat4(-0.21360217, 0.10093803, -0.0016407765, -0.1473997, 0.26524043, 0.02112132, 0.23173104, -0.013157391, 0.05945182, 0.044635538, 0.06031638, -0.21435826, -0.10147484, 0.069090195, 0.09641844, -0.09581093) * go_3(-1.0, -1.0); - result += mat4(-0.08576515, -0.122861005, 0.049567085, -0.085854456, 0.23809357, -0.024966082, -0.10294079, 0.046241313, 0.008621132, -0.08323767, 0.20277941, 0.163423, -0.07386535, -0.088738985, 0.05274358, -0.025479877) * go_3(-1.0, 0.0); - result += mat4(-0.041135542, -0.008365642, 0.17088248, 0.04025207, 0.13809255, -0.056895368, -0.01582834, 0.07361908, -0.00068995473, -0.09300962, 0.19117641, 0.24832036, -0.06572358, -0.026025, -0.019093119, -0.049720034) * go_3(-1.0, 1.0); - result += mat4(0.024900286, 0.11525501, 0.025882801, 0.037742402, 0.36976853, 0.052211333, -0.15143296, 0.1802276, -0.059080046, 0.017990451, 0.026395092, -0.12689115, -0.07705386, 0.1232379, 0.13273561, -0.12521964) * go_3(0.0, -1.0); - result += mat4(-0.19788785, 0.044887315, 0.07663442, 0.16688696, -0.2842248, -0.15684547, 0.028387763, 0.0063470444, -0.012245601, -0.038382255, -0.8187406, -0.25245667, 0.23014604, 0.22746666, 0.1594356, 0.16469443) * go_3(0.0, 0.0); - result += mat4(-0.12663333, 0.014730006, 0.03765697, 0.15704912, -0.106595434, -0.05317512, -0.081759915, -0.08797109, 0.064620756, -0.06341419, 0.16493447, 0.23102313, 0.068325415, -0.088058695, 0.16885915, 0.036382258) * go_3(0.0, 1.0); - result += mat4(0.035389822, -0.11811836, -0.035656307, -0.0680554, 0.1338908, 0.065852076, 0.023307983, 0.0675308, 0.09690683, 0.18170924, 0.09862692, -0.20964378, -0.08601271, -0.20016764, -0.01879598, -0.14629345) * go_3(1.0, -1.0); - result += mat4(-0.27183273, 0.013525998, -0.14995874, -0.23938845, -0.26218823, -0.0009874097, -0.13385512, -0.10664239, -0.048931994, 0.039898522, 0.047444753, 0.10934722, 0.10969629, 0.123539805, 0.11692802, 0.14172275) * go_3(1.0, 0.0); - result += mat4(-0.1656506, 0.019683002, 0.0221048, 0.12596753, 0.20420644, -0.07930122, 0.04653823, 0.11492255, -0.0050175437, -0.03271697, 0.013389486, 0.034583613, -0.2196601, -0.1615663, -0.013763388, -0.056037936) * go_3(1.0, 1.0); - result += vec4(-0.022956269, 0.029688787, -0.070148066, -0.07163476); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!SAVE conv2d_2_tf1 -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.15104648, 0.05522861, -0.0654341, -0.053517453, -0.08264124, -0.0062249107, -0.20364265, -0.05015117, -0.18837251, 0.030655831, 0.046844713, -0.20673253, -0.14042036, -0.05655449, 0.13994302, 0.011745607) * go_0(-1.0, -1.0); - result += mat4(-0.16517559, 0.1489214, -0.09149559, 0.025003506, -0.124926426, 0.16974348, -0.020857265, 0.08017403, 0.21836148, 0.0025619378, 0.2331612, 0.085599184, -0.030934382, -0.055194855, 0.09527726, -0.10081552) * go_0(-1.0, 0.0); - result += mat4(0.041800212, 0.028859638, 0.09395546, 0.05211183, -0.038541477, 0.021495212, 0.04862346, -0.007864793, 0.038407274, -0.13841268, -0.14963801, 0.26470762, 0.16691841, -0.07262008, 0.034374326, -0.14709206) * go_0(-1.0, 1.0); - result += mat4(0.00094978884, -0.028974704, -0.0900548, -0.08401967, -0.08935931, -0.043606587, -0.14497143, -0.05226239, -0.21516493, 0.19410603, -0.089924194, -0.04335071, -0.012618276, -0.2671613, 0.020422975, -0.037739716) * go_0(0.0, -1.0); - result += mat4(-0.13403237, -0.02524383, -0.03474901, 0.054432765, 0.11946775, 0.107336655, -0.1431715, -0.13370377, 0.015087512, -0.1917613, 0.073493585, 0.2788855, -0.010510839, 0.06891479, -0.06741307, -0.05271205) * go_0(0.0, 0.0); - result += mat4(-0.15432046, 0.04021662, -0.16979513, 0.13660534, -0.10518303, -0.10095502, -0.13092068, 0.022805348, -0.16676381, -0.4273298, 0.020867536, 0.3506733, -0.29459694, -0.055828743, -0.069241956, 0.04106382) * go_0(0.0, 1.0); - result += mat4(-0.08890133, 0.07549666, -0.040735144, -0.1506932, -0.22227979, -0.0762723, -0.17766447, -0.05741318, -0.21885683, 0.2379157, -0.15525854, -0.07306285, 0.15580738, -0.04394069, -0.19175608, 0.018283797) * go_0(1.0, -1.0); - result += mat4(-0.08503275, -0.105500385, -0.114987396, -0.07166016, -0.2147138, 0.09378708, 0.24550334, -0.0834075, -0.033147786, -0.022304727, -0.31062204, 0.027651973, 0.109098755, 0.18889032, 0.1163026, 0.13863255) * go_0(1.0, 0.0); - result += mat4(0.15266588, -0.14901319, 0.033916786, 0.09381096, -0.08196443, -0.16194504, 0.035789456, 0.21234898, -0.48724765, 0.2619442, -0.11215393, 0.25061038, 0.022344576, 0.0116525125, 0.111661114, -0.15242295) * go_0(1.0, 1.0); - result += mat4(0.020475458, 0.0797404, -0.13576819, 0.009681671, 0.030504882, 0.049232908, 0.022025917, 0.16912088, -0.23914136, -0.084663324, 0.020925451, -0.1023938, 0.035916872, -0.07538111, -0.11470242, 0.15238516) * go_1(-1.0, -1.0); - result += mat4(-0.12941381, 0.08509899, -0.029489802, -0.09148447, -0.089406274, -0.116145454, -0.08979843, 0.11908148, 0.15473351, -0.21687616, 0.12607013, -0.08244334, -0.079580925, -0.16613089, -0.09287793, -0.03412643) * go_1(-1.0, 0.0); - result += mat4(-0.023578499, 0.07394217, -0.13069086, -0.1060499, -0.07559958, -0.21839201, 0.1090753, 0.0787872, 0.07677037, -0.25998843, 0.20039314, 0.046882212, 0.31871012, -0.3048051, 0.15118991, -0.00518087) * go_1(-1.0, 1.0); - result += mat4(-0.15338503, -0.11057532, 0.075839415, -0.18592294, -0.0155324, 0.038140323, -0.10498194, 0.09070477, 0.05108992, -0.047939524, -0.091004305, 0.09649005, -0.10967152, -0.051909525, -0.05314551, 0.09661584) * go_1(0.0, -1.0); - result += mat4(-0.14458802, -0.053263694, -0.0010885567, 0.23342133, 0.01918937, 0.12026143, -0.15691495, 0.30480555, -0.08725869, 0.19082253, 0.3594973, 0.016653897, 0.045152336, -0.088590585, 0.0069655925, 0.1392425) * go_1(0.0, 0.0); - result += mat4(0.17944881, -0.17950764, 0.13282645, 0.030974053, 0.32233685, 0.18067117, -0.11472813, 0.097301506, -0.047649745, -0.1053861, -0.081039384, 0.035132434, 0.10204545, 0.085582554, -0.13153993, -0.021741152) * go_1(0.0, 1.0); - result += mat4(-0.15573682, 0.16409989, -0.22574787, -0.03877603, -0.18285516, 0.11638645, 0.18321282, -0.017770218, 0.18230622, 0.16433364, -0.12795393, -0.03805153, 0.14386104, -0.0891527, -0.056928284, -0.10961495) * go_1(1.0, -1.0); - result += mat4(0.257622, 0.052519716, -0.25421762, -0.1887382, -0.083568096, -0.0064690276, -0.029110614, 0.103327505, -0.17006217, 0.2254096, -0.29366904, 0.04302887, -0.10198446, -0.24423616, 0.16781262, -0.005019004) * go_1(1.0, 0.0); - result += mat4(0.103393994, -0.059044626, -0.18192382, 0.0990813, -0.26143607, 0.11036474, 0.04788275, -0.096738026, 0.12825653, 0.13631694, -0.077904984, -0.020790676, -0.25118098, 0.122588515, -0.049440473, -0.10758222) * go_1(1.0, 1.0); - result += mat4(0.06693113, -0.13647175, 0.131139, 0.13143918, 0.081720434, 0.117537096, 0.15387627, -0.008771362, 0.08513583, 0.023794742, -0.0661625, 0.115793936, 0.0023350024, 0.02215075, -0.0494433, -0.013404977) * go_2(-1.0, -1.0); - result += mat4(0.041419264, -0.17622781, 0.028418267, 0.12114493, -0.23587078, 0.08457395, 0.014364018, -0.103271864, -0.051572207, -0.026424447, 0.16755055, -0.10763651, -0.033440586, 0.068594255, -0.050668504, 0.1941505) * go_2(-1.0, 0.0); - result += mat4(-0.2780181, 0.037816502, -0.11516711, -0.09822884, 0.13762361, -0.14317706, 0.14350282, 0.000623895, -0.08601606, 0.08118504, 0.15497385, -0.04721711, -0.008936935, -0.014223618, -0.09641698, -0.013884213) * go_2(-1.0, 1.0); - result += mat4(0.14349665, -0.03144472, -0.057813704, 0.0667044, 0.09026094, 0.051366236, 0.11139983, -0.015782114, -0.18314016, -0.18774192, 0.0014838242, 0.15759028, 0.062388215, 0.13626057, 0.02576217, -0.06317815) * go_2(0.0, -1.0); - result += mat4(0.07151769, 0.14508991, 0.1736844, -0.11487795, -0.07999805, -0.07797908, 0.037923355, -0.059138823, -0.23531209, -0.040207293, -0.068355694, -0.024296658, -0.114820175, 0.19726487, 0.21772414, 0.03659222) * go_2(0.0, 0.0); - result += mat4(0.16858695, -0.12135113, 0.009391182, -0.081519485, 0.13340487, 0.07007004, 0.094124354, 0.035519842, -0.3320139, -0.06624027, -0.14716229, -0.09205287, 0.12664132, -0.05655441, 0.0123263765, 0.04641279) * go_2(0.0, 1.0); - result += mat4(0.19018422, -0.15428329, -0.009354114, 0.04165953, 0.11024837, -0.107493006, -0.05807292, -0.048029456, 0.24319384, -0.10542357, -0.013699952, 0.06228662, -0.06808749, -0.023227982, 0.16528323, -0.05610251) * go_2(1.0, -1.0); - result += mat4(-0.008616222, 0.077674195, -0.08638503, 0.09293109, 0.072474636, 0.05004233, -0.20591061, -0.005301386, -0.15486047, 0.15038474, 0.1262478, 0.021724822, 0.02274613, -0.3088281, -0.08437887, -0.10684698) * go_2(1.0, 0.0); - result += mat4(-0.16960032, 0.09365251, -0.030414175, -0.010766254, 0.18181023, 0.12130318, 0.08913089, -0.06070321, 0.05200306, 0.092584535, 0.17694671, 0.033796314, -0.038107123, -0.04335955, -0.049443472, 0.30465958) * go_2(1.0, 1.0); - result += mat4(0.07661484, -0.009945252, 0.12866217, -0.07592757, -0.21030053, 0.014371748, -0.072458774, -0.04700072, 0.15534303, 0.2007125, -0.15699059, -0.032897495, 0.08110436, -0.11243608, 0.008632577, -0.10153441) * go_3(-1.0, -1.0); - result += mat4(-0.034697928, 0.06928288, -0.2796273, 0.14405379, 0.12248569, 0.036539096, 0.06607706, 0.077684596, -0.16473202, 0.1665916, -0.29977503, 0.21047153, 0.13114224, -0.091579035, -0.045458574, 0.03254245) * go_3(-1.0, 0.0); - result += mat4(0.053284872, 0.053366095, -0.26152626, -0.03123967, -0.031794485, 0.17670582, -0.07450994, 0.017521491, -0.040290453, 0.38342363, -0.25021288, -0.014660264, 0.1621895, 0.25041878, -0.12124821, 0.068036206) * go_3(-1.0, 1.0); - result += mat4(0.11366693, -0.030863572, -0.07411263, 0.12475283, -0.046070684, -0.09033321, 0.013222701, 0.06798592, -0.32814804, 0.057653826, -0.14082801, -0.00217398, -0.22856179, -0.19058353, -0.20992154, -0.03701372) * go_3(0.0, -1.0); - result += mat4(0.20345633, -0.1332355, 0.27152926, -0.13477845, -0.25242096, -0.28281286, 0.31289554, 0.14284514, 0.53362453, -0.46766588, 0.4518293, -0.39291728, -0.3573227, -0.014670052, 0.0051881406, 0.16552156) * go_3(0.0, 0.0); - result += mat4(-0.15017267, -0.07792945, -0.204405, 0.13964304, -0.13642666, -0.10228306, 0.03238279, -0.08689329, -0.072262034, -0.0258388, 0.05689183, 0.055701543, -0.19800112, 0.012217054, -0.033292748, -0.047611095) * go_3(0.0, 1.0); - result += mat4(-0.014704416, -0.12203891, 0.066083655, -0.1409769, 0.0041513643, -0.087383606, -0.17498164, 0.11327789, -0.25947225, -0.0016027623, 0.08202566, 0.042270098, 0.006429511, -0.26576808, -0.08461341, 0.049376782) * go_3(1.0, -1.0); - result += mat4(0.0695189, -0.14753938, 0.09578246, -0.16607563, -0.0105561055, 0.17166016, 0.027422488, -0.14175262, -0.009492696, -0.23449713, 0.018270867, 0.14635146, 0.33451268, 0.030959005, -0.46468422, 0.024256868) * go_3(1.0, 0.0); - result += mat4(-0.16865666, -0.00015881563, -0.054488145, -0.06222717, -0.032101758, 0.06485387, -0.0028512608, 0.046645947, 0.017593225, -0.19447896, -0.024742266, 0.03970127, 0.29845607, -0.16168733, 0.035172883, 0.07924657) * go_3(1.0, 1.0); - result += vec4(0.103826486, 0.045373913, 0.11565896, -0.06568643); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!SAVE conv2d_3_tf -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.1851775, 0.053705044, 0.033816848, -0.018555025, -0.21204336, -0.01706974, 0.088259794, -0.13126148, 0.10729598, -0.043457437, 0.08634712, 0.09220895, 0.062131613, -0.01995871, 0.05181067, 0.18520063) * go_0(-1.0, -1.0); - result += mat4(0.1662002, -0.14197104, -0.052809287, 0.025287712, -0.08330898, -0.08998097, -0.15642618, -0.14941245, -0.03481203, 0.061857622, 0.26051775, -0.0005498248, 0.086427025, 0.024108192, -0.12418039, 0.022286376) * go_0(-1.0, 0.0); - result += mat4(0.058200672, -0.3073398, 0.17150162, -0.13394679, -0.075118184, -0.14607768, -0.006172172, 0.007731589, -0.21818224, -0.06449433, -0.038958784, 0.037722416, 0.28699976, -0.027563032, 0.23295315, 0.028444216) * go_0(-1.0, 1.0); - result += mat4(0.12871371, 0.0064904913, 0.14985761, -0.10923005, 0.17413563, 0.1599109, -0.08457703, 0.108153716, -0.08871187, -0.06661137, 0.2754416, -0.009667768, 0.39819396, 0.12392097, 0.14145902, 0.0019376524) * go_0(0.0, -1.0); - result += mat4(0.13893189, 0.12715353, 0.015191678, -0.21003054, -0.030412354, -0.01676613, -0.19799289, -0.006130075, 0.37676954, -0.14475077, -0.2065198, -0.30432892, -0.14944535, -0.09121536, -0.107600585, -0.24462196) * go_0(0.0, 0.0); - result += mat4(-0.11653076, -0.0068671284, -0.02249137, -0.17877012, -0.15063138, -0.13514869, 0.107643366, -0.03196477, -0.086422764, 0.3079287, 0.17584166, -0.032449376, -0.06917114, -0.2682637, -0.18978168, -0.037039287) * go_0(0.0, 1.0); - result += mat4(0.12014731, -0.030360512, -0.12954475, -0.110275604, -0.077214256, 0.019689744, 0.22149551, -0.002266716, 0.09697784, -0.124532826, -0.16776511, -0.034212478, -0.36935154, 0.016926935, 0.1363609, 0.20415346) * go_0(1.0, -1.0); - result += mat4(-0.11199535, -0.001692563, -0.09058429, -0.08437503, 0.092625685, 0.06046257, 0.25509837, -0.011657033, -0.17949764, -0.10718947, -0.1180669, -0.24681842, -0.1747311, 0.0014518246, -0.042863015, 0.06103357) * go_0(1.0, 0.0); - result += mat4(0.14979295, -0.037154514, 0.01957725, 0.012282435, 0.09168596, -0.05552286, 0.111671515, 0.0078630615, -0.10319766, -0.06416261, -0.23097566, -0.13931875, 0.2110811, 0.013095802, -0.2306504, -0.025639111) * go_0(1.0, 1.0); - result += mat4(-0.10091975, -0.10095426, -0.023449723, -0.022170888, 0.054953706, -0.13049407, 0.08289061, 0.023241632, 0.08735388, -0.0058387457, 0.17897247, 0.011434436, 0.008181139, -0.0034718404, -0.015372735, -0.07657766) * go_1(-1.0, -1.0); - result += mat4(-0.023442164, 0.07535702, 0.024391165, -0.050532013, 0.044168636, 0.0062343236, -0.019756999, -0.009695123, 0.10102337, 0.0052776975, -0.14944167, -0.060957722, 0.24367364, -0.08069369, 0.12170072, -0.047048368) * go_1(-1.0, 0.0); - result += mat4(-0.18376935, -0.08407229, -0.12943378, 0.0738419, -0.12404976, -0.13367929, 0.11265896, -0.021353, 0.003783386, 0.50088304, 0.14058582, 0.041053623, 0.038247623, -0.014179976, 0.007905778, -0.042492237) * go_1(-1.0, 1.0); - result += mat4(-0.046272535, 0.052449115, 0.17190954, -0.004745371, -0.045572635, -0.09292636, 0.36309823, 0.16673928, -0.099154025, -0.109614775, 0.17803112, 0.19907133, -0.14306267, 0.06898593, 0.11493454, 0.06795014) * go_1(0.0, -1.0); - result += mat4(0.26181114, -0.044014625, -0.21605036, -0.08646438, 0.21038742, -0.084986, 0.0504626, 0.17514943, -0.25218952, -0.18691514, 0.057650108, 0.08653614, -0.101205684, 0.03176334, 0.18569492, 0.17973189) * go_1(0.0, 0.0); - result += mat4(-0.0339215, 0.20112811, -0.12986277, 0.028961731, -0.056813832, 0.04451147, -0.07827432, -0.0860976, 0.096853435, 0.3483546, -0.35758162, -0.11749375, -0.035918653, 0.06140711, -0.08520154, 0.02418808) * go_1(0.0, 1.0); - result += mat4(-0.09643022, -0.10491069, 0.0068604187, 0.023679713, 0.096521445, -0.29323488, 0.33353668, 0.112864286, -0.1172182, -0.07233183, 0.06607239, 0.08589609, 0.055790007, 0.14396138, -0.14191268, 0.00034840964) * go_1(1.0, -1.0); - result += mat4(0.15357164, -0.038462736, 0.08143956, 0.1744909, 0.40503287, -0.114508316, 0.003937322, 0.2536635, -0.042445306, -0.15622465, 0.09155284, 0.010992155, -0.20646071, 0.022801135, 0.08894491, 0.069300614) * go_1(1.0, 0.0); - result += mat4(-0.12663515, 0.023849454, -0.053604446, 0.12082873, -0.247968, -0.020969635, -0.03831894, -0.014617553, 0.22630337, 0.037801865, 0.052950703, 0.04285706, -0.14487264, 0.20786528, -0.08719664, 0.1752347) * go_1(1.0, 1.0); - result += mat4(-0.073527604, -0.050752833, 0.051830504, 0.32868716, 0.17474994, 0.016937364, -0.08792601, -0.024481766, -0.022229593, 0.030706186, 0.09213566, -0.076506205, 0.073404044, 0.10368055, -0.175889, -0.08453031) * go_2(-1.0, -1.0); - result += mat4(-0.06838216, 0.007698341, 0.063972116, -0.015604406, 0.16135305, 0.18044342, 0.024137018, -0.23326185, 0.13235588, -0.009096587, -0.058368143, -0.077040404, 0.0011419816, -0.09246194, 0.061036937, 0.049564146) * go_2(-1.0, 0.0); - result += mat4(0.023225296, -0.00060856267, -0.07775185, 0.016958566, -0.2641349, -0.08263046, -0.15350416, -0.30203494, 0.113956556, -0.010813236, -0.017738314, -0.13689043, -0.10318342, 0.025793184, -0.010336172, 0.09733422) * go_2(-1.0, 1.0); - result += mat4(-0.04462596, 0.052866418, -0.34754288, 0.05540498, -0.24492586, -0.32016864, 0.18145293, 0.24873725, 0.32388234, -0.034801524, -0.1347588, -0.07565546, 0.015183539, 0.05059595, 0.08090056, 0.05930932) * go_2(0.0, -1.0); - result += mat4(0.045346696, -0.052527856, 0.052270077, 0.13417454, 0.05200045, 0.028119288, 0.005115497, 0.22952151, -0.2158375, 0.12241308, 0.3507457, 0.08616576, 0.07592416, 0.28470486, 0.3432788, 0.24857087) * go_2(0.0, 0.0); - result += mat4(0.21311626, 0.052607164, 0.1248861, 0.20193806, 0.045226507, 0.14512901, -0.15103437, -0.17926466, 0.11657411, -0.32711068, -0.16332194, -0.07793982, -0.21802668, 0.5183869, -0.13567342, 0.07823041) * go_2(0.0, 1.0); - result += mat4(0.00796368, 0.048073012, -0.14537893, -0.021708772, 0.036246423, 0.1062395, 0.12605369, 0.007073524, -0.1572743, 0.07439501, 0.089162275, -0.0039608316, 0.332032, -0.05461242, -0.17615359, -0.10240517) * go_2(1.0, -1.0); - result += mat4(0.20636982, -0.0024615112, -0.10625786, 0.024270926, 0.061810836, -0.13585201, -0.16581286, 0.23549418, 0.01928842, 0.07404979, -0.054449487, 0.04096373, 0.046939734, 0.003980803, 0.02111498, 0.064925276) * go_2(1.0, 0.0); - result += mat4(0.10485388, 0.06850885, -0.11292169, 0.16991565, -0.15282536, 0.124175504, -0.050431166, -0.06689582, -0.00059811946, 0.033696912, 0.11055047, 0.033060126, -0.17472714, 0.0048819613, -0.04478706, -0.1344572) * go_2(1.0, 1.0); - result += mat4(-0.20473132, 0.056477875, 0.059559986, 0.115130566, -0.058425788, -0.035971727, 0.08334707, -0.096510135, -0.23206294, 0.10635798, -0.21575621, -0.07063254, 0.03877511, -0.107549034, 0.22248401, 0.21702304) * go_3(-1.0, -1.0); - result += mat4(-0.02557767, 0.09886609, -0.100499466, 0.16687396, -0.084830604, 0.03150401, -0.049512494, 0.05595696, -0.13193256, -0.08585273, 0.14247662, 0.12290477, -0.07168309, 0.14531752, -0.048359327, 0.27716598) * go_3(-1.0, 0.0); - result += mat4(0.13297586, 0.20674329, 0.14469388, 0.08981846, -0.004231366, -0.02819193, 0.15470329, 0.17299837, 0.113062344, -0.22716297, -0.21754944, -0.00083956274, -0.14160508, 0.1808253, 0.11268379, 0.27335623) * go_3(-1.0, 1.0); - result += mat4(0.07497518, -0.06799594, -0.018158078, -0.00038999433, -0.15169668, -0.06928238, -0.33672288, -0.105485775, 0.33106267, 0.06698315, 0.019718744, -0.06810211, -0.35186404, -0.29145968, -0.056863394, 0.21498048) * go_3(0.0, -1.0); - result += mat4(-0.013215512, -0.24763754, 0.20965266, 0.1068435, -0.13234195, 0.053566497, 0.05061848, -0.28645232, 0.15518288, 0.23247199, 0.017553907, -0.25181335, -0.048030723, -0.06663929, -0.111026704, -0.12663394) * go_3(0.0, 0.0); - result += mat4(-0.010501938, -0.17995767, 0.06010859, 0.050185587, 0.108627126, -0.101203434, 0.07558728, 0.060466755, -0.106942676, -0.35854608, 0.16015992, 0.16823332, -0.06543775, -0.37310675, 0.014043972, -0.18328045) * go_3(0.0, 1.0); - result += mat4(0.09712849, 0.013983463, 0.07291423, 0.031715546, 0.030862397, 0.045510456, -0.22066842, 0.063464865, 0.11721659, -0.10596602, -0.20611264, 0.052158818, -0.3961766, -0.03781582, 0.17633812, 0.1316111) * go_3(1.0, -1.0); - result += mat4(-0.25029674, 0.07153423, -0.35125682, -0.18255402, -0.19569087, 0.00432772, -0.0969035, -0.24648514, -0.0040922165, 0.037500706, -0.038137026, 0.056214277, -0.048258524, 0.03567822, -0.05033007, -0.24696785) * go_3(1.0, 0.0); - result += mat4(-0.03465209, -0.012495964, 0.22782089, 0.012034795, 0.2916752, 0.08264436, 0.15387125, -0.1473455, -0.15614432, 0.05536727, -0.027079755, 0.010725311, -0.03325222, -0.089212805, -0.10559839, -0.19647683) * go_3(1.0, 1.0); - result += vec4(0.0001705175, -0.031081453, 0.010100773, -0.027214011); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!SAVE conv2d_3_tf1 -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.026301445, -0.021575214, 0.22165509, 0.059994068, 0.03341161, 0.1831188, 0.20342293, 0.110160105, 0.03908121, 0.020673111, 0.07239561, 0.038754333, 0.15266368, 0.16526422, 0.062376205, -0.09759537) * go_0(-1.0, -1.0); - result += mat4(0.19817191, 0.10267733, 0.17744653, 0.23283184, 0.18810122, 0.2708428, -0.12651879, 0.020756349, 0.039632563, -0.22201295, 0.04873703, 0.09159713, 0.13838065, 0.21169297, 0.30816007, 0.044463675) * go_0(-1.0, 0.0); - result += mat4(-0.27859214, 0.07277634, 0.0021458792, 0.0089682285, -0.069680706, 0.090415835, -0.057762265, 0.18703683, -0.03514389, -0.102816254, -0.036509827, 0.038066104, -0.0168311, 0.094478935, 0.04079697, -0.049064912) * go_0(-1.0, 1.0); - result += mat4(-0.20913245, -0.110538535, -0.08584027, -0.1222067, 0.05414807, -0.045247085, 0.07351766, -0.002078549, -0.1270987, -0.10164512, -0.1857815, 0.08845066, -0.03743333, -0.098948084, 0.21244387, 0.10441866) * go_0(0.0, -1.0); - result += mat4(0.015990427, 0.36396438, -0.24094687, 0.30236533, -0.13271736, 0.06057376, -0.19678196, -0.28577125, -0.25427434, -0.08400598, 0.07284403, -0.18552442, -0.16425897, 0.097259276, -0.32386774, -0.2190484) * go_0(0.0, 0.0); - result += mat4(-0.004581924, -0.13954072, -0.122360416, 0.14132866, -0.08529257, -0.013296556, 0.0848472, 0.09336581, 0.10332182, -0.016313016, 0.07103558, 0.032564916, -0.13478759, -0.20207484, 0.12986964, 0.1219679) * go_0(0.0, 1.0); - result += mat4(0.09817874, -0.10573357, 0.100535244, 0.19608764, -0.13303067, 0.024192972, -0.030689823, 0.02574889, 0.051233094, 0.03489235, -0.18465245, -0.06943822, -0.031604882, 0.1519888, 0.09348508, 0.09187296) * go_0(1.0, -1.0); - result += mat4(-0.21365458, -0.23696984, 0.13097638, -0.09435498, 0.16467983, -0.066370346, 0.1269104, -0.095128186, 0.09954892, 0.12489504, -0.43418056, 0.106512725, -0.17860703, -0.07114084, -0.07630834, -0.26642478) * go_0(1.0, 0.0); - result += mat4(-0.009044342, 0.02711196, -0.14873673, 0.015405045, 0.0071443473, -0.025285944, 0.07409282, 0.06338527, 0.0149676185, 0.011741382, -0.2133069, -0.028912885, 0.19420496, 0.039629057, 0.057636812, 0.15214856) * go_0(1.0, 1.0); - result += mat4(0.07629928, 0.25540486, -0.050925937, -0.18136702, 0.02261603, 0.22343902, 0.003270321, 0.10735731, -0.12541203, -0.10208828, 0.012832783, 0.2591262, 0.08122926, -0.009837677, 0.10308358, 0.19236866) * go_1(-1.0, -1.0); - result += mat4(0.0896358, 0.27571487, 0.04406029, -0.047453407, -0.08587119, 0.16366854, 0.20622262, 0.08347545, -0.3501584, -0.28434548, -0.07592983, 0.09098784, 0.07605388, 0.09677056, 0.0015295541, 0.05102585) * go_1(-1.0, 0.0); - result += mat4(0.18255898, 0.18618028, 0.0017002645, -0.013004655, -0.06436534, 0.13967068, 0.063077755, -0.10632303, -0.20803222, -0.028537111, -0.03144366, -0.08555215, 0.05154303, 0.02431626, 0.15246728, -0.013708507) * go_1(-1.0, 1.0); - result += mat4(-0.020998938, -0.05026291, 0.03700117, 0.00830308, -0.1949294, 0.0026698054, -0.034649856, 0.19784226, -0.083901435, -0.069783084, -0.1504053, 0.16595264, -0.07480141, 0.16067508, 0.06010996, -0.021359695) * go_1(0.0, -1.0); - result += mat4(-0.040828142, -0.20158486, 0.034770954, -0.1894161, 0.11665004, 0.29729164, -0.10584386, 0.13165873, -0.18863006, -0.26719162, -0.047613148, -0.12728356, -0.2033613, 0.10550052, 0.20095508, -0.11275811) * go_1(0.0, 0.0); - result += mat4(-0.0785033, -0.1896073, -0.051492307, -0.1694358, 0.1368308, 0.049355216, -0.05707422, 0.079159185, 0.024578957, -0.0923136, 0.089215435, 0.28670043, 0.027932687, 0.06510816, 0.10810999, 0.05990052) * go_1(0.0, 1.0); - result += mat4(0.08135192, 0.0001326522, -0.16098668, -0.18663193, -0.10280192, 0.078255914, 0.047648013, 0.08326376, 0.055962667, 0.06302574, -0.080121025, -0.031820554, -0.019117938, 0.12515336, 0.09794088, -0.03276838) * go_1(1.0, -1.0); - result += mat4(0.280923, 0.24079335, 0.007883573, 0.06270414, 0.3055441, 0.19291803, -0.16041607, 0.14836526, 0.0013885222, 0.04538063, 0.10742898, -0.064491205, 0.048174977, 4.237692e-05, -0.15194727, 0.024381457) * go_1(1.0, 0.0); - result += mat4(-0.0009164131, -0.031949926, 0.0076425644, -0.036870714, -0.0031292974, 0.017726978, -0.20172147, -0.0770472, 0.26379177, 0.108997814, 0.08069395, 0.2126177, 0.012075376, -0.029457828, 0.062730506, -0.15754452) * go_1(1.0, 1.0); - result += mat4(0.09167904, -0.2657421, -0.03443356, 0.03315832, -0.015365421, -0.1029612, -0.108251, 0.04261033, -0.097120754, -0.05616668, -0.09275983, 0.024902184, 0.050058514, -0.013761632, 0.07555132, -0.0046676896) * go_2(-1.0, -1.0); - result += mat4(-0.10743835, -0.0007361781, -0.042085417, -0.08237517, -0.10094376, -0.24007876, 0.13924706, -0.07526801, 0.01158322, 0.15491122, 0.0069442675, -0.004242352, 0.11429785, 0.02994726, -0.11829945, -0.04108612) * go_2(-1.0, 0.0); - result += mat4(0.073622055, -0.064717196, -0.0025231615, 0.13256475, 0.20159899, 0.047977835, -0.10289233, -0.18419135, -0.00888952, 0.059428576, -0.053062655, -0.02730631, 0.14545685, -0.08686949, 0.17454128, 0.035443828) * go_2(-1.0, 1.0); - result += mat4(-0.010146019, 0.06712568, 0.12614638, 0.023590917, 0.025756737, 0.06603747, -0.17108095, -0.06179699, 0.027241204, -0.13196802, 0.043475866, -0.0397495, 0.05306092, 0.035672903, 0.047219284, -0.16680142) * go_2(0.0, -1.0); - result += mat4(0.079427816, -0.06716479, 0.19028603, -0.19694683, -0.061598092, -0.07471188, 0.21170339, 0.30140215, -0.0023369973, 0.04688297, -0.14154115, 0.19283508, 0.1339858, -0.09116279, 0.15305163, 0.029108394) * go_2(0.0, 0.0); - result += mat4(-0.14902157, -0.03339153, -0.08532003, -0.10736339, 0.08702709, 0.07607574, -0.09955836, -0.016585784, -0.030078214, -0.060374748, -0.2854279, 0.02441719, 0.034877967, 0.2099041, 0.11125731, -0.059071556) * go_2(0.0, 1.0); - result += mat4(-0.08436325, 0.06893047, -0.045362443, -0.02237741, -0.07583875, -0.034830183, -0.024008518, -0.2882329, -0.011109783, 0.101859994, 0.091137715, 0.0020565533, -0.044729806, -0.18168025, 0.069466636, 0.04994174) * go_2(1.0, -1.0); - result += mat4(0.11915174, 0.089596465, -0.18965814, 0.015218237, 0.13500094, 0.19921367, -0.008298205, 0.29650384, -0.049439427, -0.27590424, 0.36169067, -0.030582754, 0.02151196, 0.019915426, 0.04543398, 0.16126189) * go_2(1.0, 0.0); - result += mat4(0.1620274, -0.08264547, 0.082442135, -0.0034478644, 0.09888509, -0.0034957859, -0.107241705, -0.17729597, -0.05138647, 0.02052103, -0.019507123, 0.037574988, -0.1694345, 0.17871588, -0.22510391, 0.019049853) * go_2(1.0, 1.0); - result += mat4(-0.10962245, -0.1329873, -0.060855392, 0.025941676, -0.19536193, -0.120365486, -0.04313703, -0.052912965, 0.20854498, 0.08341353, 0.008687068, -0.20432276, 0.15677948, -0.19000018, 0.01821201, -0.041512605) * go_3(-1.0, -1.0); - result += mat4(0.012287526, -0.14180368, -0.098788455, 0.025949089, 0.09442778, 0.2247651, -0.12453263, 0.10435483, 0.274603, 0.06133054, 0.10506106, 0.14727746, -0.048299775, -0.082819685, 0.07319359, -0.047460355) * go_3(-1.0, 0.0); - result += mat4(-0.070726536, -0.034744017, 0.07521428, 0.070649154, -0.05958955, -0.100232825, -0.010651838, 0.045392875, 0.2930271, -0.04952355, 0.3112155, 0.117203265, 0.025166962, 0.11176862, 0.06716659, 0.07175864) * go_3(-1.0, 1.0); - result += mat4(-0.011560962, -0.14032063, -0.17424704, 0.07652749, -0.04220116, 0.052874275, -0.00225693, -0.031843517, -0.07520102, -0.13775803, 0.2449317, 0.069658786, 0.052280303, -0.105218224, 0.03574522, -0.020500354) * go_3(0.0, -1.0); - result += mat4(0.08793712, 0.26712346, 0.08315631, 0.23813692, -0.04439029, 0.031587064, 0.09561177, -0.13380238, -0.24982157, 0.31701845, -0.3875432, 0.10487225, 0.09201869, -0.037252493, -0.006935219, -0.14650282) * go_3(0.0, 0.0); - result += mat4(0.077635325, 0.13732299, -0.071563005, 0.096517466, -0.15051986, -0.111744404, 0.03996857, -0.052670125, -0.1819665, 0.054554947, -0.13774712, -0.20061246, -0.0023742192, 0.15647805, -0.024121126, 0.075497724) * go_3(0.0, 1.0); - result += mat4(0.0073632775, -0.06535298, 0.039895996, 0.20666869, 0.13625242, 0.04823007, -0.07135618, 0.04787906, 0.01383074, 0.15382123, -0.15519714, 0.056721795, 0.061946746, -0.0586851, 0.028934354, -0.02264129) * go_3(1.0, -1.0); - result += mat4(-0.19791882, -0.111910924, -0.010451344, -0.30566537, -0.1416239, -0.14523096, 0.116883226, -0.18241516, 0.2680614, -0.18487626, 0.17472346, 0.08346682, -0.14510359, -0.029229192, -0.005879142, 0.050247498) * go_3(1.0, 0.0); - result += mat4(0.030153519, -0.092469186, -0.022912916, 0.10200855, -0.04237032, -0.05917764, 0.10479645, -0.05619482, -0.18949397, -0.019547248, 0.013868889, -0.1524476, 0.14048979, -0.032521486, 0.1322921, 0.070972025) * go_3(1.0, 1.0); - result += vec4(0.012053958, -4.6962363e-05, 0.0020099226, -0.033494607); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!SAVE conv2d_4_tf -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.06738501, 0.034009207, -0.21538448, 0.14296548, 0.12896985, -0.23526315, -0.08848608, 0.019602662, 0.14937137, 0.11353096, 0.11884168, -0.016765572, 0.030985225, 0.046430565, 0.06614828, -0.19202724) * go_0(-1.0, -1.0); - result += mat4(-0.10326068, 0.11014975, 0.17069744, -0.21474148, 0.16761585, 0.13434832, -0.101021074, 0.006307025, 0.07478008, -0.1060066, 0.035315692, 0.033488914, -0.24906659, 0.06269967, 0.11120735, -0.040928528) * go_0(-1.0, 0.0); - result += mat4(0.09334615, 0.057705753, 0.12213245, -0.06402275, 0.30694544, 0.034585163, 0.20345578, 0.07489286, 0.07483618, -0.14240396, 0.034846418, -0.03811241, 0.010882573, 0.13204294, 0.017563924, -0.047203008) * go_0(-1.0, 1.0); - result += mat4(-0.21673942, -0.024010994, -0.10238504, -0.041160326, 0.06838163, -0.20950818, 0.06526309, -0.079094924, 0.02208821, -0.28130978, 0.086275116, -0.089067616, 0.12133826, -0.062600106, -0.020521903, -0.07654401) * go_0(0.0, -1.0); - result += mat4(-0.03055029, -0.15683146, -0.20331301, -0.06252028, 0.13350682, 0.20338707, 0.038425338, 0.1581342, -0.27322498, -0.14999662, -0.16681097, 0.0971585, -0.20014858, -0.081635274, -0.0781877, -0.20625232) * go_0(0.0, 0.0); - result += mat4(0.38375977, -0.019825654, 0.1886721, 0.22616312, 0.3402173, 0.1825304, -0.05531195, 0.30973226, -0.2676023, 0.14413352, 0.021706983, 0.01732799, 0.23466855, -0.13805965, 0.22570935, 0.018103868) * go_0(0.0, 1.0); - result += mat4(-0.15169825, 0.0270689, -0.2503316, 0.17289825, -0.16437647, 0.039233048, -0.35572487, -0.048393793, 0.19270042, 0.24260359, 0.12041881, -0.0009793913, 0.11656858, 0.11007414, -0.0757491, 0.047933612) * go_0(1.0, -1.0); - result += mat4(-0.18657999, -0.11252566, -0.05237504, -0.07368097, 0.13882741, -0.13710637, -0.006996468, -0.062354874, 0.23452504, 0.15333645, -0.0022776406, -0.17910439, 0.03629509, -0.16264829, -0.010011833, -0.15313338) * go_0(1.0, 0.0); - result += mat4(-0.060544558, -0.04913478, -0.061717357, 0.02323648, 0.28739056, -0.07434013, 0.19110644, 0.100050166, 0.0073363045, 0.08185653, -0.024797903, -0.14424153, -0.20838726, 0.16154376, -0.048517212, -0.025453888) * go_0(1.0, 1.0); - result += mat4(0.14975396, -0.13142908, 0.36210674, -0.054021083, -0.10632155, 0.045697935, -0.18946633, 0.02228141, -0.08919603, 0.09800842, -0.17634438, 0.09512711, -0.03425503, -0.12298555, -0.05354435, -0.17112055) * go_1(-1.0, -1.0); - result += mat4(0.09958265, -0.057276618, -0.16262266, -0.06415915, 0.14579074, -0.36784375, 0.08034197, -0.04537706, 0.005460582, 0.22313322, 0.07382161, 0.014990379, 0.044636846, -0.2811128, -0.22621547, -0.06044004) * go_1(-1.0, 0.0); - result += mat4(0.10569276, -0.03738662, 0.16100396, 0.058593616, -0.048862137, -0.08796426, 0.20101094, -0.11039573, 0.17196764, -0.04601554, 0.008571281, -0.073729075, 0.051433694, -0.051276565, 0.087334655, -0.0360379) * go_1(-1.0, 1.0); - result += mat4(0.011119538, -0.28781965, 0.28637868, -0.1742508, -0.07121849, 0.10379717, 0.012615981, -0.029563965, -0.18678424, 0.05291095, 0.039143506, -0.028248642, -0.014103922, 0.029155696, 0.10433492, 0.16305852) * go_1(0.0, -1.0); - result += mat4(-0.2231037, -0.13697462, -0.29124337, 0.08519773, 0.15893684, -0.17763218, 0.06950923, 0.34361118, -0.024844287, 0.044008408, -0.033844844, -0.086971916, -0.07884748, 0.2543499, 0.056884114, 0.10068364) * go_1(0.0, 0.0); - result += mat4(-0.07710048, -0.23218372, 0.04346047, 0.21769643, 0.06473219, -0.18066105, -0.2511205, 0.15309611, 0.04535977, 0.16450433, 0.10846344, 0.0016952346, -0.010874939, 0.28966382, -0.121990964, 0.12956186) * go_1(0.0, 1.0); - result += mat4(-0.007910202, 0.17766511, 0.14364475, 0.1016258, 0.0051045395, 0.18691733, 0.005813767, -0.0070582186, 0.019418601, -0.1604435, 0.016088275, -0.18265302, -0.15719391, -0.17369832, -0.036745597, -0.19647408) * go_1(1.0, -1.0); - result += mat4(0.08938396, -0.0073808245, 0.11225727, -0.012303106, 0.096785046, 0.030483445, 0.027719889, -0.052584838, -0.14887555, -0.03422243, 0.12646855, -0.1722482, 0.010239037, 0.06406088, -0.20053658, 0.01964698) * go_1(1.0, 0.0); - result += mat4(-0.120734036, -0.12450362, -0.06582111, 0.1639675, -0.19787048, -0.08049789, -0.014257596, 0.058436662, -0.0009387449, -0.08698089, -0.017400503, 0.06295286, 0.09890349, -0.057190523, -0.103520766, -0.04207548) * go_1(1.0, 1.0); - result += mat4(-0.0118413875, -0.031288836, 0.09749554, -0.012266401, -0.07998591, 0.22615653, -0.06207416, 0.03257896, -0.076378696, -0.079426095, -0.13968349, -0.15423697, -0.1091681, -0.02893125, -0.032659534, -0.063735925) * go_2(-1.0, -1.0); - result += mat4(0.119372696, 0.013176554, -0.029381052, 0.21919228, 0.045041792, 0.24844484, 0.26363325, 0.08480674, 0.087083444, 0.11984778, -0.088715754, 0.06421046, 0.05225977, -0.05140334, -0.055052705, -0.049854077) * go_2(-1.0, 0.0); - result += mat4(0.0035781674, 0.0861361, -0.07675145, -0.056479637, 0.16973391, -0.12113791, 0.10729832, -0.03773517, 0.058618728, 0.12148276, 0.17260705, -0.06968724, 0.076358154, -0.15307103, 0.17700425, -0.13467014) * go_2(-1.0, 1.0); - result += mat4(-0.02752418, -0.06366472, -0.025610954, 0.0013539721, -0.06465272, 0.0806373, -0.07336035, 0.10114861, 0.0041146413, 0.15878421, -0.044668555, -0.12150811, -0.1071482, -0.05086587, 0.18589285, 0.05065092) * go_2(0.0, -1.0); - result += mat4(0.07200056, 0.021739854, 0.29476613, -0.08475931, 0.15018553, -0.07886365, 0.36336347, -0.020576432, 0.25866082, -0.059272554, 0.054249667, -0.17822553, 0.1755872, 0.3244387, -0.39173844, 0.33894604) * go_2(0.0, 0.0); - result += mat4(-0.11570926, 0.1342677, -0.19511898, 0.0075454637, -0.01890476, -0.14239742, 0.18921931, 0.033990458, 0.31306365, -0.006998358, 0.029190077, -0.005679954, -0.15341778, 0.07766778, -0.25691047, -0.0964161) * go_2(0.0, 1.0); - result += mat4(0.019746238, 0.0021332854, -0.00879096, -0.1338671, -0.0001600663, -0.29465106, 0.0867611, -0.114963025, 0.07874301, -0.012734178, -0.11124061, -0.010926616, -0.04941506, -0.07516841, 0.116663, -0.29018974) * go_2(1.0, -1.0); - result += mat4(-0.01651721, 0.05955898, 0.023618208, 0.098695934, 0.018553663, -0.054378513, 0.1436929, 0.1693743, -0.27483663, 0.029127488, 0.09619316, -0.06109113, -0.08619361, 0.09315214, -0.02478657, 0.18544984) * go_2(1.0, 0.0); - result += mat4(0.09570196, -0.016528936, -0.1559397, 0.14312246, 0.04029428, 0.08773151, -0.043646842, 0.17894371, -0.082413055, 0.0027082344, -0.100171275, 0.01547501, 0.18122818, -0.11933676, 0.26404107, -0.3169703) * go_2(1.0, 1.0); - result += mat4(-0.12073344, 0.08683522, -0.09249099, 0.058786053, -0.14480567, -0.121013954, 0.033335857, 0.009353379, -0.055087596, -0.13002734, 0.08890566, 0.05508963, -0.0075715426, -0.15936922, -0.03968994, -0.1690259) * go_3(-1.0, -1.0); - result += mat4(0.2011206, 0.23898427, 0.23656492, 0.1287573, 0.14850396, 0.40532517, -0.107408255, 0.40119782, 0.099813245, -0.03830304, 0.101520434, -0.026478073, -0.048469637, 0.106440455, 0.056632314, -0.17825997) * go_3(-1.0, 0.0); - result += mat4(-0.076735444, 0.05965795, -0.0052469415, -0.21785147, 0.11887833, 0.067560315, 0.051149055, 0.23626682, -0.1297049, -0.035512198, 0.20352256, -0.025064934, 0.04958706, 0.0454198, 0.0113334535, 0.0417486) * go_3(-1.0, 1.0); - result += mat4(-0.09055751, 0.033915352, -0.21836667, 0.22006813, -0.099022895, 0.11720966, -0.15686816, -0.13586599, -0.094427735, -0.08831514, -0.06182928, 0.09213704, -0.03642064, 0.18129414, -0.012926811, 0.12179882) * go_3(0.0, -1.0); - result += mat4(0.19389409, 0.09512252, 0.14768016, -0.16623649, -0.031052284, -0.026814984, 0.106168024, -0.2026781, -0.04581419, -0.0016849053, -0.04101923, 0.038959503, -0.011938445, 0.20096186, -0.26666564, 0.4824324) * go_3(0.0, 0.0); - result += mat4(0.17727576, 0.07309147, 0.12131863, -0.163096, 0.17225246, 0.26256254, 0.27685758, 0.09094053, 0.029605515, -0.20217367, 0.047564875, 0.043115832, 0.15089568, -0.09670934, 0.24131384, 0.03337442) * go_3(0.0, 1.0); - result += mat4(-0.34192136, 0.12063195, -0.31159517, 0.04170889, -0.30147067, -0.21330686, -0.1514457, -0.121126845, 0.04409098, 9.2206596e-05, 0.027680017, 0.03230512, -0.27993527, -0.093485355, 0.07568645, -0.23585452) * go_3(1.0, -1.0); - result += mat4(0.0537712, -0.20847629, 0.1740093, -0.013894753, -0.32719997, -0.059484575, -0.006098233, -0.10336451, -0.14706188, -0.07424865, -0.07045905, 0.17093194, -0.22147557, 0.09086218, -0.11033544, -0.05306482) * go_3(1.0, 0.0); - result += mat4(0.00489003, -0.11509064, -0.021005848, 0.16637677, -0.089347586, 0.17545725, -0.17313693, 0.13742085, -0.14577347, 0.07951095, -0.092139855, 0.017118992, -0.053472433, 0.079414465, 0.0330263, -0.11189824) * go_3(1.0, 1.0); - result += vec4(-0.034743138, 0.012946433, -0.082333155, 0.07721756); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!SAVE conv2d_4_tf1 -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.25835788, 0.050451655, -0.1845038, -0.07232528, 0.1323318, 0.26276684, 0.10842882, -0.083056524, 0.17426784, -0.3594826, 0.2728965, 0.08388844, -0.004007842, 0.020535901, -0.051425606, 0.07750436) * go_0(-1.0, -1.0); - result += mat4(-0.11410436, 0.014572361, -0.27057216, -0.023974562, 0.05234827, 0.15328228, -0.17502303, -0.3199359, 0.12188045, -0.095813684, 0.024145132, 0.0856916, -0.027453909, -0.043129764, 0.16971985, 0.021623038) * go_0(-1.0, 0.0); - result += mat4(0.06611095, 0.038625732, -0.13717118, -0.04497733, 0.15213469, 0.04770935, 0.0729271, -0.062052976, 0.004571303, 0.035141192, -0.059409596, 0.044652313, 0.17520894, 0.09665589, -0.1479193, 0.06528058) * go_0(-1.0, 1.0); - result += mat4(-0.1845968, 0.091479465, -0.09394898, -0.13545018, -0.029501775, -0.21426639, 0.09255898, 0.1257644, 0.20256902, 0.06267267, 0.10378081, 0.13494423, 0.058310498, 0.03642236, -0.16268995, -0.048100803) * go_0(0.0, -1.0); - result += mat4(0.2155119, -0.3683131, 0.049449228, -0.20559964, -0.11761922, -0.2518804, -0.020712897, 0.12895772, -0.07543782, 0.5805017, -0.11301444, -0.038493153, -0.06710986, -0.09321189, 0.108671665, -0.03259695) * go_0(0.0, 0.0); - result += mat4(0.035307787, 0.108389005, -0.27493554, 0.27029404, 0.25523573, -0.28636125, -0.20766719, -0.008661457, -0.004480811, -0.046390545, -0.16221444, 0.008979624, -0.061375532, 0.035076566, -0.018924266, 0.01380219) * go_0(0.0, 1.0); - result += mat4(-0.051922515, -0.12463486, -0.10383422, 0.02220095, -0.1573033, 0.13980615, 0.13248625, -0.16803266, -0.0692132, -0.21552645, 0.13744529, 0.23034313, 0.0052666534, 0.028977966, 0.07720251, -0.06477756) * go_0(1.0, -1.0); - result += mat4(-0.14097473, 0.2770271, -0.172289, -0.03000696, -0.028684044, 0.040578447, -0.2290285, 0.082329154, -0.042402364, -0.20926563, 0.08233207, 0.11862443, -0.07038536, -0.02273004, 0.091550544, -0.065856494) * go_0(1.0, 0.0); - result += mat4(0.14879914, -0.023923844, -0.23569296, 0.20306346, 0.17502785, 0.28776234, -0.2788995, 0.10012439, -0.05635638, -0.025840463, 0.09222198, 0.118032, 0.08057015, 0.1286071, 0.060189806, -0.052669708) * go_0(1.0, 1.0); - result += mat4(0.07076086, -0.15111323, -0.07427972, 0.008372168, -0.17791592, -0.16254742, 0.013961132, -0.0944912, -0.23380096, 0.17377278, -0.09683394, 0.019931393, -0.12042098, 0.0016406325, 0.09393333, -0.06882231) * go_1(-1.0, -1.0); - result += mat4(0.21465093, 0.04142968, 0.06840044, -0.37831602, -0.05549571, 0.044905066, -0.07873589, -0.026804, -0.34764197, 0.022487951, -0.077293746, 0.089457795, -0.110094436, 0.24233972, 0.06285107, -0.10851744) * go_1(-1.0, 0.0); - result += mat4(0.093270175, 0.084138945, 0.03938272, 0.063565865, -0.010733802, 0.13554469, -0.06650261, 0.033002816, 0.011187271, -0.12821455, 0.20785914, -0.030438649, -0.124710515, -0.022294303, 0.09732408, 0.057609864) * go_1(-1.0, 1.0); - result += mat4(-0.12833868, 0.021577539, -0.02700365, 0.11799592, -0.03655647, -0.04225167, 0.11049353, -0.16036157, 0.049277548, -0.033842396, 0.10020137, 0.095509745, 0.08060231, -0.09237418, -0.035598125, -0.035926737) * go_1(0.0, -1.0); - result += mat4(-0.32829186, 0.3492363, 0.030671779, -0.12606762, 0.010437313, 0.2757115, -0.21517593, -0.15800527, -0.12592544, -0.20578934, 0.10444053, 0.12993255, -0.046079267, 0.03834173, -0.19277227, -0.22124454) * go_1(0.0, 0.0); - result += mat4(-0.052546192, 0.026082167, 0.13831234, 0.10982424, 0.012946818, -0.12439852, 0.10134106, -0.10050398, -0.04472338, -0.14325236, -0.20579574, 0.0044005127, 0.22013672, -0.32955512, 0.12404084, -0.008160738) * go_1(0.0, 1.0); - result += mat4(-0.10774314, -0.31650826, -0.06601711, 0.19635755, -0.12622592, -0.06396423, 0.13856032, 0.16540553, 0.021387719, 0.23377723, -0.053738154, -0.1000186, -0.08338395, -0.052813534, 0.008122962, 0.13732094) * go_1(1.0, -1.0); - result += mat4(-0.18270823, 0.06966014, -0.17788303, -0.27303055, -0.077971615, 0.013978423, -0.02039098, 0.12715338, -0.11924171, 0.18900296, -0.085199654, 0.215198, 0.18587974, -0.009749325, 0.0173584, -0.12018259) * go_1(1.0, 0.0); - result += mat4(0.052129295, -0.107416354, 0.12711766, 0.03708665, -0.14369462, -0.055359814, -0.16639823, -0.045143317, -0.06925672, -0.040696755, 0.01999809, -0.016040625, -0.02484878, 0.07417094, 0.050875198, 0.2145528) * go_1(1.0, 1.0); - result += mat4(0.055696912, -0.16680926, -0.021987487, 0.024941636, -0.0927883, 0.022136632, 0.033782948, -0.10646058, -0.14944647, 0.25457275, 0.046682496, -0.022462368, -0.07886781, 0.08165927, 0.06848105, 0.0063734027) * go_2(-1.0, -1.0); - result += mat4(0.037053242, 0.033215813, 0.18291366, 0.12340375, 0.08491059, -0.28442004, -0.0127422465, -0.039834313, -0.23321372, 0.26676926, -0.05636355, -0.15672484, -0.12891728, -0.15486577, -0.032004442, -0.092745155) * go_2(-1.0, 0.0); - result += mat4(0.015779478, -0.18457565, 0.24996394, 0.036197674, 0.15694007, 0.15863103, -0.07332398, 0.0016235278, -0.15536517, -0.056062788, 0.14102836, 0.16915025, -0.08001087, 0.07073164, 0.13796777, 0.123867124) * go_2(-1.0, 1.0); - result += mat4(0.045792986, -0.15135059, -0.1354885, -0.043678258, -0.35655212, 0.51232076, -0.12816145, -0.046569496, -0.014127674, -0.06282611, -0.098873, -0.06359104, -0.0919222, 0.11822437, 0.079254694, 0.00579688) * go_2(0.0, -1.0); - result += mat4(-0.15683417, 0.61610246, -0.3024612, 0.12917964, -0.09303367, 0.23612969, -0.40842506, -0.12374661, -0.07572449, -0.2613284, -0.09970177, -0.015227848, 0.106239066, -0.21411185, 0.051998455, -0.1364518) * go_2(0.0, 0.0); - result += mat4(0.23850034, -0.14394449, -0.0031468747, -0.2380617, -0.027200876, -0.041352056, -0.01864445, 0.033848196, -0.12064239, -0.110480845, 0.08450956, -0.22328654, 0.17664163, 0.22268307, 0.050886698, -0.17475672) * go_2(0.0, 1.0); - result += mat4(-0.17808256, 0.010803805, 0.03315186, 0.033143792, -0.14205995, 0.25039625, -0.08784382, -0.13454252, 0.19576813, 0.10755282, 0.22821628, 0.019456752, -0.0422955, -0.016182603, -0.12066697, 0.0548465) * go_2(1.0, -1.0); - result += mat4(0.11563777, -0.257929, 0.0010403778, 0.080267854, -0.0025255163, 0.2855168, -0.060352214, -0.07816255, -0.00090574916, 0.049510725, 0.03720483, 0.059250016, -0.08674136, 0.20522198, -0.28694284, 0.1299507) * go_2(1.0, 0.0); - result += mat4(-0.14638457, 0.04063328, 0.03139636, -0.007934521, 0.07689684, -0.09467145, 0.10607347, 0.054510128, 0.003306194, 0.05347124, 0.062762424, -0.041480847, -0.07677865, -0.139573, 0.010972524, 0.21957156) * go_2(1.0, 1.0); - result += mat4(-0.026845628, -0.043439507, 0.034738723, 0.07281683, 0.14474197, 0.031586993, -0.22767854, -0.0707655, 0.105201736, -0.28805482, 0.008668302, -0.16329518, 0.06157049, 0.3803886, 0.26345953, -0.011096537) * go_3(-1.0, -1.0); - result += mat4(-0.23328833, 0.085731484, -0.07755016, 0.33559516, 0.07704345, 0.115106605, -0.24114038, -0.44630137, 0.2726737, -0.32170138, -0.009236524, -0.11666051, 0.0457048, 0.07876708, 0.13134004, -0.035318643) * go_3(-1.0, 0.0); - result += mat4(-0.05140272, 0.011605703, 0.13899171, -0.05071015, 0.18413687, -0.31413674, -0.13043414, -0.15118152, -0.15326938, -0.10720126, -0.23738635, 0.13481396, 0.25115076, -0.009316611, -0.2584441, -0.14389823) * go_3(-1.0, 1.0); - result += mat4(-0.039723795, -0.14869407, -0.1692942, 0.026501274, -0.10685166, -0.121267825, -0.08584318, -0.09580693, -0.10626739, -0.068417974, 0.11321909, -0.13664317, 0.061380867, -0.2587898, 0.14850819, 0.008178645) * go_3(0.0, -1.0); - result += mat4(0.06912782, 0.24230564, -0.048150286, 0.2203717, -0.17417085, 0.105546735, -0.16648416, -0.0045053074, 0.09764028, 0.37122592, -0.1939995, -0.27899942, -0.088152565, -0.53869057, 0.21676709, -0.08056594) * go_3(0.0, 0.0); - result += mat4(0.07651754, 0.03704878, -0.0197015, 0.1660726, 0.07002748, -0.11820414, -0.23360898, 0.1481592, 0.029847002, 0.054057185, 0.013176299, 0.06552942, -0.13865773, -0.20105527, -0.37550658, 0.005769631) * go_3(0.0, 1.0); - result += mat4(-0.22697811, -0.17426412, 0.10148018, 0.008134666, 0.10771455, 0.16943407, -0.016319012, -0.40176705, -0.06854668, -0.049045276, 0.20919096, 0.13240765, -0.050125647, 0.14902508, 0.052697595, -0.13817468) * go_3(1.0, -1.0); - result += mat4(0.04301619, 0.23184754, -0.023551717, 0.3768405, 0.028999053, 0.06709736, -0.05993663, -0.059861984, 0.15499207, -0.22217415, 0.111131504, -0.09082529, -0.19389243, 0.024621522, -0.15305442, 0.010799284) * go_3(1.0, 0.0); - result += mat4(-0.035496738, 0.010802548, -0.028718363, 0.19263634, 0.16900502, -0.16661702, -0.027631328, 0.18309957, -0.015860107, -0.03309961, -0.091390446, 0.14000848, -0.0036591904, 0.47659522, -0.09373507, -0.29020965) * go_3(1.0, 1.0); - result += vec4(0.08895955, -0.027667087, 0.20500831, 0.00037762933); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!SAVE conv2d_5_tf -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.018134737, -0.2296755, -0.07276725, -0.029795367, 0.05382051, 0.092847414, -0.024469728, -0.1674685, 0.0017946451, 0.30074653, 0.0034195695, -0.04892261, 0.18229689, -0.20116119, -0.12702174, -0.08259108) * go_0(-1.0, -1.0); - result += mat4(-0.1357695, -0.08149211, 0.09314453, -0.21966846, 0.34740716, 0.043606415, 0.04225903, 0.034449834, 0.17248215, 0.39148283, -0.13868807, -0.010550686, 0.044238456, -0.09693464, -0.005044985, 0.24383289) * go_0(-1.0, 0.0); - result += mat4(0.19959371, 0.098685324, 0.058746945, 0.010580748, 0.08051514, 0.031898864, 0.017556064, 0.13004355, -0.01727653, 0.11044019, 0.040673427, -0.20064595, -0.23321067, 0.06398686, -0.19126236, -0.2430858) * go_0(-1.0, 1.0); - result += mat4(-0.12870286, -0.113455534, 0.23722827, 0.070718594, 0.19049989, -0.1927299, -0.06343845, 0.113127775, 0.082530305, -0.10972526, -0.090779535, 0.05731582, 0.11018802, -0.18049154, 0.09269507, -0.10304576) * go_0(0.0, -1.0); - result += mat4(0.15513484, 0.06659583, 0.08125296, -0.012350324, -0.09492788, 0.5048303, 0.13206847, 0.39554298, 0.28953737, -0.20913891, -0.26781562, -0.17539899, 0.023778774, 0.29716817, 0.15768486, 0.37702608) * go_0(0.0, 0.0); - result += mat4(0.0724462, 0.015571356, -0.032217246, 0.0050658924, -0.22708446, 0.03968809, 0.016753826, 0.0025668752, -0.055932112, 0.113931604, 0.19766758, -0.030027265, -0.17384295, 0.15013468, -0.0070017707, -0.09469028) * go_0(0.0, 1.0); - result += mat4(-0.078361556, -0.0954201, -0.006358101, 0.040500037, 0.4190454, -0.17622913, -0.07234791, 0.05462559, 0.18641087, 0.058313597, -0.0180785, 0.13818781, -0.14640772, 0.0699486, 0.0073663946, -0.076789856) * go_0(1.0, -1.0); - result += mat4(-0.21421191, 0.08736062, 0.09041226, 0.03608585, 0.02769972, 0.09641289, 0.11824623, 0.05653645, 0.16464607, 0.19839554, -0.13379547, 0.054417104, 0.067530684, 0.18971571, 0.13785432, -0.097639814) * go_0(1.0, 0.0); - result += mat4(-0.32658005, -0.14606023, -0.069448665, 0.032998275, -0.28331423, 0.0011900732, -0.020304207, -0.13535896, 0.08298347, 0.045509677, -0.030503955, -0.037504148, 0.049955815, 0.0925771, 0.00058534974, -0.12398032) * go_0(1.0, 1.0); - result += mat4(-0.2955836, 0.29059318, -0.018196672, -0.35866606, -0.01309431, 0.03540315, 0.010609202, 0.11956812, 0.10296229, 0.22536302, 0.015201129, -0.23797737, -0.16960852, -0.11414787, -0.034440614, 0.112644605) * go_1(-1.0, -1.0); - result += mat4(-0.14952518, 0.07024436, -0.083184876, -0.0814617, -0.13303639, 0.016159372, -0.13521518, 0.2221334, -0.056617837, 0.12958299, 0.064461656, -0.20146395, -0.16023181, 0.2640758, 0.27528805, -0.1426518) * go_1(-1.0, 0.0); - result += mat4(-0.04382363, 0.09856003, -0.08561442, -0.15699928, -0.121069774, 0.04685383, -0.009170197, -0.031489655, 0.18730178, 0.238442, 0.22497098, 0.032015145, -0.03709115, 0.1535079, 0.21674158, 0.10678019) * go_1(-1.0, 1.0); - result += mat4(-0.12200952, 0.24224263, 0.034097504, -0.028179523, -0.011962496, -0.04489487, -0.05198827, 0.22194928, -0.045400873, -0.049828544, 0.111477956, -0.098361604, 0.12788995, -0.016093334, -0.19886433, -0.011161484) * go_1(0.0, -1.0); - result += mat4(0.30563712, 0.013071727, -0.004799883, 0.12888052, -0.259498, -0.041566677, 0.07311124, 0.162324, 0.28371668, -0.004693743, -0.0019395344, 0.029358242, 0.08730285, 0.12184509, 0.05508437, 0.048439097) * go_1(0.0, 0.0); - result += mat4(0.12760857, 0.115813166, -0.217695, -0.10629871, -0.227366, 0.09030426, -0.15313712, 0.020528946, -0.20743734, 0.088583544, 0.04594053, -0.22891994, 0.18949282, -0.042186577, -0.17330512, -0.010711361) * go_1(0.0, 1.0); - result += mat4(0.029503195, 0.0063797613, -0.17004286, -0.096844055, 0.010218098, 0.04247233, 0.02362808, 0.14700809, -0.08082364, 0.11159672, -0.018505255, -0.15228583, 0.15693732, -0.025359154, 0.024829186, 0.1943192) * go_1(1.0, -1.0); - result += mat4(-0.03912932, -0.21989027, 0.12203028, 0.18702275, -0.118537985, 0.21039696, 0.09102061, 0.012288879, 0.031666897, 0.1318455, -0.04901404, -0.07516063, -0.44782668, 0.04884501, 0.047070876, 0.008728358) * go_1(1.0, 0.0); - result += mat4(-0.08669101, 0.3053463, -0.08963947, 0.0034188698, -0.070004664, 0.064788476, 0.093737036, 0.070050925, 0.12728429, -0.13179256, -0.014913502, 0.09308136, -0.027638942, 0.008638711, 0.08794172, -0.05531093) * go_1(1.0, 1.0); - result += mat4(0.0728421, 0.07872358, 0.11454748, 0.08497922, 0.071820416, -0.11789207, -0.08184197, 0.1359588, -0.2143346, -0.05876081, 0.023172129, -0.08430511, -0.19276723, 0.14283359, 0.15604696, -0.055187486) * go_2(-1.0, -1.0); - result += mat4(0.068641685, 0.2732106, -0.2809107, 0.12736696, -0.08642367, 0.023898933, -0.17859498, -0.18299665, -0.06684587, -0.12204666, 0.45898953, -0.24240111, 0.25182098, -0.04395751, 0.10637211, -0.22135144) * go_2(-1.0, 0.0); - result += mat4(0.0852072, 0.051133018, 0.03333165, -0.0008938216, 0.10251267, 0.0550774, 0.041769378, -0.21259712, 0.286912, 0.123342015, 0.282759, -0.0730124, 0.14275575, -0.15580742, -0.15224406, 0.045376908) * go_2(-1.0, 1.0); - result += mat4(0.03328225, 0.11563978, -0.07451964, 0.030546209, -0.04698351, -0.18544962, 0.037350416, 0.13969816, 0.0556746, -0.06359919, 0.06478219, -0.031694926, 0.13396506, 0.09443612, -0.01922686, -0.06290365) * go_2(0.0, -1.0); - result += mat4(0.07495407, 0.063429266, -0.106221214, -0.085107304, 0.2497817, -0.46598253, -0.18833177, -0.2731128, -0.13024822, 0.56053543, 0.055704467, -0.12331414, -0.031199086, 0.05061188, 0.22097112, -0.6611177) * go_2(0.0, 0.0); - result += mat4(0.08276988, -0.044184342, -0.03562185, -0.06159881, 0.27694225, -0.07192965, -0.08663714, 0.020221777, 0.14095962, -0.06229397, 0.051374253, -0.038158998, 0.10664802, -0.041305423, 0.051260717, -0.054698635) * go_2(0.0, 1.0); - result += mat4(0.12800686, 0.03485072, 0.039914366, 0.034041498, -0.08305794, -0.046292894, 0.22765331, 0.10904922, 0.0013937047, -0.08750301, 0.009126207, -0.065589435, 0.2837707, 0.08884436, -0.07234862, -0.093502745) * go_2(1.0, -1.0); - result += mat4(0.113439895, 0.06081726, 0.1122302, -0.022936966, 0.10329637, -0.31816107, -0.051597945, 0.23846027, -0.083913095, -0.29872265, -0.040147282, -0.08981918, -0.04329814, -0.12339693, -0.034489952, 0.013393211) * go_2(1.0, 0.0); - result += mat4(0.33091688, 0.1726297, 0.034332044, -0.091396205, 0.15434311, -0.0022870845, -0.15506189, 0.08710491, -0.16063525, 0.042252056, 0.017086457, 0.08134797, 0.08631321, 0.037843138, 0.088296555, 0.0064518084) * go_2(1.0, 1.0); - result += mat4(0.09161051, 0.114355795, -0.15304486, -0.030537153, 0.1835368, -0.3287635, 0.031197926, 0.09717476, 0.04276852, 0.113250345, 0.05949038, -0.10599563, 0.43574792, -0.060788117, 0.18409383, 0.12678055) * go_3(-1.0, -1.0); - result += mat4(-0.018356865, -0.0072578182, 0.12020777, -0.013127592, 0.20136636, -0.22984362, 0.06896224, 0.00044982752, 0.008428429, -0.123316936, -0.09989286, 0.078248784, -0.16313677, -0.003020313, -0.46285018, -0.08967125) * go_3(-1.0, 0.0); - result += mat4(-0.03451497, -0.10864502, 0.13207638, 0.17194521, 0.0037514758, -0.20222199, -0.12535086, 0.001511977, 0.056294486, -0.2112898, 0.078261316, 0.10118746, -0.044742294, 0.21793383, -0.19927903, -0.21338293) * go_3(-1.0, 1.0); - result += mat4(-0.034903776, -0.10167085, 0.031066334, 0.0379958, 0.20532596, -0.17457838, 0.16556816, -0.0021619152, 0.02682665, 0.03396325, -0.059273884, 0.1922813, -0.072151475, -0.010240544, 0.2302027, 0.12385962) * go_3(0.0, -1.0); - result += mat4(-0.20170145, -0.08203941, -0.028107846, -0.18003726, 0.44744352, -0.13190243, 0.13233365, 0.03626546, 0.085763134, -0.25613126, -0.11213388, 0.15529087, -0.271649, 0.050587676, -0.062583975, 0.057289865) * go_3(0.0, 0.0); - result += mat4(-0.040649455, -0.17949733, 0.35847965, -0.040587306, 0.24314344, -0.23811667, 0.13958354, 0.04961874, 0.09858903, -0.04202913, -0.21850993, 0.0700419, -0.09130745, -0.096835814, 0.0022782686, -0.25416258) * go_3(0.0, 1.0); - result += mat4(-0.08215545, -0.019647893, 0.055263475, 0.053733055, 0.098485716, -0.1041945, -0.06541415, -0.08868577, -0.07262986, 0.03513784, -0.110529095, -0.03369232, 0.056786604, 0.2569229, -0.05931065, -0.22081214) * go_3(1.0, -1.0); - result += mat4(0.066926084, 0.029664058, -0.10779271, 0.11026963, 0.23927264, -0.16914488, 0.022947345, 0.12303853, -0.07066212, -0.013205378, 0.15348643, 0.035568032, 0.20966691, 0.010149819, -0.08814468, -0.064854674) * go_3(1.0, 0.0); - result += mat4(0.11493852, -0.074924305, -0.14840698, -0.16956823, 0.056806292, -0.06387947, -0.06880271, -0.04637334, -0.1929893, 0.18226422, 0.064644486, -0.1594863, 0.027403917, 0.13951495, -0.06569123, -0.07700207) * go_3(1.0, 1.0); - result += vec4(-0.043347504, -0.20504741, -0.037821215, -0.014486937); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!SAVE conv2d_5_tf1 -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.047881734, -0.09396414, -0.2839081, 0.3140853, 0.052613556, 0.09940423, 0.23960467, -0.022228222, -0.12065009, 0.07898222, 0.08657881, 0.010852739, -0.050450284, 0.01683982, 0.031813968, 0.053060856) * go_0(-1.0, -1.0); - result += mat4(-0.10252411, -0.03116448, -0.30114275, -0.0316799, -0.017501019, -0.03006003, -0.2095696, 0.10134927, -0.3901916, -0.15335023, -0.11955071, 0.1337449, 0.101239376, -0.25044814, 0.2128469, 0.018979514) * go_0(-1.0, 0.0); - result += mat4(-0.13392173, 0.052036732, 0.1682114, -0.026263753, 0.027221246, -0.15121374, 0.13723798, 0.08950682, -0.1182108, -0.07294226, 0.023392374, 0.052329235, -0.05632852, -0.07036173, 0.06872573, 0.05238042) * go_0(-1.0, 1.0); - result += mat4(0.18112028, 0.18242362, -0.06812871, 0.032463413, 0.124638766, -0.26765212, -0.07678663, 0.33806562, 0.09674393, 0.15574542, 0.23634006, -0.02873782, -0.1626769, -0.14760062, -0.007274849, 0.09866139) * go_0(0.0, -1.0); - result += mat4(-0.10726673, -0.10925056, 0.19967109, -0.19936769, 0.15942842, -0.14870064, 0.15493345, -0.08489036, -0.49053356, -0.17321263, 0.28426084, 0.18721215, -0.09898434, -0.2751838, -0.11833524, 0.028445128) * go_0(0.0, 0.0); - result += mat4(-0.11788817, -0.23724948, -0.046072144, 0.035621114, 0.04527003, -0.0073492974, 0.11097195, 0.06806836, 0.04814677, -0.1408476, -0.1325629, 0.00929532, -0.16699041, -0.03034791, 0.08320368, -0.15429299) * go_0(0.0, 1.0); - result += mat4(0.2729515, 0.008244692, -0.17441982, -0.39026466, 0.17381759, 0.31194404, 0.055934936, 0.20744409, 0.20119062, 0.0734271, 0.0796807, 0.0031037466, -0.0016392237, 0.033733975, 0.07149338, 0.042083208) * go_0(1.0, -1.0); - result += mat4(0.07985744, 0.10945015, 0.018472541, 0.1397503, 0.2005682, 0.42641, 0.23022486, -0.2916921, 0.028285174, -0.31885162, -0.27070364, -0.10390779, 0.0751492, 0.12752363, -0.2279459, 0.08998453) * go_0(1.0, 0.0); - result += mat4(0.18450491, -0.140783, -0.008006845, 0.09029298, 0.12536179, 0.26949662, 0.09491545, 0.063907005, 0.11212244, 0.09778506, -0.1835966, -0.053119674, 0.0072294096, 0.25018227, 0.010868525, -0.22721334) * go_0(1.0, 1.0); - result += mat4(-0.028011927, -0.20073172, 0.5976166, -0.19494139, 0.17958745, -0.03838646, 0.058325976, -0.29409218, -0.12793432, 0.03245129, 0.35662368, -0.05048354, -0.13368197, -0.06151968, -0.012714591, -0.1763054) * go_1(-1.0, -1.0); - result += mat4(0.18468465, 0.31682113, 0.12818255, -0.117110476, 0.13709468, -0.10034022, -0.07994527, -0.1259309, 0.04067299, -0.1147398, 0.28361055, 0.27916273, 0.03696692, 0.16829546, 0.27819383, 0.08305029) * go_1(-1.0, 0.0); - result += mat4(-0.28920117, -0.033877946, 0.01586206, 0.04681198, 0.024248574, -0.045777842, -0.03342128, 0.07525412, -0.063377544, -0.016737273, 0.11235511, -0.04325238, -0.24170023, -0.09993599, -0.03205371, 0.14339828) * go_1(-1.0, 1.0); - result += mat4(-0.008357902, -0.11038377, 0.03709221, 0.26775306, 0.07963845, -0.25377446, -0.17630441, -0.10966474, 0.057311732, -0.083327, 0.044497233, 0.06903858, -0.26531395, -0.103399664, -0.14806591, 0.269314) * go_1(0.0, -1.0); - result += mat4(0.05450808, -0.041993964, -0.07217651, 0.034468375, 0.2117634, 0.0075620585, 0.05825411, -0.2252478, -0.0527787, 0.049732126, -0.032040413, -0.09361454, 0.29585132, 0.018413153, 0.18384546, -0.024226356) * go_1(0.0, 0.0); - result += mat4(-0.031109914, 0.19351351, 0.07405522, -0.06313074, -0.09983541, -0.011495182, 0.11749038, -0.16775608, 0.2790974, -0.09338754, 0.07913264, 0.103792936, -0.18679164, -0.15639925, 0.112943865, 0.07930375) * go_1(0.0, 1.0); - result += mat4(0.004106195, -0.036833283, 0.12908752, 0.12869535, -0.02472107, 0.17561707, -0.025890926, -0.18789047, 0.096218705, -0.16306408, -0.02198454, -0.010134957, -0.09710009, 0.002062143, -0.046785697, 0.0029441968) * go_1(1.0, -1.0); - result += mat4(0.19648251, -0.015663045, -0.0730215, 0.028611008, 0.13529862, -0.015256192, -0.04119306, -0.24628192, 0.02601027, -0.21184283, -0.1962902, 0.09109358, -0.06792383, 0.092336476, 0.12215351, -0.08596062) * go_1(1.0, 0.0); - result += mat4(-0.17530201, -0.0351919, -0.31872514, -0.13933206, -0.07000922, -0.049807087, 0.0010997375, -0.033573963, 0.07442056, -0.33290103, -0.40381998, 0.09435, -0.3280128, -0.09953127, -0.11283648, 0.20685865) * go_1(1.0, 1.0); - result += mat4(-0.052573867, -0.035328753, -0.11132943, -0.17515652, 0.05021051, 0.058642425, -0.046640664, 0.0799107, -0.027398815, -0.33619994, -0.22135767, 0.07894002, -0.14941697, -0.0940996, -0.11655085, 0.049795926) * go_2(-1.0, -1.0); - result += mat4(-0.039301276, 0.041062318, 0.20312686, -0.009338705, 0.013706282, -0.0245852, 0.03458311, 0.09601228, -0.18203016, -0.012260314, 0.17984508, -0.056576703, -0.102844186, 0.24047872, 0.05307189, 0.16066082) * go_2(-1.0, 0.0); - result += mat4(0.1478775, 0.0046362123, 0.05459521, 0.07162838, -0.01896149, 0.23700175, -0.14174299, 0.06988599, -0.32545477, -0.08065096, -0.061227743, -0.0010796773, 0.094327345, -0.20760082, -0.19523263, 0.19859222) * go_2(-1.0, 1.0); - result += mat4(-0.049676366, -0.10381536, 0.02546116, -0.13127093, 0.10954914, 0.0048147943, 0.06962328, -0.30456528, -0.11956627, 0.0150488885, -0.10711722, 0.1684613, -0.1939089, -0.10577047, -0.11980919, -0.036988296) * go_2(0.0, -1.0); - result += mat4(-0.054795764, 0.09491116, -0.08494948, 0.059765853, 0.0131597435, 0.20786162, 0.11999637, 0.024381055, 0.22830428, 0.027053319, -0.011646274, -0.12145409, -0.07899559, -0.012688263, 0.10684157, 0.3824219) * go_2(0.0, 0.0); - result += mat4(-0.23994572, -0.0031532666, -0.0050638164, 0.14236279, 0.05690383, -0.06259682, 0.052624144, 0.20461404, -0.19230312, -0.11072268, 0.013023965, 0.08931543, -0.21997221, 0.11760443, -0.40943825, 0.28656834) * go_2(0.0, 1.0); - result += mat4(-0.06606179, 0.26007771, 0.033754125, 0.119690455, 0.024669139, -0.06752839, 0.12688096, -0.0063201943, -0.17123021, 0.07548857, -0.14213699, 0.034093797, -0.15632647, -0.123243414, -0.42634043, 0.1715022) * go_2(1.0, -1.0); - result += mat4(-0.046503466, 0.13876389, 0.17973013, -0.25938338, -0.18824704, -0.11876702, 0.31065792, -0.041042212, -0.061369427, 0.2057992, 0.17295738, 0.3836555, -0.21109799, -0.10167118, 0.16577047, 0.113483034) * go_2(1.0, 0.0); - result += mat4(-0.24534856, -0.014482421, 0.22515748, -0.12773542, 0.12794174, -0.02528619, 0.41710484, 0.09154934, -0.17805946, -0.25428918, 0.07294183, 0.047079418, -0.30949152, -0.08919157, 0.17888431, 0.17706038) * go_2(1.0, 1.0); - result += mat4(-0.1741826, 0.046225294, -0.10761791, 0.2619953, 0.007373745, 0.05104337, -0.22309966, 0.34529984, -0.034363825, -0.022187237, -0.08609555, 0.16842419, 0.28136057, 0.17843607, -0.11307746, -0.05668021) * go_3(-1.0, -1.0); - result += mat4(-0.12310616, -0.29661375, -0.10581025, -0.049584012, 0.19651765, 0.08436489, -0.14533581, -0.029874112, -0.15422897, -0.062741704, -0.22694711, -0.15547274, -0.15181333, 0.0286061, 0.022438493, -0.062447168) * go_3(-1.0, 0.0); - result += mat4(0.3497046, -0.09455009, 0.060618952, -0.2134236, 0.054515295, 0.07451165, -0.09267233, -0.010513333, 0.13842636, 0.11563433, -0.054750167, 0.050432, 0.1514256, 0.04284002, -0.2095581, 0.07907657) * go_3(-1.0, 1.0); - result += mat4(-0.11745651, -0.04717057, 0.085377194, -0.065956995, 0.07280491, 0.2730059, 0.11088276, 0.2437957, 0.14018989, 0.1164107, -0.09516929, 0.0022427947, 0.111544006, -0.0680495, 0.09324579, -0.12482022) * go_3(0.0, -1.0); - result += mat4(-0.07995795, -0.03387884, 0.019846136, 0.10231208, -0.07017192, 0.18659039, 0.035161644, 0.101182766, -0.14901665, 0.21307294, 0.063894205, -0.27546507, -0.24792959, -0.067731075, 0.13146006, -0.19333683) * go_3(0.0, 0.0); - result += mat4(0.034206454, 0.1472648, -0.07406727, 0.014654025, 0.18703444, 0.1319857, -0.10610886, 0.08427947, -0.017536618, -0.06487879, -0.12095286, -0.050414838, 0.03260879, 0.1558894, -0.031887084, 0.11840288) * go_3(0.0, 1.0); - result += mat4(0.114811294, -0.14574333, -0.09392587, 0.042283528, 0.08919092, 0.18259068, 0.0980717, 0.21024778, -0.1280008, -0.027260462, -0.1129027, 0.18722472, 0.13733985, 0.047153983, 0.030871978, 0.1998385) * go_3(1.0, -1.0); - result += mat4(-0.06783575, 0.004612595, 0.1153467, -0.11531557, -0.048889533, 0.07673577, -0.02041786, 0.22744459, -0.13092506, 0.13484807, 0.40003043, -0.053706612, -0.16985156, -0.04791236, -0.052443005, -0.08363625) * go_3(1.0, 0.0); - result += mat4(0.18187882, 0.017893985, 0.17856054, 0.005413129, 0.014147176, 0.15102178, 0.12436294, -0.02176765, -0.16727823, -0.0364111, 0.17074408, 0.12899421, 0.31984514, -0.0072070034, 0.031895883, -0.1991405) * go_3(1.0, 1.0); - result += vec4(-0.011865144, 0.11717201, -0.13823777, -0.059450272); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!SAVE conv2d_6_tf -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.082203194, 0.021720003, 0.03725474, -0.08048348, 0.2063248, -0.033020593, -0.17585336, 0.06476272, 0.012244563, 0.026554609, 0.014708393, 0.26606125, 0.14248778, 0.12817341, -0.039826933, -0.12751861) * go_0(-1.0, -1.0); - result += mat4(0.24573852, 0.19695967, -0.06257417, -0.04782871, 0.3511875, -0.018083302, -0.077342674, 0.15247667, 0.20321761, -0.07479984, -0.09548503, 0.08109568, -0.23808748, 0.07246303, -0.004242619, 0.16162953) * go_0(-1.0, 0.0); - result += mat4(0.13296306, 0.19495387, 0.009222276, 0.033592198, 0.20443891, 0.16063854, -0.2581601, -0.016132578, -0.2296461, -0.23647323, -0.15407176, -0.18265317, 0.2343241, -0.049697313, -0.09398783, 0.41931856) * go_0(-1.0, 1.0); - result += mat4(-0.10866088, -0.40605694, -0.0042648134, 0.07943803, 0.26914695, 0.14816476, 0.037706107, -0.123223364, -0.19962949, -0.053534556, -0.08397409, -0.04244924, -0.075791344, 0.29629225, 0.2311928, 0.099177904) * go_0(0.0, -1.0); - result += mat4(-0.1748319, -0.2003186, -0.32659066, -0.21007413, 0.20122464, 0.032196607, -0.026299698, 0.33395135, 0.11411664, 0.05971959, 0.09001304, -0.15936212, 0.012322024, 0.19936106, -0.411186, -0.08319479) * go_0(0.0, 0.0); - result += mat4(-0.07349218, 0.006184436, 0.096199185, -0.050186496, 0.064047046, -0.03813128, -0.057007037, -0.025550695, -0.2863145, -0.008512981, -0.20615962, 0.18009211, 0.008298396, 0.22452813, 0.010843521, 0.20169461) * go_0(0.0, 1.0); - result += mat4(0.2691149, 0.059546687, 0.08922005, 0.2252196, 0.30341956, -0.024489028, 0.087045394, -0.03856442, -0.14083561, -0.17683443, 0.14137806, 0.15520614, 0.2073925, -0.19525874, 0.23661858, 0.3098405) * go_0(1.0, -1.0); - result += mat4(0.006530723, 0.04180736, -0.04762067, -0.064395495, 0.02396811, -0.13332283, 0.0037775645, 0.026309434, 0.0033065109, -0.08315753, 0.02917419, 0.12330464, 0.22819455, -0.07489677, 0.12829056, -0.097994626) * go_0(1.0, 0.0); - result += mat4(-0.09983759, 0.032783493, 0.11085758, 0.08993078, -0.057110567, -0.018973934, -0.14946178, -0.03921629, 0.039757587, 0.015860094, 0.04989561, -0.19634786, 0.04351146, 0.019315343, 0.25972188, 0.17989321) * go_0(1.0, 1.0); - result += mat4(-0.04111906, -0.165601, 0.0003682197, -0.056232415, -0.32716644, -0.24015541, -0.057547837, 0.05966729, 0.06854747, 0.03599213, -0.18798864, 0.1183447, 0.014268468, -0.1310834, 0.06415977, -0.19414157) * go_1(-1.0, -1.0); - result += mat4(-0.00070661673, 0.17671427, 0.10584568, -0.060910843, -0.104282066, -0.22676118, -0.01907062, 0.24882245, -0.043454725, 0.07691623, -0.48371696, 0.013537671, -0.025488405, 0.061228953, 0.18548754, 0.028671112) * go_1(-1.0, 0.0); - result += mat4(-0.0121596735, 0.09595702, -0.08244918, -0.1176173, 0.26773354, -0.021729136, 0.075465776, -0.0928876, 0.12461298, 0.16830076, -0.15302569, 0.113850676, 0.09811088, 0.13006307, 0.24999009, 0.10261325) * go_1(-1.0, 1.0); - result += mat4(-0.032246377, 0.038265374, -0.26476422, -0.1442876, -0.19866082, 0.08649541, 0.041478764, 0.11155026, 0.21576422, -0.09572912, -0.11174068, -0.19722937, -0.15801935, 0.29604745, -0.08606268, -0.15532136) * go_1(0.0, -1.0); - result += mat4(-0.06315591, 0.16151646, -0.009230362, -0.04341246, 0.09085519, 0.21924476, 0.38044852, 0.193819, 0.16622902, 0.0025134624, -0.22688466, -0.025276015, 0.07714917, 0.16302192, -0.11767101, -0.11086476) * go_1(0.0, 0.0); - result += mat4(-0.04170153, 0.001859292, -0.26352355, 0.10982333, -0.031867817, 0.15773517, -0.060263418, 0.11117763, -0.017359972, 0.0127261225, 0.0782802, -0.16908924, 0.080516845, -0.05691526, -0.07530135, -0.14553802) * go_1(0.0, 1.0); - result += mat4(0.06112685, -0.032287434, 0.17445667, -0.044935808, -0.11449107, -0.051394563, -0.029589338, -0.14555557, 0.03440661, 0.11035615, -0.17175, -0.14851089, 0.037362, -0.18740481, 0.17278154, 0.18073405) * go_1(1.0, -1.0); - result += mat4(-0.27670652, 0.19484822, 0.2609349, 0.1455016, 0.04438468, 0.1449185, 0.11185832, -0.18598269, -0.019846648, 0.11886126, -0.098498635, 0.15737785, 0.011406795, -0.18860829, -0.13705735, 0.17535745) * go_1(1.0, 0.0); - result += mat4(-0.30244905, -0.28695273, 0.1146976, 0.21144345, -0.037980128, -0.027679864, -0.13992494, -0.04884521, -0.032023884, -0.07921183, -0.16042095, -0.06935386, -0.06570237, -0.1107404, -0.018163798, 0.22625941) * go_1(1.0, 1.0); - result += mat4(-0.07292955, -0.07321777, -0.045146503, -0.33291966, -0.096732594, -0.07203495, 0.33692798, 0.2870733, 0.122160144, -0.076574564, 0.042844944, 0.26448342, 0.07672146, -0.028775277, -0.12088313, 0.15583947) * go_2(-1.0, -1.0); - result += mat4(0.21589327, 0.05258274, 0.09705794, -0.024653846, -0.039402515, 0.28485695, 0.14711736, -0.10556087, -0.15140481, 0.09039498, 0.017308712, 0.11862922, 0.08230978, 0.21678248, -0.043815188, -0.226433) * go_2(-1.0, 0.0); - result += mat4(-0.029258793, 0.26618922, 0.02564014, -0.23189862, -0.24074338, -0.18556763, 0.25973624, 0.04746873, 0.0137007125, -0.22239363, -0.12414957, 0.048228756, -0.22406264, 0.282667, -0.021001073, -0.17465611) * go_2(-1.0, 1.0); - result += mat4(0.32401654, -0.1495363, -0.20869227, 0.04271639, -0.0087802755, 0.031325378, 0.23834595, 0.039336167, 0.17265107, 0.20947595, 0.28737286, 0.0028783784, -0.057340365, -0.050347418, -0.11915604, -0.1831807) * go_2(0.0, -1.0); - result += mat4(0.1811338, 0.07732653, 0.20975596, -0.47129005, 0.07121942, 0.08410583, 0.44170937, -0.19524159, -0.17807977, 0.12837476, 0.20816846, -0.1741958, -0.04411918, 0.06024972, 0.18159702, -0.052485272) * go_2(0.0, 0.0); - result += mat4(-0.15229738, 0.27513, 0.28150418, -0.19543962, -0.02045864, -0.07207227, 0.09589587, 0.09110817, 0.061413247, 0.0046052113, 0.11619411, -0.2988938, 0.065739445, 0.10205611, 0.12847126, -0.028355654) * go_2(0.0, 1.0); - result += mat4(0.0657154, -0.047568597, -0.16148911, 0.16392621, -0.25281775, -0.061153214, 0.017480455, -0.026288848, 0.20319715, 0.04763355, 0.010444491, -0.26671803, -0.25821987, 0.32863674, -0.30734694, -0.18190521) * go_2(1.0, -1.0); - result += mat4(-0.042703815, 0.06633036, -0.048434302, -0.17176376, -0.12699759, -0.1124558, 0.083266065, 0.03354623, -0.13468939, 0.12706263, 0.053659134, -0.06930602, 0.008196115, 0.2034998, -0.06351442, -0.039730288) * go_2(1.0, 0.0); - result += mat4(0.09614661, 0.22500272, 0.088511504, -0.16960482, 0.15364788, -0.18854137, -0.13163191, -0.07503735, -0.23177068, -0.0053305267, -0.041978605, 0.0971947, -0.049034655, 0.04486706, 0.09076307, -0.02310868) * go_2(1.0, 1.0); - result += mat4(-0.1304683, 0.17743458, -0.09817326, -0.0646786, 0.07886976, 0.20109388, -0.034114968, -0.2029261, -0.03348398, 0.029337432, -0.07302782, -0.02240758, 0.030242773, -0.30032325, 0.02085572, -0.027314361) * go_3(-1.0, -1.0); - result += mat4(-0.037377544, 0.026350772, -0.07430488, -0.114671774, -0.126935, -0.046512567, -0.033628833, -0.19018382, -0.041053895, -0.031206857, 0.08562848, -0.01875709, 0.21099389, -0.092511, 0.0073047103, -0.009811013) * go_3(-1.0, 0.0); - result += mat4(0.11358029, 0.17468451, -0.12739041, -0.14332245, -0.22230148, 0.16862972, -0.04462456, 0.2469604, -0.008622369, 0.0081848325, -0.17032363, -0.16024362, 0.21178265, 0.037127133, 0.08559072, 0.11584694) * go_3(-1.0, 1.0); - result += mat4(0.008993893, -0.08037705, 0.4426555, 0.15593371, 0.15273719, -0.03249998, 0.055109, -0.1512612, -0.037183985, 0.20825677, -0.08516227, -0.06664223, -0.10011001, -0.3505215, -0.17941694, 0.052089088) * go_3(0.0, -1.0); - result += mat4(-0.109703645, -0.13505603, 0.1336451, 0.13118869, 0.010915504, 0.12748592, 0.21201555, -0.40841985, -0.11059143, 0.033772044, -0.039282143, 0.03095394, 0.10394723, -0.21343367, -0.10699851, -0.028351074) * go_3(0.0, 0.0); - result += mat4(0.019704714, 0.06243651, 0.09896519, -0.17492259, 0.012675787, -0.004239029, 0.21319824, 0.069183126, -0.0071114586, 0.123431124, -0.24479835, 0.00723795, -0.045293927, 0.014101029, 0.15746681, 0.042405806) * go_3(0.0, 1.0); - result += mat4(0.023828225, -0.0015190929, 0.1194638, 0.082163885, 0.10532113, 0.042044062, 0.02528007, 0.015175004, 0.026613194, 0.33525538, -0.1627064, -0.29887968, -0.197707, 0.038967777, -0.15811683, -0.106895216) * go_3(1.0, -1.0); - result += mat4(0.044362027, -0.04946742, -0.14815849, -0.17660522, -0.034201477, -0.012243106, -0.050183997, 0.06407372, 0.039822515, 0.15880872, -0.0672721, -0.4081093, 0.019489579, -0.060278706, -0.015096743, -0.07799167) * go_3(1.0, 0.0); - result += mat4(0.11861756, 0.27113584, -0.14107186, -0.10246008, -0.124051, -0.1627854, 0.10698585, 0.2846401, -0.061731786, 0.1724438, -0.12428688, -0.09986041, -0.034171514, -0.07100923, 0.041739646, -0.11308375) * go_3(1.0, 1.0); - result += vec4(-0.02981662, -0.26338395, -0.011632586, 0.15063232); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!SAVE conv2d_6_tf1 -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.17082009, 0.031344634, -0.06131912, 0.00887183, -0.01528174, 0.12943709, 0.24537678, 0.008178781, -0.312396, -0.023583878, 0.07827866, -0.1231261, 0.15081584, -0.18161978, -0.25179705, -0.036934935) * go_0(-1.0, -1.0); - result += mat4(-0.05768411, 0.16785417, -0.1788644, -0.0067257965, 0.021445744, 0.10066516, -0.23864186, 0.1450302, 0.12892793, 0.19856106, -0.24444748, 0.16531628, -0.044425935, -0.02775357, 0.009059946, -0.12958384) * go_0(-1.0, 0.0); - result += mat4(-0.025798557, -0.17238182, -0.34056288, -0.20921059, -0.03576266, 0.1476854, -0.06264234, 0.14452787, -0.04130045, -0.07275762, 0.034578666, 0.2914669, 0.20879944, 0.21359251, -0.048695553, 0.2638088) * go_0(-1.0, 1.0); - result += mat4(-0.022791177, 0.4204545, 0.116855636, 0.20241925, -0.010444933, -0.14462502, 0.022550104, -0.24423064, -0.09417524, 0.045358784, -0.11405829, 0.035979558, -0.2283092, -0.06670842, -0.23852053, -0.22417003) * go_0(0.0, -1.0); - result += mat4(-0.14526704, 0.040880535, 0.14076385, 0.07795045, -0.059177604, -0.13056375, -0.3373641, -0.19344307, -0.29891858, -0.32578763, -0.29061425, 0.1562214, -0.13578376, 0.36586633, 0.24936736, 0.054629393) * go_0(0.0, 0.0); - result += mat4(-0.025790233, -0.13020341, -0.10084969, 0.15767297, -0.09738769, 0.04034404, 0.0038675873, 0.043515608, 0.16899958, -0.29117966, 0.03420067, 0.14432564, -0.10473084, 0.21014084, 0.07775908, -0.09303797) * go_0(0.0, 1.0); - result += mat4(-0.07443987, -0.16225167, 0.036251917, 0.028432872, 0.03759333, 0.004027401, -0.033941846, 0.0019474924, 0.02357054, 0.30748722, 0.1652115, -0.17361522, 0.16905582, 0.08048018, -0.23639561, -0.029408466) * go_0(1.0, -1.0); - result += mat4(0.0461233, -0.09346199, -0.07063276, -0.19447634, -0.049339604, -0.0032855074, -0.22661209, -0.0543389, 0.11924857, -0.21691081, -0.1645725, -0.0075736847, 0.018572787, -0.06552861, -0.01777661, -0.11651732) * go_0(1.0, 0.0); - result += mat4(-0.06425901, 0.123392984, -0.16395192, -0.093448035, -0.029316641, 0.0986573, -0.23135012, 0.011170849, 0.00023920486, 0.15296175, 0.35453254, -0.05189021, 0.20708887, -0.103900835, 0.081992395, -0.21829562) * go_0(1.0, 1.0); - result += mat4(-0.019074136, -0.1572586, 0.27919227, 0.09119617, 0.035954695, 0.2941489, 0.18262725, -0.055522963, -0.21364328, -0.1573611, 0.104966134, 0.08228523, 0.19945285, -0.0039229114, -0.1565048, 0.028975379) * go_1(-1.0, -1.0); - result += mat4(-0.18501253, 0.006473006, 0.06637501, 0.04295065, 0.06411007, 0.1166344, -0.10060226, 0.46296063, -0.08600344, -0.03560105, 0.012215349, 0.017885283, 0.061346993, 0.17336361, 0.01935021, 0.20198092) * go_1(-1.0, 0.0); - result += mat4(-0.04451627, -0.10372061, -0.13968691, 0.14479733, 0.1660607, 0.19334625, 0.0085214665, 0.28863636, -0.07600901, -0.014777084, 0.13209191, -0.09045013, 0.104893915, -0.04776884, -0.007936376, 0.104568765) * go_1(-1.0, 1.0); - result += mat4(0.023751335, -0.108048, -0.050531313, 0.15916029, 0.13246661, 0.04644228, -0.09586482, -0.17222965, -0.22898191, -0.033484615, 0.078883134, -0.052609313, -0.2721741, 0.045986425, 0.13972299, -0.28923607) * go_1(0.0, -1.0); - result += mat4(-0.23364568, -0.008875902, -0.40894926, 0.060443908, -0.2839635, -0.5270991, -0.2500865, 0.002020195, -0.24488612, -0.04982319, -0.009110353, -0.018023955, 0.06647274, -0.25225738, 0.26154432, -0.033934146) * go_1(0.0, 0.0); - result += mat4(-0.1535129, -0.21257545, -0.16553773, 0.17471452, -0.06203719, 0.15238857, 0.18702018, 0.18572305, 0.07740396, -0.074217625, -0.072156586, -0.2183728, 0.00403749, 0.13750519, 0.30362993, 0.06550286) * go_1(0.0, 1.0); - result += mat4(0.37164542, -0.1980723, -0.15659203, 0.19498909, 0.01748114, 0.011807152, -0.05424202, 0.11926474, 0.050406165, -0.12925303, -0.020280985, 0.08429331, 0.14769496, -0.077555746, -0.15216178, -0.27070466) * go_1(1.0, -1.0); - result += mat4(0.35804263, 0.08539285, -0.14785156, -0.13532467, 0.058254432, 0.20448379, -0.006173341, 0.058168225, -0.21714899, -0.13472849, -0.09392532, -0.12753737, -0.097461835, -0.11419082, 0.09384189, 0.06414768) * go_1(1.0, 0.0); - result += mat4(0.023494452, -0.22187226, -0.16694295, 0.0204334, -0.26720086, 0.15916729, 0.3098874, -0.10292057, 0.008854983, 0.13375004, -0.04409455, 0.09286524, 0.095829524, 0.12427317, -0.048659876, 0.18300754) * go_1(1.0, 1.0); - result += mat4(-0.119153984, 0.10163183, 0.025017537, -0.40096784, 0.026778705, 0.15821172, -0.19947284, -0.33337715, 0.2952563, 0.16820388, -0.057061996, -0.029319009, -0.12184868, 0.09031512, 0.12028806, 0.021044692) * go_2(-1.0, -1.0); - result += mat4(0.086744264, -0.046958666, 0.2130253, -0.46672252, 0.07135636, 0.0100029735, -0.13828261, -0.012365689, -0.11374441, 0.21084632, -0.059631422, -0.013799735, -0.037889663, -0.10701892, -0.09493782, 0.15516634) * go_2(-1.0, 0.0); - result += mat4(0.031181194, -0.01535001, 0.029270316, 0.13128386, 0.11838377, -0.17051528, 0.12228499, -0.04841128, 0.33350074, -0.006144013, -0.09055018, 0.27470216, -0.26665646, -0.08703671, -0.01719071, -0.23449609) * go_2(-1.0, 1.0); - result += mat4(-0.12856458, 0.005562174, -0.19517267, 0.13270985, 0.2776414, 0.032003902, -0.15778573, 0.15344355, 0.26930434, -0.13459459, 0.035019353, 0.08896612, 0.12847935, -0.122637205, 0.001815178, 0.08290523) * go_2(0.0, -1.0); - result += mat4(0.33805037, -0.15318587, -0.20955376, -0.26121393, -0.026022578, -0.1617741, 0.1336867, 0.026223289, 0.012059392, -0.17295446, -0.060811974, 0.14027825, -0.21134059, -0.08408573, -0.23773228, 0.110836074) * go_2(0.0, 0.0); - result += mat4(0.16176093, 0.15307428, -0.07711325, -0.3458805, 0.061291527, 0.023916256, 0.21370678, 0.0015756418, 0.10642374, 0.24807373, 0.11164451, 0.10780487, 0.087194376, -0.2718231, -0.008457387, 0.054078236) * go_2(0.0, 1.0); - result += mat4(-0.03259038, -0.20923306, 0.165477, 0.098864526, -0.02734457, 0.08871225, -0.01552188, 0.047712058, 0.055032052, -0.13044262, -0.2899521, 0.22230095, -0.029343741, -0.16427459, -0.005436118, -0.05111821) * go_2(1.0, -1.0); - result += mat4(0.20065974, -0.1556366, -0.12620135, 0.44572976, -0.020925352, 0.12025185, 0.20588058, 0.06391864, 0.046870507, 0.16942503, -0.049370963, 0.008779016, 0.04954915, 0.090298936, -0.16466027, 0.011152038) * go_2(1.0, 0.0); - result += mat4(0.13587528, 0.047841422, 0.19804007, -0.1672396, -0.072491, 0.04543739, 0.25287256, 0.015226213, 0.02007356, -0.049578942, -0.08796175, 0.1714897, -0.07819061, 0.1509537, 0.093094915, 0.031139288) * go_2(1.0, 1.0); - result += mat4(-0.013774682, 0.118201815, -0.009592314, -0.10837201, -0.0686881, -0.083380274, 0.107689425, 0.046642892, 0.119898744, -0.05502989, -0.19719897, 0.0005697584, -0.0921928, 0.032281205, 0.2568853, 0.2325449) * go_3(-1.0, -1.0); - result += mat4(0.02991112, -0.09898633, 0.06076172, -0.20906185, 0.0026118348, 0.06130956, 0.06760944, -0.16662054, 0.065741204, -0.13144116, 0.011419801, 0.22552124, 0.1465757, -0.07417319, -0.10788749, -0.24952699) * go_3(-1.0, 0.0); - result += mat4(-0.19238451, -0.024058497, 0.19580396, -0.067399554, -0.18832864, -0.11752747, -0.078949094, -0.23762032, -0.04141864, 0.022530237, -0.02222157, 0.0054874527, 0.057746816, -0.34854797, 0.028730657, -0.08976777) * go_3(-1.0, 1.0); - result += mat4(0.16888975, 0.19949849, -0.08456147, -0.03619044, -0.019596824, 0.11214634, 0.13971676, 0.22926724, 0.03219445, -0.04566354, -0.14948955, -0.22817011, -0.08714846, -0.19684613, 0.15479128, 0.2433362) * go_3(0.0, -1.0); - result += mat4(0.16050309, -0.102841675, 0.20855242, -0.011171905, -0.10309409, 0.22455123, 0.15892951, -0.06582373, 0.010079549, -0.2055006, -0.09385158, 0.006519388, 0.11838815, 0.37134558, -0.165772, 0.12704434) * go_3(0.0, 0.0); - result += mat4(0.11643292, 0.03294274, -0.09800525, -0.13601723, -0.081318736, -0.059975546, -0.039105035, -0.2893635, -0.13024913, -0.058016162, -0.09961072, 0.10532414, 0.24250132, -0.35546342, -0.092634924, 0.093994915) * go_3(0.0, 1.0); - result += mat4(-0.18799333, 0.25611782, 0.014645917, -0.063751906, 0.06498416, 0.16619027, -0.14411639, 0.3914421, -0.07343631, -0.116468735, -0.10941946, -0.2553544, -0.37774643, -0.0018441634, 0.06827239, -0.0122299045) * go_3(1.0, -1.0); - result += mat4(-0.11884597, -0.2477297, 0.048488285, -0.06438257, -0.124703035, 0.25932777, 0.0650111, -0.0930877, 0.06463341, -0.000544085, 0.0147504965, -0.170097, -0.13241997, 0.20983136, -0.15956205, 0.03424298) * go_3(1.0, 0.0); - result += mat4(-0.034574904, 0.06755256, 0.09508443, -0.17162292, 0.046379335, 0.2178781, 0.08699012, -0.055380464, -0.2237568, -0.07427848, -0.028395249, -0.3225617, -0.084454566, -0.24776657, 0.254169, 0.13229847) * go_3(1.0, 1.0); - result += vec4(0.18765923, -0.07697714, 0.028134674, -0.060966115); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!SAVE conv2d_7_tf -//!WIDTH conv2d_6_tf.w -//!HEIGHT conv2d_6_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_6_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_6_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_6_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_6_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.21919365, 0.36627784, 0.12603314, 0.24306288, 0.06447028, 0.06472204, -0.05997039, -0.15651788, 0.017059859, -0.006497198, -0.4189735, 0.021636713, -0.23887977, -0.014220949, 0.031113686, -0.17342716) * go_0(-1.0, -1.0); - result += mat4(-0.10818789, -0.03273837, 0.33918005, -0.19290088, 0.0955361, -0.34107623, -0.054906327, -0.18083344, -0.060723677, 0.24395694, 0.112975016, -0.07254578, -0.14389384, 0.13235968, -0.15054801, -0.26216486) * go_0(-1.0, 0.0); - result += mat4(-0.23442148, -0.07857079, 0.022283873, -0.2656417, 0.037092753, -0.037313666, -0.5057047, 0.042533103, -0.120424, 0.00021930189, -0.0044566668, -0.45536995, 0.00040759926, 0.14597592, -0.094990164, -0.036161344) * go_0(-1.0, 1.0); - result += mat4(0.15024352, 0.19903262, -0.0734784, 0.092836305, -0.025753846, 0.024750374, -0.07550193, 0.035420835, 0.11084378, 0.26119822, -0.08443512, -0.0047807065, -0.042685136, 0.24889739, 0.098650105, 0.2088369) * go_0(0.0, -1.0); - result += mat4(-0.25551823, 0.14455976, 0.19886157, -0.23465924, 0.20711218, -0.20875362, -0.11320392, -0.30852005, -0.06795657, 0.008670962, 0.30601278, 0.6929064, 0.17079145, 0.15744895, 0.06441601, 0.06514001) * go_0(0.0, 0.0); - result += mat4(0.03142604, -0.006410137, -0.023654792, -0.05708553, 0.062985405, -0.077010594, 0.078804865, 0.050882503, 0.010274228, -0.15558401, 0.09490256, 0.14964707, -0.11966925, -0.36176664, 0.27809814, -0.18862294) * go_0(0.0, 1.0); - result += mat4(0.05609992, 0.0041612233, -0.08498908, 0.04479823, -0.080117956, -0.17423204, -0.22858045, 0.054569032, -0.050866384, -0.020000307, 0.027000953, -0.67724514, 0.16240878, -0.04641204, 0.0648367, -0.20613132) * go_0(1.0, -1.0); - result += mat4(0.08542306, -0.08254248, -0.11090553, -0.14140448, -0.10788511, -0.13011602, -0.29319742, -0.26007155, 0.11033401, -0.31966573, 0.32668245, 0.19542319, 0.06329418, 0.20904626, 0.2724067, -0.009155685) * go_0(1.0, 0.0); - result += mat4(-0.007403411, 0.0012836396, -0.23446666, -0.03017208, 0.062420018, -0.13611084, -0.2975928, 0.13173148, -0.03679939, 0.13743873, -0.10121899, 0.074514665, 0.1497629, -0.09523838, 0.39018926, 0.37807035) * go_0(1.0, 1.0); - result += mat4(0.11441487, -0.19565523, -0.25757137, -0.16148767, 0.15575317, -0.12657928, 0.10479676, 0.062919036, 0.010544159, 0.22931573, 0.20360178, 0.4637635, -0.3395036, -0.52467215, 0.08759308, 0.028030418) * go_1(-1.0, -1.0); - result += mat4(0.2699195, -0.34218305, 0.15259695, 0.03139074, -0.024053533, -0.029567484, 0.28480124, 0.20525953, 0.15452823, -0.217713, 0.15861876, -0.012275699, 0.21408023, 0.097508304, -0.57126766, -0.14679857) * go_1(-1.0, 0.0); - result += mat4(-0.0755847, -0.09751562, -0.29480466, -0.22285318, 0.14196442, 0.114573136, -0.22294767, 0.12463806, 0.3322209, -0.04631724, -0.11097061, -0.27986854, -0.16099304, -0.060079545, 0.00299308, 0.120776065) * go_1(-1.0, 1.0); - result += mat4(0.050933484, -0.13776319, -0.18809728, 0.24035202, -0.32528606, -0.41684148, -0.029342847, 0.28642926, -0.07963454, -0.12905268, 0.07606093, 0.24670005, -0.08815598, -0.23320907, -0.008099349, 0.21512873) * go_1(0.0, -1.0); - result += mat4(0.19247563, 0.18083979, -0.09719762, 0.15314941, -0.22350982, 0.46515045, -0.3571128, 0.35953265, 0.06921985, -0.4482386, -0.18732521, -0.5043983, 0.35159567, -0.33315298, -0.21884166, -0.16283798) * go_1(0.0, 0.0); - result += mat4(-0.021124054, -0.007966742, 0.0052493825, 0.022550896, 0.030403977, 0.3377868, -0.47602004, -0.077664234, -0.07222509, -0.07486097, -0.37971064, -0.5107857, -0.06299477, 0.04930232, -0.3330487, 0.29845512) * go_1(0.0, 1.0); - result += mat4(-0.063705474, -0.07917637, -0.02026607, -0.05142568, 0.021577014, -0.07379867, 0.033937998, 0.08148773, -0.02717838, -0.03233838, 0.098000035, 0.036476444, -0.13366953, 0.014477577, 0.24064232, 0.39313284) * go_1(1.0, -1.0); - result += mat4(-0.16046515, -0.094624564, 0.35435164, 0.09942324, -0.07137174, -0.27999225, 0.124644354, -0.0062176553, 0.015016751, -0.05500243, -0.23249559, -0.4508382, 0.1860433, 0.10671491, -0.033345353, -0.06611453) * go_1(1.0, 0.0); - result += mat4(0.21614046, -0.01307525, -0.18941112, -0.20533535, -0.14481686, -0.47801897, 0.22605121, -0.20298961, -0.06744227, -0.20377496, -0.11926173, 0.15645133, -0.31570885, -0.3495616, -0.024666889, 0.040965475) * go_1(1.0, 1.0); - result += mat4(-0.11748018, -0.039976366, -0.00084064255, -0.028653437, -0.16216733, -0.036768105, 0.018064514, -0.0928936, 0.14008482, -0.064511225, 0.24329947, -0.0268608, 0.050330248, 0.08540601, -0.07272679, -0.01187671) * go_2(-1.0, -1.0); - result += mat4(-0.09459936, -0.011723822, -0.06952858, -0.07808506, -0.065588176, 0.332501, -0.0120042395, 0.07668016, 0.14735217, -0.14856043, -0.06702449, -0.020953184, -0.023006834, 0.06135422, 0.1491448, -0.028061569) * go_2(-1.0, 0.0); - result += mat4(0.25136968, 0.25146323, -0.108277924, -0.20407207, -0.0013780294, 0.16108194, 0.25143847, 0.06672421, -0.033905584, -0.021144686, -0.019152718, 0.34619498, 0.14560962, 0.034437314, 0.024790365, -0.049976267) * go_2(-1.0, 1.0); - result += mat4(-0.24928351, 0.12637813, 0.23609994, 0.12722939, -0.036997862, -0.16554876, 0.11144095, -0.10040036, -0.020359103, -0.080701865, -0.3142192, 0.27257237, 0.13546956, -0.14416885, 0.028196262, -0.2886465) * go_2(0.0, -1.0); - result += mat4(0.28524777, -0.4236231, 0.27420738, -0.21095508, 0.23475651, 0.115876295, -0.18837357, -0.0260708, 0.030670704, -0.11516913, -0.11365572, -0.2203149, -0.018612983, -0.10719593, -0.031727783, 0.1403327) * go_2(0.0, 0.0); - result += mat4(0.07240512, 0.03139215, 0.12328737, -0.021201206, -0.13971715, 0.072742075, -0.0011289873, 0.0053133667, 0.035639685, -0.04322272, -0.19288473, -0.15812221, -0.19126481, 0.0698514, 0.17619178, -0.035605464) * go_2(0.0, 1.0); - result += mat4(-0.18552057, 0.07259671, 0.011667668, -0.15630563, 0.11414356, 0.14482655, -0.04021029, 0.18495587, -0.11386139, -0.09058561, -0.011265998, 0.23358451, 0.0521358, 0.12495261, 0.021644838, -0.048094347) * go_2(1.0, -1.0); - result += mat4(-0.09222373, 0.0533347, 0.055820454, 0.22382596, 0.18713981, 0.2668916, -0.019384036, 0.012698582, 0.13325234, 0.20361474, -0.33106443, -0.08571572, -0.21243028, -0.10996386, 0.123459645, 0.1534967) * go_2(1.0, 0.0); - result += mat4(0.18133277, 0.18108074, -0.05638664, 0.29533157, -0.2108019, -0.033636626, 0.5015888, -0.15116066, -0.041320793, -0.14764231, 0.07314567, -0.18865979, 0.10276937, 0.094240844, -0.1364283, 0.27812913) * go_2(1.0, 1.0); - result += mat4(0.06040915, 0.23753685, 0.19019844, 0.23948252, -0.07535012, 0.11848904, 0.14389765, 0.050067905, 0.16150077, -0.030053454, 0.12478255, 0.26020208, 0.111198805, 0.06787492, -0.12771018, 0.006687384) * go_3(-1.0, -1.0); - result += mat4(-0.5421617, 0.10414128, -0.21526064, -0.08883624, 0.13145073, -0.29695904, 0.57386386, 0.073361695, -0.09538372, 0.27593842, 0.070922814, 0.21769938, 0.06214975, 0.11847816, 0.10033405, 0.29360098) * go_3(-1.0, 0.0); - result += mat4(-0.16294672, -0.014815565, 0.22046989, 0.16858687, 0.058917344, 0.21384977, 0.18803519, 0.105688855, 0.0355118, 0.20571202, -0.07341922, 0.26624045, -0.0415102, 0.050942056, 0.19727907, 0.20122413) * go_3(-1.0, 1.0); - result += mat4(-0.020470422, 0.15815964, -0.13437317, -0.1967045, 0.074902646, 0.08356444, 0.055913117, -0.12837863, -0.18647918, 0.07002247, 0.038864706, -0.07288784, 0.04135125, -0.016055549, -0.1340297, -0.15578008) * go_3(0.0, -1.0); - result += mat4(-0.07685624, 0.00079105416, -0.068755336, 0.110282525, -0.014170752, 0.041282844, -0.17035173, 0.19439398, -0.3036256, 0.024148455, -0.19566648, -0.06736254, 0.14203559, -0.13016985, -0.32845357, -0.14266774) * go_3(0.0, 0.0); - result += mat4(0.0087252045, 0.098839566, -0.08770506, -0.08499465, 0.015245115, -0.110854514, 0.054458305, -0.018121868, -0.09666134, -0.08316006, 0.24617113, -0.17195955, 0.2574254, 0.06734342, -0.13792352, -0.07306126) * go_3(0.0, 1.0); - result += mat4(-0.0073954533, -0.20126835, -0.22545357, -0.29462856, 0.057408337, 0.11939119, -0.01846476, 0.12534486, 0.15751605, -0.14282645, -0.14219986, 0.14283386, 0.14090413, 0.10500912, 0.03039335, 0.17448832) * go_3(1.0, -1.0); - result += mat4(0.043910783, -0.09140025, -0.21666165, 0.07616939, 0.104454786, 0.309926, -0.12906921, 0.1140117, 0.09372434, 0.049547072, -0.086615674, -0.034449168, 0.096705064, 0.26001686, 0.027063297, 0.12422948) * go_3(1.0, 0.0); - result += mat4(0.1365422, 0.2679611, 0.12037257, 0.43346113, 0.08223084, -0.016788265, 0.13570398, -0.017974345, -0.17922844, -0.09475725, 0.073539585, -0.106947675, 0.08998511, 0.04133868, 0.16586913, -0.26291734) * go_3(1.0, 1.0); - result += vec4(-0.19233678, 0.016725872, -0.008011114, -0.1977463); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!SAVE conv2d_7_tf1 -//!WIDTH conv2d_6_tf.w -//!HEIGHT conv2d_6_tf.h -//!COMPONENTS 4 -#define go_0(x_off, y_off) (max((conv2d_6_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_6_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_6_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_6_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.36016628, 0.019064043, 0.3073228, 0.16891135, 0.026739368, 0.31136194, 0.11260383, -0.26918694, 0.0419928, -0.3365078, 0.20189743, -0.04136312, 0.039564647, 0.033199426, 0.18768296, -0.017119858) * go_0(-1.0, -1.0); - result += mat4(0.28663483, -0.41716507, 0.059281543, 0.043736435, 0.0028875466, 0.13817391, -0.12543318, -0.2794053, -0.023528943, 0.10610115, 0.09100278, 0.040132936, -0.21949205, -0.027810011, -0.0301218, 0.084047124) * go_0(-1.0, 0.0); - result += mat4(0.39674807, -0.0040878756, -0.038235947, 0.11880838, 0.009898328, 0.19107847, -0.009313831, -0.1554276, -0.047341663, 0.18049581, -0.029317195, 0.0708909, 0.0708316, -0.110617444, 0.14584038, -0.022261223) * go_0(-1.0, 1.0); - result += mat4(-0.20400241, 0.0896492, -0.010386381, -0.052133385, 0.005023956, -0.06628705, -0.16436209, -0.25345984, -0.05285192, 0.09706557, -0.03778914, -0.152546, 0.17023252, 0.063713826, 0.00743037, 0.056634087) * go_0(0.0, -1.0); - result += mat4(-0.080793336, 0.4204207, 0.19098237, 0.20028038, -0.054076545, 0.22064368, -0.25853387, -0.3643562, 0.2085573, -0.023731, -0.06727709, -0.18683033, -0.18032159, -0.06388348, 0.304463, -0.2517781) * go_0(0.0, 0.0); - result += mat4(0.11940941, 0.10624008, 0.16120581, 0.2369602, 0.3321827, 0.4272075, -0.10403669, -0.31388018, -0.006372124, -0.00653671, 0.109810196, 0.2277172, 0.005771998, 0.086026914, -0.08934813, -0.094941735) * go_0(0.0, 1.0); - result += mat4(-0.13233568, 0.24112508, -0.0068006413, 0.12466225, 0.11396591, -0.07249253, -0.29090378, -0.12828146, -0.22001141, -0.08532405, -0.11932601, 0.29452974, 0.09572195, 0.017603843, 0.12454017, 0.16321751) * go_0(1.0, -1.0); - result += mat4(0.042107448, -0.00807216, 0.06580674, -0.1289527, 0.13977426, -0.037159685, -0.21001346, -0.08698161, 0.22370502, -0.29170328, 0.2179206, 0.36621302, 0.0825477, -0.016513655, -0.11157249, 0.12861598) * go_0(1.0, 0.0); - result += mat4(0.2246826, -0.13262233, 0.12131653, -0.15522355, 0.38104856, 0.030237729, 0.1286289, -0.19770473, -0.16175011, -0.13688888, 0.23505463, 0.21333031, 0.76352316, -0.17949077, -0.13124311, 0.1613879) * go_0(1.0, 1.0); - result += mat4(-0.050607495, 0.0846705, -0.06136092, -0.033436477, 0.41138348, 0.037043408, -0.02676336, -0.37771952, 0.22147503, 0.06490757, -0.04266158, -0.22606373, 0.045775007, -0.054498192, -0.21495876, -0.036050417) * go_1(-1.0, -1.0); - result += mat4(-0.06242522, 0.2700824, -0.05602621, -0.12361551, 0.14477442, 0.19403581, 0.23505251, -0.072234035, -0.15831544, 0.4640447, -0.104754634, -0.004539681, -0.20246096, 0.23216484, -0.35886365, 0.11360777) * go_1(-1.0, 0.0); - result += mat4(0.14777757, 0.18951412, 0.027219458, 0.11216015, 0.02997997, -0.13466355, -0.0010830094, 0.021302953, 0.23441231, -0.14529245, 0.08068729, 0.10044398, 0.3972878, 0.26570204, 0.0046810666, -0.2863261) * go_1(-1.0, 1.0); - result += mat4(-0.10385485, 0.1053724, 0.16961229, 0.20727012, -0.025148917, -0.011365095, 0.03899919, -0.030950211, 0.079080455, -0.32767853, 0.064670205, -0.035771385, 0.16833797, -0.21567492, 0.30871257, -0.19965471) * go_1(0.0, -1.0); - result += mat4(-0.23420888, -0.004894698, -0.18162623, -0.31107524, 0.11976508, 0.14924951, -0.08723316, 0.21401922, -0.58200324, -0.01177345, -0.049033508, 0.19593577, -0.21139073, 0.13016601, 0.08734843, 0.4158892) * go_1(0.0, 0.0); - result += mat4(0.0009789813, 0.33274913, 0.017405733, -0.042906318, -0.26410276, -0.09291333, 0.019387102, 0.105381854, -0.009176527, 0.09483514, -0.28462934, -0.03644404, 0.285194, -0.4260311, 0.14902237, -0.115670316) * go_1(0.0, 1.0); - result += mat4(-0.09344311, 0.4463103, 0.19984834, -0.09733857, -0.118717775, -0.0708026, 0.24919955, -0.11234634, 0.1246395, -0.052909933, 0.1525815, 0.07724016, 0.0070534665, -0.06404165, -0.18149726, -0.014058336) * go_1(1.0, -1.0); - result += mat4(-0.17353044, 0.15376104, 0.004588994, -0.13554202, -0.19920237, -0.18918681, 0.11327512, -0.117296435, -0.0785251, 0.013677155, -0.2103214, 0.06843426, -0.27790928, 0.09837545, -0.00019213746, 0.09132539) * go_1(1.0, 0.0); - result += mat4(-0.01586651, 0.014929441, 0.2426186, -0.1889374, -0.0865462, -0.07454513, -0.20797268, -0.22366855, 0.19704159, 0.0048206006, -0.16707218, -0.14162683, 0.036798395, -0.1663155, -0.12009389, 0.09603803) * go_1(1.0, 1.0); - result += mat4(-0.041532192, 0.05753804, 0.17927068, -0.042112097, 0.12080969, -0.15052572, -0.34855765, -0.07356988, -0.28199884, -0.18958664, 0.15879883, 0.08511588, 0.0034213227, -0.05338495, -0.37285298, 0.06626709) * go_2(-1.0, -1.0); - result += mat4(-0.20219134, 0.22150375, -0.29405454, 0.06597703, -0.018885285, -0.010551704, -0.010774283, 0.08758955, -0.2015349, -0.17006227, -0.24321876, -0.06864207, -0.118437864, -0.043977212, -0.029736811, 0.14040919) * go_2(-1.0, 0.0); - result += mat4(-0.18709077, -0.09723938, 0.12783436, -0.15167634, 0.29039705, -0.11009911, 0.018371418, -0.060096707, -0.07256923, -0.25799567, -0.06276934, -0.035992302, -0.06729111, -0.059956793, -0.024079734, 0.011838878) * go_2(-1.0, 1.0); - result += mat4(0.010449175, -0.08212451, 0.1409803, 0.11861122, -0.18035835, 0.051930565, 0.01049551, -0.09447962, 0.12029649, 0.040604513, -0.059971705, -0.0044667358, -0.22080486, -0.11187681, 0.124374695, -0.004155485) * go_2(0.0, -1.0); - result += mat4(-0.28584236, -0.38480133, -0.13987814, -0.4463469, -0.3890419, -0.022498172, 0.17334452, 0.21895568, -0.15450422, -0.10905497, 0.15111905, -0.22554915, 0.106121585, -0.029144369, 0.36059046, 0.22140682) * go_2(0.0, 0.0); - result += mat4(-0.23780307, -0.023033705, 0.068205886, -0.110635854, -0.26720005, -0.1608183, 0.19523881, 0.07972837, -0.018495852, -0.2793956, 0.17668398, -0.12020479, -0.079556085, -0.02284952, 0.031480275, 0.31818348) * go_2(0.0, 1.0); - result += mat4(0.22501226, -0.00829407, 0.059581667, 0.16512989, 0.18711442, 0.1200968, 0.11812652, -0.16091056, 0.15733972, 0.045156084, 0.20640492, -0.16852027, -0.11217177, 0.06746273, -0.050218176, 0.08643783) * go_2(1.0, -1.0); - result += mat4(0.20715691, -0.1082907, 0.027892975, 0.19515261, -0.17838904, 0.1532257, -0.108409844, -0.06632365, -0.13805026, 0.23020233, 0.12416581, -0.14861803, 0.16650471, 0.08158386, -0.09051303, -0.06981649) * go_2(1.0, 0.0); - result += mat4(-0.04617126, 0.06579221, 0.25964734, 0.28500968, 0.07641255, -0.090885855, -0.0972522, 0.18298368, -0.06393334, 0.103463, -0.23062052, -0.15270731, 0.13633437, 0.074707486, 0.15065335, -0.024602572) * go_2(1.0, 1.0); - result += mat4(0.118319295, 0.010410938, 0.044655934, -0.104725905, 0.030477569, 0.12867387, 0.039075315, 0.18922117, 0.13301082, -0.1601557, 0.038168408, -0.07372259, -0.09522213, -0.095107146, -0.16679631, 0.044673234) * go_3(-1.0, -1.0); - result += mat4(0.46229, -0.30780822, -0.09081465, 0.1433387, -0.0315039, 0.059409115, -0.24948491, -0.17146957, 0.060843736, -0.041989822, 0.054005735, 0.22835566, 0.12036598, -0.0070898845, 0.17276852, -0.17754094) * go_3(-1.0, 0.0); - result += mat4(-0.35119572, 0.020034311, 0.08751943, 0.08193488, 0.041884877, 0.22649358, -0.07447533, 0.20845473, -0.04859846, -0.16206735, 0.06819576, -0.053000778, 0.18146423, 0.04694148, 0.045293212, 0.06783575) * go_3(-1.0, 1.0); - result += mat4(0.280914, -0.14998704, -0.23485807, -0.015608296, 0.1549556, -0.11992663, -0.094974115, 0.05887284, 0.053392075, 0.10322464, -0.075066686, 0.068358354, -0.18663338, 0.009901499, -0.123370335, -0.12502703) * go_3(0.0, -1.0); - result += mat4(0.7748568, -0.17870626, -0.20770052, 0.024692526, -0.056430295, -0.06324113, -0.03660047, 0.29629672, -0.51896983, -0.027231261, 0.05903762, 0.077677645, -0.061675485, -0.20277846, 0.10352223, -0.08198446) * go_3(0.0, 0.0); - result += mat4(-0.06347568, 0.21643166, -0.09718546, 0.0372257, -0.029537952, -0.0357135, -0.09548363, 0.18225233, -0.29609334, -0.3496132, 0.18245913, -0.10162589, -0.18189451, -0.09077887, 0.117313184, -0.06863874) * go_3(0.0, 1.0); - result += mat4(-0.047373574, -0.020289376, -0.25748715, -0.13568166, 0.15656634, -0.06841899, 0.012100781, -0.13611819, 0.0016357322, -0.23870537, 0.14035743, -0.14700134, 0.2535575, -0.13697346, -0.13693139, -0.10365287) * go_3(1.0, -1.0); - result += mat4(0.4283934, -0.316192, -0.012617617, 0.018468965, 0.21436644, 0.18408814, -0.42651537, 0.12504087, -0.13894933, 0.091662176, -0.20096369, -0.080727175, -0.005487846, 0.17046383, 0.1383948, -0.0054956395) * go_3(1.0, 0.0); - result += mat4(0.20014295, -0.027282396, -0.06317007, 0.04452042, 0.064600386, 0.072222926, -0.33409226, 0.08063831, -0.022607977, 0.1308856, -0.39691743, -0.094889864, -0.1810531, 0.011367248, -0.2531222, -0.22468317) * go_3(1.0, 1.0); - result += vec4(0.26886886, 0.05874665, 0.10268232, 0.05833081); - return result; -} -//!DESC Anime4K-v4.0-Restore-CNN-(VL)-Conv-3x1x1x112 -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!BIND conv2d_7_tf -//!BIND conv2d_7_tf1 -//!SAVE MAIN -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -#define g_0 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_1 (max((conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_2 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_4 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_5 (max((conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_6 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_8 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_9 (max((conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_10 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_12 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_13 (max((conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_14 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_15 (max(-(conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_16 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_17 (max((conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_18 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_19 (max(-(conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_20 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_21 (max((conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -#define g_22 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_23 (max(-(conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -#define g_24 (max((conv2d_7_tf_tex(conv2d_7_tf_pos)), 0.0)) -#define g_25 (max((conv2d_7_tf1_tex(conv2d_7_tf1_pos)), 0.0)) -#define g_26 (max(-(conv2d_7_tf_tex(conv2d_7_tf_pos)), 0.0)) -#define g_27 (max(-(conv2d_7_tf1_tex(conv2d_7_tf1_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(0.09689336, 0.06046458, 0.072598994, 0.0, 0.11994565, 0.104477674, 0.09302802, 0.0, -0.05718302, 0.050438102, 0.08814741, 0.0, 0.0308889, 0.0033925986, -0.01715605, 0.0) * g_0; - result += mat4(-0.028314235, 0.06597744, 0.0966897, 0.0, 0.035656154, 0.07770106, 0.075551905, 0.0, 0.0001793458, -0.000479495, -0.00297406, 0.0, -0.053916585, -0.016807461, -0.0057141334, 0.0) * g_1; - result += mat4(-0.047189303, -0.0207, -0.020910334, 0.0, -0.07933196, -0.06961211, -0.086069845, 0.0, 0.0943727, 0.008463375, 0.010755166, 0.0, 0.062410597, 0.022625161, 0.04068433, 0.0) * g_2; - result += mat4(0.10270994, -0.019080428, 0.0050091282, 0.0, -0.004672948, -0.013966742, -0.0063746064, 0.0, -2.5856789e-05, 0.03151499, -0.0023983798, 0.0, 0.113539025, 0.12381699, 0.100360274, 0.0) * g_3; - result += mat4(0.07868885, -0.030913834, -0.009213676, 0.0, 0.04870991, 0.021467991, 0.038739506, 0.0, -0.042969644, -0.07122453, -0.08798675, 0.0, -0.09784122, 0.021434791, 0.02510374, 0.0) * g_4; - result += mat4(0.050420716, 0.0729716, 0.076532185, 0.0, -0.019112485, -0.01037939, -0.026948035, 0.0, -0.02591423, 0.008927897, -0.00042541025, 0.0, 0.1043701, -0.0071186824, -0.041817162, 0.0) * g_5; - result += mat4(-0.16143242, -0.0009298223, -0.01228508, 0.0, 0.07744052, -0.018313263, -0.0488145, 0.0, 0.09241393, 0.07128674, 0.055164956, 0.0, 0.054884013, -0.04834418, -0.06281626, 0.0) * g_6; - result += mat4(-0.049036566, -0.05979936, -0.05594288, 0.0, -0.014564307, 0.031926468, 0.037857566, 0.0, 0.015474487, -0.11385003, -0.11527764, 0.0, -0.07076006, 0.057038613, 0.095983796, 0.0) * g_7; - result += mat4(0.03094887, -0.008734403, 0.00042712069, 0.0, 0.053891554, 0.05837673, 0.06200635, 0.0, 0.09071558, -0.04202184, -0.046172567, 0.0, -0.0425916, 0.04905093, 0.020835675, 0.0) * g_8; - result += mat4(0.096628904, -0.037792254, -0.043241944, 0.0, -0.011923947, -0.025950424, -0.031381752, 0.0, -0.060941868, -0.07859433, -0.07535451, 0.0, -0.026777223, 0.08604982, 0.07829908, 0.0) * g_9; - result += mat4(-0.06435972, 0.0036599538, 0.00786578, 0.0, -0.061972067, -0.05681472, -0.06667608, 0.0, -0.106890626, 0.007406496, 0.029977169, 0.0, -0.20519382, -0.044860814, 0.0021225857, 0.0) * g_10; - result += mat4(-0.16876474, 0.012789643, 0.026692612, 0.0, 0.017817136, 0.026935097, 0.02227043, 0.0, 0.01690181, 0.07716103, 0.086527, 0.0, 0.07923805, -0.10443151, -0.10859543, 0.0) * g_11; - result += mat4(0.003730466, -0.024648283, -0.022169832, 0.0, -0.0062762927, 0.022062732, 0.032966793, 0.0, 0.016349113, 0.017197203, 0.020952817, 0.0, -0.1763789, 0.035497356, 0.053835396, 0.0) * g_12; - result += mat4(0.020886675, -0.07054202, -0.079142675, 0.0, 0.06664387, 0.044960167, 0.042230908, 0.0, -0.095019594, 0.012421141, 0.0142890485, 0.0, 0.056814816, -0.012751135, -0.014684506, 0.0) * g_13; - result += mat4(0.011765893, 0.0008920681, -0.0018258415, 0.0, -0.010473814, -0.023085753, -0.028783914, 0.0, -0.023034256, -0.0024786016, -0.0052162083, 0.0, 0.1643386, -0.06132718, -0.09289065, 0.0) * g_14; - result += mat4(0.016597198, 0.09389637, 0.10833379, 0.0, -0.043163072, -0.04714812, -0.035274632, 0.0, 0.09634976, -0.009292612, -0.022424143, 0.0, -0.08765172, 0.0051558353, 0.010900356, 0.0) * g_15; - result += mat4(0.030815786, 0.021069322, 0.01812191, 0.0, 0.084839165, -0.0080813095, -0.029270556, 0.0, -0.10456346, 0.062386703, 0.0665605, 0.0, 0.11926609, -0.1104228, -0.13291118, 0.0) * g_16; - result += mat4(-0.07159541, -0.007267032, -0.010134558, 0.0, 0.008234213, 0.045609634, 0.040295456, 0.0, 0.018416971, 0.01308482, 0.014649557, 0.0, 0.035107512, -0.02140815, -0.030279048, 0.0) * g_17; - result += mat4(0.01918586, 0.03875863, 0.03229402, 0.0, -0.07917104, 0.041135103, 0.057182517, 0.0, 0.08609541, 0.0079662455, 0.004327576, 0.0, -0.14332893, 0.03120354, 0.056732506, 0.0) * g_18; - result += mat4(0.03200192, -0.0035752193, -0.0031064528, 0.0, -0.010902813, 0.014607456, 0.019431474, 0.0, -0.016461229, -0.004938204, -0.004655488, 0.0, -0.033470232, 0.0026075812, 0.005896968, 0.0) * g_19; - result += mat4(0.037410006, 0.048742272, 0.04348088, 0.0, 0.037719514, 0.030768529, 0.03127472, 0.0, 0.056426726, 0.03066893, 0.016440205, 0.0, -0.010599352, 0.022832409, 0.023211194, 0.0) * g_20; - result += mat4(-0.005733291, 0.06365659, 0.06663611, 0.0, -0.041917093, -0.016493445, -0.020438088, 0.0, -0.0014357592, -0.0022506563, -0.0045095007, 0.0, 0.029893145, -0.009129354, -0.015173116, 0.0) * g_21; - result += mat4(0.013052085, 0.005108175, 0.0025906067, 0.0, -0.021950055, -0.036447693, -0.036141638, 0.0, -0.036296472, 0.0068928464, 0.013102313, 0.0, 0.0060471976, -0.024798103, -0.023548538, 0.0) * g_22; - result += mat4(0.0067743887, -0.06191211, -0.062355213, 0.0, 0.0016080744, -0.020445071, -0.016840393, 0.0, 0.028264903, 0.01852915, 0.015891539, 0.0, -0.023877412, -0.013271666, -0.008158679, 0.0) * g_23; - result += mat4(-0.04317466, -0.018953001, -0.020452993, 0.0, -0.009322576, -0.03022352, -0.030970376, 0.0, 0.05653658, 0.05430553, 0.046692245, 0.0, 0.05615359, 0.059338935, 0.056018773, 0.0) * g_24; - result += mat4(0.022878079, 0.03392234, 0.033057988, 0.0, -0.017554542, -0.0141542535, -0.014122613, 0.0, -0.048634093, -0.05316463, -0.047988772, 0.0, -0.058002178, -0.040221967, -0.034025013, 0.0) * g_25; - result += mat4(-0.018253656, -0.04197674, -0.040467236, 0.0, -0.04358929, -0.028309818, -0.025425073, 0.0, -0.008488672, -0.001727991, 0.00035808363, 0.0, -0.0011709273, 0.0052514165, 0.0059479307, 0.0) * g_26; - result += mat4(-0.08333935, -0.09818201, -0.09476284, 0.0, -0.033692095, -0.046259012, -0.045797516, 0.0, -0.007577072, 0.0022402718, 0.0016200038, 0.0, 0.0029786075, -0.020728534, -0.018938033, 0.0) * g_27; - result += vec4(0.047567394, -0.02504617, -0.028163986, 0.0); - return result + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/Anime4K_Upscale_CNN_x2_M.glsl b/assets/shaders/Anime4K_Upscale_CNN_x2_M.glsl deleted file mode 100644 index 156c6bdd3..000000000 --- a/assets/shaders/Anime4K_Upscale_CNN_x2_M.glsl +++ /dev/null @@ -1,300 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.010995803, 0.077095956, -0.043992598, 0.06048717, 0.1164834, -0.11689607, 0.072985925, -0.078805886, 0.01182932, 0.054985743, -0.09018186, 0.044907484, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(0.1813623, -0.14752422, 0.025720436, -0.17639883, 0.15697388, 0.10445984, -0.1843076, 0.5264643, 0.047516696, -0.097305484, 0.09740847, -0.29619336, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(-0.014534763, 0.09486465, 0.046173926, 0.039391946, 0.09609376, -0.060574662, 0.042200956, -0.3269777, 0.051006425, 0.059818447, 0.04366627, 0.17699827, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(0.04268535, -0.08152529, 0.10577459, -0.036936995, -0.051562306, 0.054872766, 0.09194519, 0.0025066638, -0.01073954, 0.00064474024, 0.10038221, 0.02131141, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.51751363, -0.40028602, 0.3469574, 0.5933738, -0.91357684, -0.67692596, 0.57815677, 0.39809322, -0.16341521, -0.27169713, 0.12232366, 0.4318641, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(0.12601124, -0.06263236, -0.45907676, -0.41514075, 0.3330334, -0.1929565, -0.6333532, -0.6552794, -0.045809917, 0.046351526, -0.26173338, -0.30252662, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(0.0030332592, 0.012103107, 0.010537323, -0.02038607, 0.095558085, 0.097704545, 0.083433494, 0.026790185, 0.01943357, -0.061712462, -0.00015703632, -0.032268334, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.016870102, 0.5215812, -0.11525501, 0.027527615, -0.09045733, 0.61310345, -0.1575268, 0.1905386, 0.020172214, 0.3503187, -0.08209157, -0.051328037, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(0.005494087, -0.010656317, 0.07682753, -0.08116042, -0.03934524, 0.16589017, 0.101483546, -0.066603065, 0.03494657, -0.07885597, 0.074227594, 0.0016264897, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(0.014463938, -0.0031906287, 0.007015422, -0.003888468); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_tf -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.08532478, -0.14302494, -0.017921071, -0.0032664281, -0.09841952, 0.024187077, 0.10701477, 0.14110753, -0.05714981, -0.10897174, 0.073803626, 0.103992954, 0.07914382, 0.032193683, -0.18346278, -0.09723936) * go_0(-1.0, -1.0); - result += mat4(-0.034482613, -0.10742312, -0.047286414, -0.08641124, -0.33896688, -0.036533825, -0.48337597, 0.034040943, -0.13598205, -0.080917805, 0.08540263, -0.012667689, -0.009171425, -0.120026454, -0.20536867, -0.032149274) * go_0(-1.0, 0.0); - result += mat4(0.18687321, 0.066278316, 0.024327392, 0.08816582, -0.08017908, 0.09488853, 0.26018232, -0.101504356, 0.17487666, 0.31057635, 0.14785016, -0.09622089, -0.07537452, -0.13844088, -0.05810814, 0.09907489) * go_0(-1.0, 1.0); - result += mat4(-0.04183032, 0.15207712, 0.005002397, 0.32277516, -0.16169126, -0.119836345, -0.04068436, -0.096728764, 0.11943901, 0.1789597, -0.20412198, 0.19009817, 0.36630696, 0.06946421, -0.5254373, -0.11896399) * go_0(0.0, -1.0); - result += mat4(-0.31916487, -0.98911583, 1.0728644, -0.39280394, 0.33458877, -0.17325239, -0.645045, -0.28524077, -0.14512783, 0.24996442, -0.09837877, 0.05468934, 0.31559715, -0.020504637, -0.026724018, 0.24507573) * go_0(0.0, 0.0); - result += mat4(-0.23759829, -0.08530173, -0.16665787, -0.22463752, 0.109896734, 0.13446991, -0.049552456, -0.02385489, -0.01245375, 0.3833208, 0.05758832, 0.1528937, 0.0501858, -0.19651426, 0.0076587177, -0.03297025) * go_0(0.0, 1.0); - result += mat4(0.14554465, -0.01826686, 0.10284085, -0.19152659, -0.017585073, -0.05511482, 0.06362406, 0.023924058, -0.0018977845, -0.103172876, 0.03287086, -0.20085956, 0.36062446, 0.10749464, -0.20984372, 0.018256644) * go_0(1.0, -1.0); - result += mat4(-0.005534592, 0.3709197, -0.18287498, 0.1720451, 0.030155553, -0.023265475, 0.0058617783, -0.031765483, 0.037328955, -0.2730994, 0.35090837, -0.3269043, -0.028477207, 0.32756507, -0.15989502, 0.12158258) * go_0(1.0, 0.0); - result += mat4(0.10873739, 0.19583772, 0.060394943, 0.09410379, -0.04739245, 0.026561242, 0.022990001, 0.1093272, -0.01071349, -0.022938967, -0.046423864, 0.2385325, -0.0319821, 0.046962265, 0.09081178, -0.11001857) * go_0(1.0, 1.0); - result += mat4(0.13012704, 0.112289295, 0.030790284, -0.050499484, 0.11784853, 0.08107028, -0.07556717, -0.15643, 0.015249331, 0.015299608, 0.07748125, 0.054485757, 0.044857923, 0.12161275, -0.048292994, -0.033995003) * go_1(-1.0, -1.0); - result += mat4(0.12931514, 0.15114146, 0.070513315, 0.11246343, 0.4142387, 0.213479, -0.5439916, 0.07776645, 0.13109331, 0.2021147, 0.25932786, -0.22157331, 0.02377734, -0.014970623, -0.1943276, 0.18440372) * go_1(-1.0, 0.0); - result += mat4(-0.22365458, -0.19829084, -0.06881161, -0.06468993, 0.17202774, 0.0048758537, -0.09235021, 0.18941896, 0.064125344, -0.09067088, 0.09748182, 0.13561936, -0.05876288, -0.0122420965, -0.054380875, -0.17743628) * go_1(-1.0, 1.0); - result += mat4(0.18582906, -0.09263032, -0.08210888, -0.20515606, 0.11484005, 0.08557595, 0.0009253741, -0.051202174, -0.18535301, -0.1529345, -0.13092944, 0.03770747, -0.020947013, 0.19187425, -0.15494856, -0.048979875) * go_1(0.0, -1.0); - result += mat4(-0.38131633, 0.4278787, 0.19763695, 0.27655518, -0.08711912, 0.07374453, -0.064803004, 0.5983854, 0.2361923, -0.057221692, -0.37138999, -0.24259573, 0.13890724, 0.25706333, -0.54021406, 0.08095518) * go_1(0.0, 0.0); - result += mat4(0.0991328, -0.022651536, -0.029148921, -0.009812537, -0.09523686, -0.15704902, 0.052389514, 0.21561539, 0.1950314, -0.08572602, 0.0016523858, 0.14125621, -0.030999828, 0.12009709, 0.0373512, -0.105043754) * go_1(0.0, 1.0); - result += mat4(-0.11251988, 0.12106985, 0.011923068, 0.3662747, 0.004800994, 0.017972551, 0.004761366, -0.07934206, -0.13755941, -0.022852683, 0.1502225, 0.009758547, -0.16964264, 0.00984782, 0.07855833, 0.035730787) * go_1(1.0, -1.0); - result += mat4(0.01964957, -0.27226487, 0.033933397, -0.117632054, -0.009058229, 0.047830686, -0.01125145, 0.136628, 0.0056388285, 0.3028781, -0.12286517, 0.23498532, -0.009319075, -0.444048, 0.16174883, -0.06367683) * go_1(1.0, 0.0); - result += mat4(0.02343933, -0.010915871, -0.058680378, -0.21886891, -0.010750894, -0.06671997, 0.0602906, -0.07903071, 0.066891186, 0.06650588, 0.14362891, -0.101870626, 0.02264628, -0.06940821, -0.077616625, 0.110911585) * go_1(1.0, 1.0); - result += vec4(0.032014452, -0.020821465, 0.0826416, -0.002838458); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.06963679, -0.07560548, -0.069522075, 0.0038078027, -0.08002613, 0.13671301, 0.084461786, -0.039376218, 0.19136548, -0.123174496, 0.26566333, -0.16583005, -0.18664864, -0.023539122, -0.21928434, -0.026818147) * go_0(-1.0, -1.0); - result += mat4(0.16660932, -0.18558703, 0.37230486, 0.118128106, -0.14098641, 0.14659132, -0.22217897, 0.12952235, -0.4139033, -0.04308319, 0.12885277, -0.17986743, -0.23556231, -0.08351981, -0.43240538, 0.019033253) * go_0(-1.0, 0.0); - result += mat4(-0.18008037, -0.04448665, 0.011906908, -0.023056917, 0.18136618, -0.04723555, -0.0050158803, -0.14823224, -0.2105281, 0.023047728, -0.14040631, -0.03178526, -0.13477588, -0.01820428, 0.058358394, 0.23792502) * go_0(-1.0, 1.0); - result += mat4(0.07363309, -0.061728477, 0.03573137, -0.0050971056, -0.012813505, -0.17236637, 0.1697835, 0.055788577, -0.22263195, 0.10324512, 0.58971673, -0.4872246, -0.1555681, 0.032747746, -0.096495196, 0.070196226) * go_0(0.0, -1.0); - result += mat4(0.14174286, 0.099460006, -0.088765986, 0.58350676, -0.025177564, -0.46004987, 0.37007022, -0.11437029, -0.5164534, -0.60465246, 0.38859612, -0.32846406, 0.050266482, -0.20334712, 0.18316261, -0.19327633) * go_0(0.0, 0.0); - result += mat4(-0.09377763, -0.0012762006, -0.028991895, -0.26523829, 0.20173682, 0.037923716, -0.03174243, 0.07103378, -0.10764164, -0.30752546, 0.20556998, -0.1892279, 0.08115748, -0.023550175, -0.07627362, 0.11746628) * go_0(0.0, 1.0); - result += mat4(-0.06998859, -0.017997518, 0.069938794, -0.14943017, -0.14179112, 0.16643842, -0.110231474, 0.08895815, -0.24074875, 0.3277253, -0.07435203, -0.23452802, 0.039962552, -0.07145652, -0.022511544, -0.04571222) * go_0(1.0, -1.0); - result += mat4(-0.059785757, -0.23771374, -0.030571314, 0.25222278, 0.106601834, 0.34398326, 0.14511436, -0.03867526, -0.38982397, -0.11944689, 0.12997924, -0.13079585, 0.005729482, 0.012653905, -0.063693404, 0.09632285) * go_0(1.0, 0.0); - result += mat4(-0.04933823, 0.0547175, 0.050636575, -0.10060694, 0.1344485, 0.19752938, -0.100068115, -0.028829506, -0.14096203, -0.079092234, 0.092109434, 0.011606209, -0.04052607, -0.008347507, 0.06956573, -0.028109524) * go_0(1.0, 1.0); - result += mat4(0.21918017, -0.11115073, 0.2262453, -0.06889667, -0.11256312, -0.07438075, -0.088454485, 0.13672407, -0.06905764, 0.08128395, 0.016103368, 0.050190717, 0.09691516, 0.05845721, 0.4886816, 0.041121427) * go_1(-1.0, -1.0); - result += mat4(-0.3449472, 0.09711974, -0.13881907, -0.018265123, 0.27855873, -0.07030004, 0.29545054, 0.37216932, 0.08657718, 0.099066615, -0.10574013, -0.17667885, -0.14855732, -0.11351448, 0.66945946, 0.11312157) * go_1(-1.0, 0.0); - result += mat4(0.2526151, -0.04594331, -0.06606611, 0.09104881, 0.06857995, -0.075284235, -0.17664689, 0.21578754, 0.0696524, 0.09142951, 0.080997564, -0.0682772, -0.0011445724, -0.11736295, 0.2519232, -0.101926275) * go_1(-1.0, 1.0); - result += mat4(-0.12913518, 0.058357026, 0.195421, -0.15651494, 0.2877076, 0.0033844314, -0.07831594, 0.052855384, -0.031295884, 0.03301088, -0.18408822, 0.06732994, 0.23742151, -0.12568143, 0.22810535, -0.11545694) * go_1(0.0, -1.0); - result += mat4(-0.49203303, -0.22656603, 0.1723193, -0.51250046, -0.09742038, 0.758559, -0.3387505, -0.6193586, 0.14136684, 0.27679884, -0.050113205, 0.31041816, -0.36475047, -0.48746544, 0.3233227, 0.4579754) * go_1(0.0, 0.0); - result += mat4(0.46636763, 0.1507748, -0.2581362, 0.15413165, -0.17160143, 0.14256273, -0.074575804, -0.099299066, -0.0017214464, 0.13778336, -0.07378213, -0.15489665, -0.10533715, -0.0011083825, 0.39584312, 0.0023906573) * go_1(0.0, 1.0); - result += mat4(0.026959421, -0.06391859, 0.0034752619, 0.14521928, -0.0010877338, -0.032619733, 0.005375293, -0.018952755, 0.03381545, -0.007652831, 0.034141563, 0.046016496, 0.11219674, 0.030913852, 0.077403754, 0.17192438) * go_1(1.0, -1.0); - result += mat4(0.040326044, 0.17290725, -0.1220239, -0.09594783, -0.025229257, 0.17913155, -0.26623353, -0.033396784, -0.03075146, 0.009143897, -0.0136083895, -0.13886899, 0.075683735, -0.11584183, 0.22182357, 0.19350322) * go_1(1.0, 0.0); - result += mat4(0.15726025, -0.10215694, -0.060057458, 0.26487043, -0.04075552, -0.016496127, 0.0015382086, 0.108562306, 0.026795091, 0.0441233, -0.08754318, -0.0460157, 0.048422016, 0.14107347, 0.07986661, 0.1047697) * go_1(1.0, 1.0); - result += vec4(0.0766796, 0.08115133, -0.05703058, 0.14025708); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!SAVE conv2d_3_tf -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.18038331, 0.21830973, -0.10019419, -0.022745568, -0.14944611, -0.15669158, 0.46361133, -0.07289843, 0.02976627, -0.09000817, 0.113060996, 0.05635241, 0.012762965, -0.022688959, 0.01629751, 0.061114635) * go_0(-1.0, -1.0); - result += mat4(0.024338024, -0.10004009, -0.13709056, -0.0851965, 0.23927099, -0.024349794, -0.16574804, 0.084686354, -0.047885604, 0.09688507, -0.12733915, 0.06980246, 0.11480734, 0.014669346, -0.07505829, 0.04676309) * go_0(-1.0, 0.0); - result += mat4(0.054203495, 0.011881634, -0.036115017, -0.0686298, -0.13682245, -0.15678032, 0.057050128, -0.03368558, 0.13011025, 0.033391044, -0.09841339, -0.027057761, -0.18701133, 0.20852546, -0.13660902, 0.0005817616) * go_0(-1.0, 1.0); - result += mat4(-0.08077834, 0.35952288, -0.07647382, -0.0033230998, 0.13929126, -0.09155619, 0.14128102, 0.16005981, 0.18161216, -0.09485738, 0.0029118075, 0.052682754, 0.03242074, 0.08299826, 0.073796146, -0.06446532) * go_0(0.0, -1.0); - result += mat4(-0.36655015, 0.4606936, 0.19073649, 0.31655258, -0.006838053, -0.579939, 0.089126326, -0.14021218, -0.3437716, 0.16714323, 0.17705944, -0.22418492, -0.3883696, -0.2302651, 0.2581861, 0.21983066) * go_0(0.0, 0.0); - result += mat4(0.0992383, -0.014257871, -0.023896435, 0.19868234, 0.0408007, 0.07995299, 0.16102871, -0.11668251, 0.22458278, -0.05587917, 0.19373615, -0.016202094, -0.25106144, 0.15634494, 0.11624891, -0.2930768) * go_0(0.0, 1.0); - result += mat4(0.024616942, 0.36248252, -0.14779098, -0.019894283, -0.007111256, 0.010641561, -0.09541178, 0.21236233, 0.009501827, 0.08132797, -0.13983901, 0.027207611, 0.038444366, -0.013995817, -0.16242191, 0.03294123) * go_0(1.0, -1.0); - result += mat4(0.0131698875, -0.18124102, -0.13503514, -0.06099072, 0.07422735, -0.20906176, -0.049005672, 0.08739405, -0.031758767, -0.1978915, 0.23094437, 0.54512614, 0.21338555, -0.011205669, -0.23727885, -0.29533875) * go_0(1.0, 0.0); - result += mat4(-0.0010255767, -0.07168225, -0.033568826, 0.22161655, -0.087293416, 0.11350447, 0.13653576, 0.061226424, -0.13074352, 0.058425818, 0.038460605, 0.2749964, -0.012814839, 0.085885845, -0.038151987, -0.17960808) * go_0(1.0, 1.0); - result += mat4(0.19728905, -0.040724937, -0.18270236, 0.046735186, 0.03507326, 0.119867206, -0.12691991, 0.18119748, -0.052895024, 0.11348764, -0.043787055, 0.004703516, 0.006752757, -0.06939761, -0.009801806, -0.075640485) * go_1(-1.0, -1.0); - result += mat4(0.051735226, 0.1732299, -0.10672899, 0.0320877, -0.4913656, 0.2102274, 0.43920282, 0.059108034, 0.08349019, -0.16517872, 0.15436842, -0.1075667, 0.022741623, -0.26693836, 0.3645307, 0.017874828) * go_1(-1.0, 0.0); - result += mat4(0.034464058, 0.014929155, 0.054227423, 0.14167373, -0.0023630706, -0.08904212, 0.11918041, -0.034539603, 0.06048089, -0.06807333, 0.14447778, 0.035260547, 0.09979546, -0.1924939, 0.14596114, -0.12069667) * go_1(-1.0, 1.0); - result += mat4(-0.04427228, -0.23673469, 0.010357103, -0.2907043, -0.06845721, -0.078984015, 0.06867713, -0.058163825, -0.12154615, 0.08430951, 0.1922373, 0.030108064, -0.43081748, -0.38715646, -0.022240646, -0.15403675) * go_1(0.0, -1.0); - result += mat4(0.46885306, -0.33421394, -0.6695223, -0.41841158, 0.30317923, 0.24244753, -0.1047785, -0.18656285, 0.06261881, -0.4405616, 0.24233986, 0.40070608, 0.81440526, 0.11305212, -0.8826317, -0.023478031) * go_1(0.0, 0.0); - result += mat4(-0.07879348, -0.024378026, -0.041883785, -0.17030984, 0.23229122, -0.011237109, 0.12058088, 0.20766267, -0.36519575, 0.09599417, -0.1271098, 0.06990154, 0.21161246, 0.041002538, -0.36046275, 0.007304667) * go_1(0.0, 1.0); - result += mat4(0.10873893, 0.003872542, -0.13476561, -0.036068805, -0.054637462, 0.02304618, 0.04707738, -0.2856381, 0.07124422, 0.010866545, 0.20484549, -0.008342406, -0.43660247, -0.041055538, 0.33536008, -0.060022205) * go_1(1.0, -1.0); - result += mat4(0.1966458, 0.0016302796, -0.25712642, -0.09639119, -0.006955351, 0.10882133, 0.1107341, 0.062697805, -0.1074494, 0.17361663, 0.6429869, -0.39846307, -0.26302996, 0.048710946, 0.40387508, 0.4299715) * go_1(1.0, 0.0); - result += mat4(0.18948616, 0.24086732, -0.064474985, -0.11069709, 0.1279659, -0.13438123, -0.028438117, 0.125883, 0.018153818, -0.21942288, 0.020390838, -0.22797634, -0.10821287, -0.17175092, 0.122016855, 0.20699544) * go_1(1.0, 1.0); - result += vec4(-0.05101961, -0.060740646, -0.024465766, 0.058471628); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!SAVE conv2d_4_tf -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.14533128, 0.07266841, 0.13238011, -0.23328504, 0.031516243, 0.058471266, -0.06394412, 0.090752736, -0.0042359144, 0.12357294, -0.04377495, 0.0011743477, 0.05412243, -0.08146249, 0.04002749, -0.032876283) * go_0(-1.0, -1.0); - result += mat4(-0.036972385, -0.15238069, -0.3453321, -0.36025128, 0.07597202, -0.02368151, -0.3889606, 0.34607083, 0.3133179, -0.21712309, -0.4210954, 0.21450534, 0.15226828, 0.25326282, 0.45327064, -0.3350824) * go_0(-1.0, 0.0); - result += mat4(0.019018406, -0.33060563, -0.092601225, 0.14970545, 0.1441509, -0.19228427, -0.032771986, 0.26331595, 0.052981265, -0.06627376, -0.08634131, 0.038706224, 0.13403937, -4.4842476e-05, 0.049002815, -0.12719193) * go_0(-1.0, 1.0); - result += mat4(0.17527401, -0.0035254909, -0.047959115, -0.4526988, -0.07510284, 0.0013256798, -0.07539148, 0.24220634, -0.08708839, -0.14494033, -0.17085724, -0.099797316, 0.0068515535, -0.08918779, 0.27164719, -0.1702649) * go_0(0.0, -1.0); - result += mat4(0.31848368, 0.48983255, -0.44140294, -0.65174145, -0.004199057, 0.19494705, 0.5196497, -0.027118586, 0.032509074, -0.23900363, -0.14489244, 0.36314297, -0.23168536, -0.20960593, 0.61471456, 0.12401275) * go_0(0.0, 0.0); - result += mat4(-0.24317405, 0.21560913, 0.15564032, 0.11606844, -0.15039803, -0.59578896, 0.14100945, -0.026194477, 0.37237462, -0.49472088, -0.15215331, -0.38820064, -0.25089455, -0.29643852, -0.09513793, 0.019779462) * go_0(0.0, 1.0); - result += mat4(0.12498539, 0.0710632, -0.25012368, -0.2272255, -0.08647026, 0.12277892, 0.011025097, -0.12168395, -0.13489573, 0.016708186, -0.15583871, -0.057124946, 0.1216943, 0.019803725, 0.06952334, -0.032985855) * go_0(1.0, -1.0); - result += mat4(0.28794885, 0.33783793, -0.14469545, -0.081780486, -0.50320613, -0.067601606, -0.06847453, -0.021648854, -0.34295765, 0.15071863, -0.06619896, -0.084465064, 0.31909832, 0.015414661, 0.14930317, -0.11295768) * go_0(1.0, 0.0); - result += mat4(0.24530606, 0.25526014, 0.09971985, -0.07749641, -0.2361951, -0.07997673, 0.03617294, 0.02959561, -0.4498983, -0.014073485, -0.20587012, 0.06396779, 0.1262825, 0.027433183, 0.14469334, 0.011538011) * go_0(1.0, 1.0); - result += mat4(-0.038572453, -0.023108613, -0.039481267, -0.012160024, -0.004521989, -0.028665857, 0.04295255, 0.10580258, 0.05439479, -0.072261885, 0.11030243, 0.08934696, 0.09133867, 0.017547369, 0.097613186, 0.05491059) * go_1(-1.0, -1.0); - result += mat4(-0.09972817, 0.057730395, 0.12665828, 0.32861367, -0.16186063, 0.0745509, 0.2394045, -0.08687853, -0.034404907, -0.05843572, 0.0684561, -0.1355754, 0.19248672, -0.60372186, 0.12583947, 0.4388962) * go_1(-1.0, 0.0); - result += mat4(0.10341107, 0.061113223, 0.08773817, -0.082504354, -0.16612078, 0.2681751, 0.019737698, -0.17122322, -0.135949, 0.3048101, 0.087803006, 0.11373851, 0.013192192, -0.27022064, 0.35529897, -0.15321451) * go_1(-1.0, 1.0); - result += mat4(-0.032835662, 0.11123062, -0.11322452, -0.17300649, 0.04680824, 0.12849288, 0.17269878, -0.048671383, 0.05189037, -0.009078046, 0.22105052, 0.013008137, -0.009738674, 0.15391739, 0.20969556, 0.14189166) * go_1(0.0, -1.0); - result += mat4(-0.47377753, 0.3038031, 0.18604809, 0.1931698, -0.2964668, -0.12287907, -0.7107761, 0.26619422, -0.33923018, 0.19200724, 0.013786281, -0.17496964, 0.079325035, -0.3694445, 0.0054486147, -0.33018264) * go_1(0.0, 0.0); - result += mat4(0.14903802, -0.028043179, 1.5238678e-05, 0.021232028, 0.16025065, 0.14746875, -0.22831628, -0.12177345, 0.038778774, 0.32188168, -0.042017702, 0.27155936, 0.17920609, 0.04099755, 0.28527525, 0.074623376) * go_1(0.0, 1.0); - result += mat4(0.057019282, -0.112741895, 0.030361209, 0.14567861, 0.056265317, -0.01573537, -0.06707608, 0.016657263, 0.09829025, -0.026795063, 0.023042196, 0.09438241, -0.025483066, -0.052787006, 0.19730279, 0.021218104) * go_1(1.0, -1.0); - result += mat4(0.19868211, -0.01531125, 0.108596824, -0.035456363, 0.0033609823, 0.057961613, -0.013726211, 0.101742364, 0.33357215, 0.14468077, 0.29711527, -0.24662566, -0.119014986, -0.1899639, 0.11246697, -0.0035374009) * go_1(1.0, 0.0); - result += mat4(-0.05602109, -0.15539522, 0.010730943, 0.057116497, -0.02037749, 0.084210664, -0.028235348, 0.10574697, 0.056925274, 0.07922333, -0.090088, 0.1615985, -0.0044301567, -0.089945644, 0.024176618, -0.041844133) * go_1(1.0, 1.0); - result += vec4(0.0015292584, -0.043625206, -0.09429898, -0.06280405); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!SAVE conv2d_5_tf -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.06051604, -0.028152643, -0.21418124, 0.13032125, 0.42565975, -0.09571944, -0.34494513, 0.30004, -0.073245734, -0.028659137, 0.0032105136, -0.05009555, -0.048971225, 0.04814533, 0.002843805, -0.046224426) * go_0(-1.0, -1.0); - result += mat4(-0.07495975, 0.018714864, 0.21229684, -0.13614887, 0.79988647, -0.0697328, 0.38232988, 0.24165109, 0.25947478, -0.0009418982, -0.17369923, 0.10007766, 0.024117598, 0.028611807, 0.15090801, -0.06344829) * go_0(-1.0, 0.0); - result += mat4(-0.07982219, 0.0900347, 0.007609254, -0.0034791247, 0.013611781, -0.13560618, 0.09685799, 0.06276075, 0.134693, -0.14370437, -0.25175703, -0.0016138123, -0.0075672898, -0.13325731, -0.061100446, 0.0059743375) * go_0(-1.0, 1.0); - result += mat4(-0.039018434, -0.19668463, -0.43018532, 0.31886247, 0.4965479, 0.114569925, 0.19110382, 0.27343535, 0.0707728, -0.11877004, -0.25827697, 0.37012872, 0.1474777, 0.07056952, -0.14965728, 0.061595406) * go_0(0.0, -1.0); - result += mat4(0.506543, -0.16268773, 0.455319, -0.0702646, 0.70102173, -0.14041683, 0.70184857, 0.4817842, -0.3389246, -0.14463086, 0.13763213, -1.1259074, 0.47722015, 0.38352612, -0.04293366, -0.5604627) * go_0(0.0, 0.0); - result += mat4(0.17606944, 0.15897374, 0.13499324, 0.29241478, -0.032824475, 0.11128662, -0.22204424, -0.051803727, 0.013195331, -0.42040786, -0.3950585, 0.70745844, 0.38646924, -0.19080774, -0.15171832, -0.10742828) * go_0(0.0, 1.0); - result += mat4(-0.039278325, 0.18421806, -0.044948544, 0.07902063, -0.2149251, 0.09913459, -0.09743655, -0.26899317, -0.002695496, -0.07554527, -0.22373366, 0.17830558, -0.047994815, -0.06789183, -0.06755918, -0.104452066) * go_0(1.0, -1.0); - result += mat4(-0.0493473, -0.30411786, -0.056439694, -0.06582185, -0.21309847, 0.100670904, -0.22966193, -0.045954112, 0.12728062, -0.25081897, -0.094699375, -0.4036555, 0.060854495, -0.64373237, -0.21522263, -0.6683476) * go_0(1.0, 0.0); - result += mat4(0.063481025, 0.11744312, -0.043330096, 0.33817932, -0.06679828, -0.23207302, -0.10188898, -0.10590511, 0.058780864, 0.047292337, -0.11834696, 0.10076128, -0.036641665, 0.30200714, -0.0002892557, -0.10303763) * go_0(1.0, 1.0); - result += mat4(-0.10842604, 0.042055763, 0.29702973, -0.07409644, -0.030164458, -0.012098744, -0.06396587, -0.08787527, 0.051854923, 0.12997511, 0.11468497, 0.15022379, 0.007814715, 0.014517445, 0.025484756, 0.01078619) * go_1(-1.0, -1.0); - result += mat4(-0.29229385, 0.040265664, -0.15376821, 0.075579196, -0.05593569, -0.045405343, 0.12099204, 0.1571252, 0.17841713, 0.04673325, 0.14550509, 0.08603346, -0.049786013, 0.06121843, -0.16273825, -0.13857752) * go_1(-1.0, 0.0); - result += mat4(0.06903744, 0.2628764, -0.13582836, -0.35678583, -0.13821034, -0.019381443, -0.19570538, -0.09298511, 0.08965436, 0.09745909, 0.20055099, 0.024967568, 0.08144204, 0.004633625, 0.12809834, -0.009431525) * go_1(-1.0, 1.0); - result += mat4(0.09784006, 0.010729353, 0.046643205, -0.110926524, -0.21556224, 0.00016300633, 0.122175336, 0.15004392, 0.013864355, 0.24767809, 0.13865592, 0.0155424485, -0.1450483, -0.15688781, -0.06195043, -0.13745981) * go_1(0.0, -1.0); - result += mat4(0.018991318, 0.55401963, 0.11709872, -0.028442185, -0.46035343, -0.10215539, -0.60193926, 0.47882316, -0.23346989, 0.037200127, 0.22814943, -0.08231696, -0.36430013, -0.011152757, 0.48752213, 0.29796222) * go_1(0.0, 0.0); - result += mat4(-0.07258066, -0.023222538, 0.23230423, -0.30317304, 0.03942911, -0.06899803, 0.23778579, 0.07418621, -0.17443737, 0.33387753, 0.007354842, -0.123447575, -0.1745315, 0.11071779, -0.11949625, -0.22832453) * go_1(0.0, 1.0); - result += mat4(-0.024909232, -0.0308135, 0.12170621, -0.13298757, 0.045828197, -0.1532345, -0.06633672, 0.23591088, 0.04964077, 0.14091493, 0.038343724, -0.029780807, 0.05762822, -0.048930667, -0.02434709, 0.07109019) * go_1(1.0, -1.0); - result += mat4(-0.16039175, 0.3004474, -0.17278233, 0.13677922, 0.18838613, 0.15054552, 0.32901475, -0.1288333, 0.26378244, -0.05119892, 0.34533516, 0.25180495, 0.19452183, 0.0843233, -0.08029368, 0.39877903) * go_1(1.0, 0.0); - result += mat4(-0.07097129, -0.26492423, -0.055032317, -0.093516104, -0.11795062, 0.04086253, -0.07989471, 0.059686553, 0.09378249, 0.45851848, 0.2510942, 0.19599153, 0.019765077, -0.02920918, -0.04125142, -0.13859107) * go_1(1.0, 1.0); - result += vec4(0.04400571, -0.04015565, 0.0140529545, 0.05474095); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!SAVE conv2d_6_tf -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.014236042, -0.0031431736, -0.1551387, 0.12515116, -0.28528872, 0.36161992, 0.15750743, -0.17111474, 0.13792591, -0.0657419, -0.17471549, 0.14650472, 0.034169197, -0.019157575, 0.23520657, -0.20358163) * go_0(-1.0, -1.0); - result += mat4(0.02015035, 0.12993371, 0.11199667, -0.09854378, 0.5001741, 0.03462961, 0.24919736, 0.08505297, -0.20902094, -0.24141377, -0.15360375, 0.049974803, -0.037157424, -0.048510186, 0.20106035, -0.118480384) * go_0(-1.0, 0.0); - result += mat4(0.086798504, -0.009607818, 0.034812123, -0.005187592, 0.0351509, 0.021755, -0.04996161, -0.041231696, 0.0020545553, 0.015730752, -0.07507172, 0.018597523, -0.02393343, 0.07624775, 0.03892451, -0.0025574185) * go_0(-1.0, 1.0); - result += mat4(0.035725456, 0.06809103, 0.51926994, -0.39983147, -0.16402833, -0.1243394, -0.25922915, 0.28285915, 0.15959994, -0.2351732, 0.2650535, -0.30193794, -0.11468332, 0.050777763, -0.51894253, 0.4408367) * go_0(0.0, -1.0); - result += mat4(-0.27042082, 0.22243942, 0.14902467, 0.38428563, 0.46612173, 0.5169912, -0.22330502, -0.11300288, -0.36141354, 0.0668681, 0.2984152, 0.1275798, -0.24121419, 0.2952039, -0.45109174, -0.3822957) * go_0(0.0, 0.0); - result += mat4(0.26543504, -0.05742226, -0.052103903, -0.013124308, -0.14358385, -0.04024543, 0.07665455, -0.012301872, -0.18752757, -0.03913891, 0.038205814, -0.006583095, -0.25550908, -0.25725332, -0.12454206, -0.0058936924) * go_0(0.0, 1.0); - result += mat4(-0.0018946569, 0.019746022, -0.13080788, 0.11450627, -0.013743845, -0.027179785, -0.14425103, 0.07109661, 0.023703793, 0.086905524, 0.03151253, 0.0132474145, 0.041018624, 0.04548913, 0.2718715, -0.20008296) * go_0(1.0, -1.0); - result += mat4(-0.076830454, 0.11652955, 0.5068201, -0.3082819, 0.058615055, -0.006765798, -0.057522714, 0.049981344, -0.006897243, -0.21763432, 0.16896053, -0.21176189, -0.061227098, 0.03566485, 0.08901554, -0.050980624) * go_0(1.0, 0.0); - result += mat4(0.02327798, 0.07662976, 0.034811985, -0.03238033, -0.0021881019, -0.030997375, -0.069672935, 0.04040273, -0.1217442, 0.104173124, 0.09862539, 0.020557549, -0.022286594, 0.10287763, -0.021694934, 0.07542515) * go_0(1.0, 1.0); - result += mat4(0.124069154, -0.08579466, -0.07816314, 0.11332851, -0.034682628, -0.11038275, 0.04750615, -0.096100725, 0.039588403, -0.15149672, -0.05529172, 0.034304325, -0.022520235, -0.05023852, -0.2674731, 0.21886522) * go_1(-1.0, -1.0); - result += mat4(-0.1948599, -0.14946899, -0.39548838, 0.18042913, -0.007919619, 0.19826505, 0.23789087, 0.009140256, 0.11857748, 0.18215668, 0.13606293, -0.09209675, -0.080678545, -0.020431137, -0.07728839, -0.051353537) * go_1(-1.0, 0.0); - result += mat4(-0.07616472, -0.0032800382, -0.045657665, -0.039144326, -0.37786487, -0.08877774, 0.053579114, -0.070886396, 0.011311804, 0.107276045, 0.013236154, 0.009832061, 0.08292063, 0.12258811, 0.0005569043, -0.009806432) * go_1(-1.0, 1.0); - result += mat4(-0.28062925, 0.15946878, -0.1021801, -0.06471589, -0.26999477, 0.21230288, -0.14243907, 0.2555922, -0.09608517, 0.26339412, 0.20891234, -0.23538485, 0.33958244, -0.12569186, 0.43289876, -0.33462036) * go_1(0.0, -1.0); - result += mat4(0.16265294, 0.2625464, -0.34452894, 0.2233622, 0.13850005, -0.42999864, -0.5385177, -0.11035979, 0.51662, -0.78238726, -0.09422375, 0.83759475, 0.44468537, 0.14301361, 0.108906105, 1.1596143) * go_1(0.0, 0.0); - result += mat4(-0.73757625, -0.12369605, 0.23523071, 0.006587637, -0.15445381, 0.22757277, 0.052819528, 0.10183905, -0.07912228, -0.16998893, -0.13360223, 0.014348178, -0.17778571, -0.41047302, 0.10241381, -0.08526306) * go_1(0.0, 1.0); - result += mat4(0.14712952, 0.048995696, 0.05299946, -0.06817572, 0.1498064, -0.079825334, 0.40354064, -0.31789717, -0.1998377, 0.00955295, -0.32318407, 0.30898204, -0.039571725, -0.026203401, -0.16292085, 0.08574385) * go_1(1.0, -1.0); - result += mat4(-0.6353329, -0.56000775, -0.17279743, 0.18198174, -0.19555812, 0.056538377, 0.34365895, -0.07799055, 0.19011354, -0.13952748, 0.029196098, -0.19596763, -0.069196045, -0.17402656, 0.07948411, -0.016226962) * go_1(1.0, 0.0); - result += mat4(0.25592864, 0.083498634, -0.28515807, 0.10789751, 0.0043962947, 0.07085363, 0.048724182, -0.025131436, -0.0049440865, -0.033094388, -0.032935806, 0.04266025, 0.20026933, 0.0927841, -0.006839351, -0.013012285) * go_1(1.0, 1.0); - result += vec4(0.02021373, 0.0014037411, 0.0012718709, 0.017278494); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Conv-4x1x1x56 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_1_tf -//!BIND conv2d_2_tf -//!BIND conv2d_3_tf -//!BIND conv2d_4_tf -//!BIND conv2d_5_tf -//!BIND conv2d_6_tf -//!SAVE conv2d_last_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define g_0 (max((conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_1 (max(-(conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_2 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_4 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_5 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_6 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_8 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_9 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_10 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_12 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_13 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.0067711817, 0.08160003, 0.0247279, 0.03084815, -0.026977416, -0.02120602, -0.025078611, -0.029852165, -0.011627478, -0.012742972, 0.022736797, -0.0028815821, -0.007515677, 0.0172887, -0.023259213, 0.009608947) * g_0; - result += mat4(-0.028660107, -0.014015208, -0.027838672, -0.013171922, 0.0029435428, 0.027047642, -0.017478354, 0.022834882, -0.037572853, -0.0034044068, -0.0149029335, -0.013362301, 0.009827443, -0.015742151, -0.0074795415, -0.0022266617) * g_1; - result += mat4(-0.07579662, -0.039754186, -0.066026606, -0.046816852, 0.1099032, 0.043956704, 0.073109835, 0.04680284, -0.06896613, -0.008838632, -0.044584926, -0.01319039, -0.0021152915, -0.04503326, 0.027061926, -0.028334105) * g_2; - result += mat4(0.15458213, 0.059769996, 0.09327123, -0.028782733, 0.023459995, -0.15390377, -0.13432898, -0.1127775, 0.072764635, -0.0020463336, 0.034736466, -0.0012086042, -0.05847183, -0.029952323, 0.052969377, 0.09590908) * g_3; - result += mat4(-0.07476772, -0.016574614, 0.04131183, 0.017335678, 0.009654406, 0.072183535, -0.002266456, 0.086873695, 9.310129e-05, 0.0056416965, -0.004188391, 0.023132093, -0.05183336, -0.025825873, -0.03684392, -0.0075729224) * g_4; - result += mat4(0.00878842, 0.03869637, -0.035759524, 0.003345386, -0.064184256, -0.034568302, -0.06672922, -0.0686381, -0.06794392, -0.10685906, 0.04679947, -0.012535639, 0.006932529, -0.007783515, 0.109123886, 0.13804391) * g_5; - result += mat4(-0.03160699, 0.050473, -0.09030729, 0.0649397, 0.11466501, 0.17912874, -0.0081851315, 0.052244574, 0.051632743, 0.061941486, 0.06546816, 0.12174249, -0.05104755, -0.018193979, -0.032196652, -0.035292786) * g_6; - result += mat4(0.013612735, -0.0024100312, -0.068611205, -0.07369285, -0.019647537, -0.066944756, -0.010012875, -0.06785739, -0.062246565, -0.087313406, -0.044278186, -0.09368995, 0.052555013, 0.13604961, 0.05645059, 0.08763303) * g_7; - result += mat4(0.04218486, -0.05028401, 0.059086576, -0.03545452, 0.027737848, 0.0043074046, 0.0011001764, -0.073026665, -0.04094988, 0.044061556, -0.009812515, 0.06841999, -0.06612581, 0.037223976, -0.07759491, -0.04356598) * g_8; - result += mat4(-0.027558247, 0.014248466, -0.019813016, -0.058107473, -0.016717663, -0.020424338, 0.0053625097, -0.009917319, 0.013678771, 0.0113340765, 0.0061787106, -0.036083996, -0.020179711, -0.011310535, 0.054827053, -0.0008278952) * g_9; - result += mat4(0.028690035, -0.012079616, 0.11931408, -0.048533775, 0.069336995, 0.0049852817, 0.013774468, 0.035233382, -0.07384821, 0.0003354423, -0.0059171803, -0.04503906, 0.08727279, 0.005138857, -0.17724465, 0.055782065) * g_10; - result += mat4(-0.20744391, 0.24348328, -0.3145766, 0.17026486, -0.022870807, -0.01648648, -0.05912279, -0.012555373, -0.066004686, 0.03182394, 0.16285324, -0.1221846, -0.31816196, 0.007928748, 0.43180224, -0.015949022) * g_11; - result += mat4(0.16363169, 0.14781676, -0.2377973, -0.1571377, -0.09038187, 0.0046504294, 0.033955004, -0.051421452, 0.046735536, 0.006827522, -0.121338, 0.12671822, 0.15833299, -0.1858712, -0.1942371, 0.17336044) * g_12; - result += mat4(-0.018145572, -0.015550516, 0.044410378, 0.046016492, 0.084021375, 0.05327457, -0.008270992, -0.045435544, 0.07185879, -0.131923, 0.26721445, -0.26745328, -0.07093472, 0.042701527, 0.13793674, -0.095621444) * g_13; - result += vec4(0.016836504, 0.010161949, 0.021351453, 0.01278978); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(M)-Depth-to-Space -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_last_tf -//!SAVE MAIN -//!WIDTH conv2d_last_tf.w 2 * -//!HEIGHT conv2d_last_tf.h 2 * -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -vec4 hook() { - vec2 f0 = fract(conv2d_last_tf_pos * conv2d_last_tf_size); - ivec2 i0 = ivec2(f0 * vec2(2.0)); - float c0 = conv2d_last_tf_tex((vec2(0.5) - f0) * conv2d_last_tf_pt + conv2d_last_tf_pos)[i0.y * 2 + i0.x]; - float c1 = c0; - float c2 = c1; - float c3 = c2; - return vec4(c0, c1, c2, c3) + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/Anime4K_Upscale_CNN_x2_S.glsl b/assets/shaders/Anime4K_Upscale_CNN_x2_S.glsl deleted file mode 100644 index e6ad7c218..000000000 --- a/assets/shaders/Anime4K_Upscale_CNN_x2_S.glsl +++ /dev/null @@ -1,158 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.0057322932, 0.12928207, -0.056848746, 0.18680117, -0.0306273, 0.25602463, 0.053723164, 0.20419341, 0.0018709862, 0.022848232, -0.04105527, 0.10169034, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(0.009471417, -0.12957802, 0.096014425, 0.21836184, 0.00021601951, -0.22997683, 0.23666254, 0.41192335, 0.021762101, 0.0047863554, 0.008233427, 0.108514786, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(-0.01156376, -0.18988979, 0.04614705, -0.044767227, 0.01050636, -0.26426336, 0.23741047, 0.0027636609, -0.027718676, -0.14202335, -0.016650287, -0.06637125, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(0.057809234, -0.11033858, 0.056533534, -0.06292466, 0.13880666, -0.18710336, 0.2441031, -0.25326246, 0.0032683122, -0.026437074, 0.0023248852, 7.640766e-05, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.49110603, 0.4429004, -0.44015464, -0.41174838, -0.87738293, 0.7808468, -1.0929365, -0.59699076, -0.18409836, 0.185138, -0.11773224, -0.17097276, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(0.10580959, -0.055947904, -0.03431237, -0.080236495, 0.14862584, -0.15393938, -0.18872876, -0.3170681, 0.03559387, -0.003990826, 0.021298569, 0.012844483, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(-0.040715586, -0.25781113, 0.08896714, -0.1225879, -0.15790503, -0.54010904, 0.29588607, 0.10401059, 0.003413123, -0.108357325, 0.0112870345, -0.11888622, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.0049315444, 0.02376202, -0.08224771, 0.121118225, -0.041512914, -0.027994309, -0.585988, -0.069672115, -0.017247835, 0.0056576864, 0.04319012, 0.055003505, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(0.37521392, 0.15916082, 0.059708964, 0.19046007, 0.8120325, 0.38343868, 0.3436578, 0.5287958, 0.16570656, 0.06957687, 0.014022592, 0.074799836, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(-0.01050964, -0.00939481, 0.17684458, 0.027366742); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_tf -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.011029496, 0.05866063, -0.09460646, -0.017664742, -0.022488879, 0.18384217, -0.00397663, -0.064733066, 0.08466802, 0.10667488, 8.0212536e-05, 0.0908869, 0.13580276, 0.00097438256, 0.12176522, -0.08218466) * go_0(-1.0, -1.0); - result += mat4(0.16062798, -0.10190268, 0.03280682, 0.05621916, -0.009684231, -0.08464307, 0.17058301, -0.096469186, 0.1967505, -0.1450099, 0.093607284, -0.28240147, -0.21377413, 0.10079291, -0.1741522, 0.17330575) * go_0(-1.0, 0.0); - result += mat4(-0.060160473, 0.06316997, 0.0046929033, -0.049405966, 0.13851729, 0.06830702, -0.0586872, -0.040827133, 0.007052838, -0.03576886, -0.111261636, 0.039155316, -0.07380389, -0.09369825, 0.04471156, 0.09678487) * go_0(-1.0, 1.0); - result += mat4(-0.36683616, -0.035950605, -0.24414362, -0.009159744, 0.19335322, -0.099253505, 0.075083904, -0.00076695543, 0.65291303, -0.25599423, 0.19827642, 0.065899536, -0.07423247, -0.068967685, 0.0050554527, -0.060272824) * go_0(0.0, -1.0); - result += mat4(-0.020688485, -0.83178276, 0.11104878, 0.26454413, 0.13655476, 0.37675047, -0.22219229, -0.01751935, 0.44552696, 0.92510307, 0.16063261, -0.62011045, 0.19366647, -0.06996067, -0.2504841, 0.00803723) * go_0(0.0, 0.0); - result += mat4(0.0051537007, -0.057168536, -0.16110587, 0.25232598, -0.04447099, 0.11997351, 0.14808103, -0.34443566, -0.26212573, -0.21970181, 0.2724405, 0.21050811, -0.07949061, -0.064808235, -0.21208277, -0.0042361654) * go_0(0.0, 1.0); - result += mat4(-0.0888952, -0.20169449, 0.19144905, -0.016882861, -0.013283103, 0.07552998, -0.24686803, 0.012453213, -0.065454446, -0.016123284, -0.47316182, 0.070926026, 0.09219782, 0.13118166, 0.074736096, 0.0077910526) * go_0(1.0, -1.0); - result += mat4(0.5832154, 0.1138069, -0.039765622, 0.3182784, -0.25497997, 0.0013993139, 0.39285088, -0.48511526, -0.39891505, -0.19094779, -0.082146175, -0.20826934, 0.020590555, -0.0012490178, -0.4398621, 0.14377014) * go_0(1.0, 0.0); - result += mat4(0.21917395, 3.4314657e-05, 0.25734863, -0.3433305, 0.015720673, 0.2676127, -0.06807297, 0.15040149, -0.23638041, -0.0050233034, -0.13666134, 0.4542111, -0.033572577, -0.08450588, -0.23341487, 0.053490847) * go_0(1.0, 1.0); - result += mat4(-0.17482175, 0.057647135, 0.33135444, 0.0850751, -0.1718849, -0.0854123, 0.036795795, -0.13874969, -0.10903869, -0.19007301, -0.06064334, -0.03786032, -0.036696054, 0.07844446, 0.012523185, -0.01562906) * go_1(-1.0, -1.0); - result += mat4(-0.04411997, -0.10331819, 0.10050193, 0.12406485, 0.07431592, 0.30109692, -0.17511666, -0.13263564, -0.10192587, 0.07821255, -0.22415096, 0.25552443, 0.17881326, -0.13914281, 0.109979235, -0.0016463579) * go_1(-1.0, 0.0); - result += mat4(-0.01911644, -0.15412527, 0.028903123, 0.20831817, 0.00375175, 0.08110953, 0.074919395, -0.17581624, -0.015677985, 0.06504228, 0.08817818, -0.12518327, -0.09537373, 0.028905088, -0.051288474, 0.054334078) * go_1(-1.0, 1.0); - result += mat4(0.2852779, -0.28924024, 0.36805123, 0.21079305, -0.28336474, 0.1679663, -0.08641141, -0.10699407, -0.16090055, 0.1287612, -0.15910125, 0.05734755, 0.15883245, 0.0053026294, 0.080674745, 0.0505137) * go_1(0.0, -1.0); - result += mat4(0.17639062, 0.3790122, -0.19588692, -0.020314282, 0.26197383, 0.09014768, 0.19696823, -0.41025418, -0.08308115, -0.33279485, -0.22528782, 0.06172439, -0.1365661, -0.13094363, -0.005086559, 0.089024484) * go_1(0.0, 0.0); - result += mat4(0.05262993, 0.0006296959, 0.1657725, -0.32591924, 0.12126701, 0.061543245, -0.10526848, 0.041583937, 0.094976954, 0.09416157, -0.22019257, -0.058390073, -0.2073888, 0.057273377, 0.19558284, 0.004208022) * go_1(0.0, 1.0); - result += mat4(0.30005738, 0.18478931, -0.23342943, 0.22455733, -0.016488122, 0.099634305, 0.31620836, -0.15731157, 0.09595808, 0.0013774688, 0.48273298, -0.07027936, -0.18764344, -0.26194447, -0.11794225, -0.012173601) * go_1(1.0, -1.0); - result += mat4(0.117986746, -0.13846518, -0.019614812, -0.3011192, 0.5501164, 0.3408611, -0.40090847, 0.15706886, 0.13050972, 0.051776595, 0.20792943, 0.23389706, -0.22965533, -0.053367328, 0.3911586, -0.032988597) * go_1(1.0, 0.0); - result += mat4(0.054753624, -0.008485731, -0.2451672, 0.17528129, 0.13657846, 0.010480436, 0.07651423, -0.43316832, 0.12736236, 0.13804524, 0.12529011, -0.30946237, -0.14423579, 0.08403089, 0.24335162, 0.057288036) * go_1(1.0, 1.0); - result += vec4(0.012077211, 0.013045883, 0.0380778, -0.02908858); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.036115196, -0.06971895, -0.07508942, 0.016036168, 0.12120111, 0.24536026, 0.044755507, -0.20663576, 0.029635755, -0.15427187, 0.027148994, -0.20795093, 0.10170582, 0.077919215, 0.66063017, -0.4632968) * go_0(-1.0, -1.0); - result += mat4(-0.0052889925, -0.019060908, -0.08660142, -0.022095207, -0.08097976, -0.015142803, -0.18552722, -0.078493506, -0.16293915, -0.20099808, -0.08370822, 0.3701389, 0.09094984, 0.2487225, 0.24338846, 0.044003833) * go_0(-1.0, 0.0); - result += mat4(-0.061406493, -0.017232792, -0.10917424, 0.11203319, 0.040699825, -0.019294346, 0.084953666, -0.018133596, 0.07209552, 0.016069936, 0.17805555, -0.089537814, 0.15809004, 0.1027023, 0.15044671, -0.15530108) * go_0(-1.0, 1.0); - result += mat4(0.0948676, -0.040305693, -0.005591629, -0.048048403, -0.07547777, 0.056606572, 0.021390207, 0.32600567, -0.20805131, -0.099587254, 0.029613169, 0.0092129605, -0.29429698, -0.09898621, 0.44470885, -0.89487344) * go_0(0.0, -1.0); - result += mat4(-0.122259885, 0.11445877, 0.06666907, 0.1869428, -0.1553992, -0.1658741, 0.2988138, -0.57746625, -0.34609964, 0.11169158, -0.41877756, 0.38075635, 0.21293911, 0.09640372, -0.12754214, -0.08026104) * go_0(0.0, 0.0); - result += mat4(0.15128808, 0.050087795, 0.09219755, -0.18080945, 0.0044571217, -0.046019405, -0.1289922, 0.20305426, 0.19601224, 0.04667917, 0.17465587, 0.027672665, 0.18441725, 0.06845396, 0.11288585, -0.23283863) * go_0(0.0, 1.0); - result += mat4(-0.072962, -0.06639447, 0.049347494, -0.1386401, 0.10396071, 0.08187777, -0.04280746, 0.07390891, 0.06628344, 0.037797406, 0.021885803, -0.013147403, 0.22376558, 0.36243078, 0.12874891, -0.0023783944) * go_0(1.0, -1.0); - result += mat4(0.074945286, 0.16045591, -0.11798349, 0.12910712, 0.054760084, -0.095626175, -0.047832094, 0.03493912, 0.11817307, 0.037452437, -0.14301221, -0.027356789, -0.052390423, 0.11373512, 0.07686775, 0.010008694) * go_0(1.0, 0.0); - result += mat4(-0.023999173, -0.091900624, 0.02388157, 0.03173873, 0.0065633506, -0.033716757, -0.1198324, 0.12057766, 0.026465805, -0.07517131, -0.07760598, 0.060463097, 0.07345541, 0.046037503, 0.21101558, -0.26785463) * go_0(1.0, 1.0); - result += mat4(0.15544604, -0.03902825, 0.04630384, -0.25173616, -0.0691359, 0.07476507, 0.009071253, 0.089964196, -0.26539803, -0.3958477, -0.22155671, 0.20735882, -0.105860494, -0.003996804, -0.044815883, 0.39544627) * go_1(-1.0, -1.0); - result += mat4(0.6169709, 0.23717614, -0.37884676, -0.7484867, 0.020169826, -0.30718836, 1.0965588, -0.20711036, -0.39149985, -0.06843563, -0.06522909, 0.103805855, 0.03265825, -0.15137726, 0.12837899, -0.01294922) * go_1(-1.0, 0.0); - result += mat4(-0.23638196, -0.4560866, -0.11948684, -0.1464144, 0.10690008, 0.007835961, 0.11864342, -0.13101323, -0.16509797, 0.075027354, 0.08122998, 0.13451207, 0.0011890623, 0.052157886, 0.08372405, -0.07085038) * go_1(-1.0, 1.0); - result += mat4(-0.21997726, -0.16488647, -0.0291317, 0.17997476, 0.1493211, 0.027494298, 0.0034613227, -0.3207727, 0.18699001, 0.14728633, -0.042895135, -0.07612043, 0.125076, -0.14714554, -0.03480009, -0.22753975) * go_1(0.0, -1.0); - result += mat4(-0.5342686, -0.7426105, -0.38294584, 0.42549992, 0.46053204, 0.7867879, 0.106234804, -0.041163098, 0.5198579, -0.5219404, 0.14809476, -0.41802374, 0.06810794, -0.15122683, -0.047409, 0.13178343) * go_1(0.0, 0.0); - result += mat4(-0.50428164, 0.18220626, 0.35510704, -0.081787474, 0.03155813, 0.019284263, 0.0032388573, -0.20513348, -0.05385551, 0.17803182, -0.26206362, 0.2870375, 0.008557827, 0.08401449, -0.027598893, -0.010791235) * go_1(0.0, 1.0); - result += mat4(0.16657415, 0.067647465, 0.093076974, -0.14438486, -0.10017002, 0.0022367141, 0.03250936, -0.052794546, -0.009178676, -0.019673595, -0.0016697067, -0.15424626, -0.112123474, -0.11079971, 0.011987111, -0.11747758) * go_1(1.0, -1.0); - result += mat4(-0.023021797, -0.058703423, -0.037978355, -0.062433913, -0.13130441, 0.048656322, 0.056839373, 0.109036915, -0.07823158, 0.14785293, 0.058555078, -0.11679035, -0.14002073, 0.07395252, 0.098268874, -0.06710464) * go_1(1.0, 0.0); - result += mat4(0.14906375, 0.030001195, -0.10338215, 0.0662968, -0.161953, -0.13682815, 0.09563142, 0.009514228, -0.009491218, 0.06737101, -0.1393389, 0.15231515, -0.073147796, 0.00767062, 0.028675212, 0.014213088) * go_1(1.0, 1.0); - result += vec4(0.018736731, -0.0026039074, 0.050130025, -0.055364225); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Conv-4x3x3x8 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!SAVE conv2d_last_tf -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.019100675, -0.014241565, 0.004667036, -0.03865062, 0.106731094, 0.026099661, 0.014594411, -0.011881356, 0.0040967264, -0.004626336, 0.006469508, 0.010875305, -0.033909045, -0.085905954, 0.07861378, 0.019452631) * go_0(-1.0, -1.0); - result += mat4(0.20777655, -0.060354974, 0.0023840065, -0.064121604, -0.17397617, 0.019293457, -0.09707183, 0.080641985, 0.01025124, -0.017382381, 0.008661793, -0.010995665, 0.21943407, -0.115574986, 0.14471593, -0.068836235) * go_0(-1.0, 0.0); - result += mat4(0.057942886, -0.06311754, 0.2253396, -0.04159292, -0.020731755, 0.007877151, 0.041525815, 0.025278691, 0.03041967, -0.025137542, 0.024364179, -0.024543528, 0.029438615, -0.015506873, 0.081686, -0.07812221) * go_0(-1.0, 1.0); - result += mat4(0.054237515, 0.0676094, -0.0047708177, 0.0043467237, -0.10032304, -0.020498628, 0.04240586, 0.07272254, 0.0784221, 0.017945962, -0.022310399, -0.013134622, 0.015638694, -0.10001543, 0.1043031, 0.05898838) * go_0(0.0, -1.0); - result += mat4(-0.021652509, 0.35796642, 0.059497777, 0.23948468, 0.15454951, -0.10017235, -0.19072174, -0.44812536, -0.03974552, 0.04529369, 0.22207436, 0.026222564, -0.09705454, 0.5623026, -0.3354105, -0.017278556) * go_0(0.0, 0.0); - result += mat4(-0.053682446, -0.03411237, -0.09399936, 0.15128824, -0.07463, -0.042020727, 0.0031783928, 0.13481957, -0.07731454, 0.044114403, -0.23085599, 0.060444202, -0.15015422, 0.0018040676, -0.18684982, 0.2812511) * go_0(0.0, 1.0); - result += mat4(0.0029329916, 0.001596018, 0.0007512241, 0.016544111, -0.04876942, -0.05272409, 0.037884697, 0.049948208, 0.015518177, 0.11368592, -0.03815777, -0.013149978, -0.027638039, 0.107719295, -0.04115787, 0.02745414) * go_0(1.0, -1.0); - result += mat4(0.016691081, 0.010204119, 0.04078854, 0.01613337, 0.03325829, 0.0114824055, -0.017286912, -0.07284126, -0.110984206, -0.21041764, 0.0089543555, 0.18986733, 0.01537506, -0.2059135, 0.029074017, 0.013117443) * go_0(1.0, 0.0); - result += mat4(0.013965926, 0.029871881, 0.0034499036, -0.011343668, 0.022120327, -0.0068748263, 0.009324342, -0.039081004, 0.08032371, 0.050809264, 0.035050742, -0.2032847, 0.06305391, -0.021958945, 0.038569167, -0.22465245) * go_0(1.0, 1.0); - result += mat4(0.046307724, -0.012419472, 0.007673863, -0.042344846, 0.011042414, 0.016994251, -0.018166406, -0.016955731, -0.13240299, 0.01768431, -0.027607648, 0.0699927, -0.02840628, 0.004414203, 0.0049618417, 0.011084679) * go_1(-1.0, -1.0); - result += mat4(-0.119954154, -0.007455482, -0.031108133, -0.009946449, 0.0077065965, 0.01660345, 0.032943666, 0.016376585, 0.10273124, 0.1556573, -0.24643841, 0.107307844, -0.068235755, 0.0561896, -0.0104672015, 0.042693343) * go_1(-1.0, 0.0); - result += mat4(-0.01634601, 0.04195375, -0.10401894, 0.047641944, -0.034602515, -0.0034419263, -0.010457858, 0.015194475, -0.03962551, -0.030031368, 0.16036317, 0.019283568, -0.05877721, 0.016504882, -0.15523468, 0.018161612) * go_1(-1.0, 1.0); - result += mat4(-0.08083991, 0.0024665035, -0.049373373, 0.030371357, 0.0113322195, -0.014676956, 0.011646689, -0.01142667, 0.124930486, 0.06625774, -0.045840867, -0.009693036, -0.012649251, -0.07388084, 0.008790075, 0.0013844534) * go_1(0.0, -1.0); - result += mat4(-0.33941835, -0.2763476, -0.118311435, -0.063535266, 0.20936015, 0.13731301, 0.13443594, 0.07464433, 0.059650812, -0.36973104, 0.16444235, -0.37082872, 0.06432777, -0.18283032, -0.044489607, -0.13895285) * go_1(0.0, 0.0); - result += mat4(0.13533665, 0.08268915, -0.03675727, -0.14348659, 0.0186255, -0.05051692, 0.056702953, 0.0061717895, 0.047663026, -0.088188455, 0.23254345, -0.014015464, 0.08400204, -0.0073777726, 0.2202068, -0.12366078) * go_1(0.0, 1.0); - result += mat4(0.04361004, 0.046543695, 0.0064863074, -0.03358146, -0.022602187, 0.018138997, -0.011071864, 0.010244091, -0.019814799, -0.17250171, 0.040823266, -0.040131986, 0.010125854, 0.020660749, 0.0020435036, -0.010819304) * go_1(1.0, -1.0); - result += mat4(-0.004810193, -0.11286074, 0.051985834, 0.04788631, -0.023950428, 0.036145125, -0.038203828, 0.052401308, 0.022986965, 0.26420745, -0.06076917, -0.09252999, 0.03164547, 0.15652153, -0.037934, -0.0035418556) * go_1(1.0, 0.0); - result += mat4(0.03358366, -0.005219482, 0.007060882, -0.06569114, -0.02941682, 0.00966056, -0.0153679885, 0.019905418, -0.107232265, -0.03405676, -0.044340115, 0.26892832, -0.04723829, -0.02589829, 0.004563232, 0.19318114) * go_1(1.0, 1.0); - result += vec4(-0.00346731, -0.0046263863, -0.004627155, -0.0057769152); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(S)-Depth-to-Space -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_last_tf -//!SAVE MAIN -//!WIDTH conv2d_last_tf.w 2 * -//!HEIGHT conv2d_last_tf.h 2 * -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -vec4 hook() { - vec2 f0 = fract(conv2d_last_tf_pos * conv2d_last_tf_size); - ivec2 i0 = ivec2(f0 * vec2(2.0)); - float c0 = conv2d_last_tf_tex((vec2(0.5) - f0) * conv2d_last_tf_pt + conv2d_last_tf_pos)[i0.y * 2 + i0.x]; - float c1 = c0; - float c2 = c1; - float c3 = c2; - return vec4(c0, c1, c2, c3) + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/Anime4K_Upscale_CNN_x2_VL.glsl b/assets/shaders/Anime4K_Upscale_CNN_x2_VL.glsl deleted file mode 100644 index c562e6e02..000000000 --- a/assets/shaders/Anime4K_Upscale_CNN_x2_VL.glsl +++ /dev/null @@ -1,969 +0,0 @@ -// MIT License - -// Copyright (c) 2019-2021 bloc97 -// All rights reserved. - -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: - -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. - -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(0.3053028, -0.037464816, 0.113983095, 0.12537485, -0.18630321, 0.084269725, -0.01351514, -0.20190673, -0.12298384, -0.037622184, -0.070214555, -0.19367279, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(-0.41849324, 0.099702746, -0.04276645, -0.047299717, 0.20074473, 0.14217933, 0.15571699, 0.19553481, 0.21868695, -0.053848714, 0.016413521, 0.14117444, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(0.030540446, -0.052293833, 0.0715466, -0.31160545, 0.07808315, -0.16860045, 0.032828577, -0.2955024, -0.110374965, 0.04043687, -0.014024628, 0.058699366, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(-0.10727635, 0.054200135, 0.20853694, 0.21086875, 0.122690216, -0.091823794, 0.310609, -0.01738923, -0.0013488946, 0.10835534, -0.077265196, 0.086751856, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.77150255, 0.40530515, -0.41257596, -0.14367618, 0.46888494, 0.2650122, -0.934199, 0.40476102, 0.32293493, 0.20251967, 0.19891106, -0.29698747, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(-0.12505147, -0.41904053, -0.065798186, 0.34075752, 0.026240354, -0.2977496, 0.032647505, -0.003566783, 0.10290523, -0.23417123, -0.06014203, 0.094735645, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(0.11207838, -0.04062474, 0.023897955, 0.08605987, -0.020888371, 0.045541205, -0.07231824, -0.25884083, -0.11796847, -0.002691391, 0.0050435597, 0.02756291, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.4615728, 0.041790638, 0.08971143, 0.20213957, -0.38537467, 0.19938901, 0.08594364, -0.08621994, -0.08163473, -0.133266, -0.09561729, -0.014209637, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(0.0787417, -0.0483673, 0.07621572, -0.060169693, -0.013465177, -0.17152289, 0.02515561, 0.17675288, -0.05173998, 0.10768042, -0.029858522, -0.013957215, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(0.0072128535, -0.05658625, 0.052939568, -0.1760861); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x3 -//!HOOK MAIN -//!BIND MAIN -//!SAVE conv2d_tf1 -//!WIDTH MAIN.w -//!HEIGHT MAIN.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (MAIN_texOff(vec2(x_off, y_off))) -vec4 hook() { - vec4 result = mat4(-0.112743355, 0.0422517, 0.21350034, -0.0967133, 0.16265953, 0.0022497, 0.015078242, 0.08204187, 0.035236806, -0.0468228, -0.09464228, -0.001864949, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, -1.0); - result += mat4(0.25631642, -0.41485596, -0.16662048, 0.13201024, 0.057921384, 0.2240005, -0.30038536, -0.08305622, 0.2228756, 0.32263795, 0.10608189, -0.18616734, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 0.0); - result += mat4(0.08997524, 0.11516871, 0.19212262, -0.035154644, 0.11612274, -0.04056247, 0.14974374, 0.029173585, -0.07629641, -0.14353512, 0.041081246, 0.20230265, 0.0, 0.0, 0.0, 0.0) * go_0(-1.0, 1.0); - result += mat4(0.2262286, 0.055954933, -0.14499907, 0.17314723, 0.16590612, -0.06688698, -0.11118816, -0.012938116, -0.043101817, 0.026133137, 0.2958395, 0.06543993, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, -1.0); - result += mat4(-0.07311521, -0.3041244, -0.47978505, -0.6350967, -0.17432262, 0.34965977, 0.25399777, -0.16590433, -0.49957857, 0.0549526, -0.40869385, -0.08780993, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 0.0); - result += mat4(-0.3014447, -0.00021343959, -0.14953177, 0.028001398, -0.14931908, -0.14910097, -0.13287953, -0.45026535, 0.17378895, 0.024704922, -0.027308129, -0.10292025, 0.0, 0.0, 0.0, 0.0) * go_0(0.0, 1.0); - result += mat4(-0.06732655, -0.13119644, 0.066014715, 0.081011154, -0.15154321, 0.2407805, 0.07733481, 0.12312706, 0.1741804, 0.008495716, -0.14125362, -0.043644864, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, -1.0); - result += mat4(0.11465958, 0.42001364, 0.011069392, 0.3203028, -0.058801666, -0.37830314, -0.030540617, 0.2245139, -0.11310525, -0.14845212, 0.19957744, 0.25789997, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 0.0); - result += mat4(-0.16037206, 0.21326372, 0.020099448, 0.018666709, 0.122083254, -0.16033986, -0.10725163, 0.2556128, 0.1650688, -0.10475823, 0.048623525, -0.103755645, 0.0, 0.0, 0.0, 0.0) * go_0(1.0, 1.0); - result += vec4(0.007717166, -0.027800834, 0.0795002, 0.0053199283); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!SAVE conv2d_1_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.0056740534, -0.21186607, -0.18014967, 0.118979976, -0.0015611284, -0.07708486, 0.060131397, 0.11653345, 0.027150517, 0.10837246, 0.08583816, -0.14032431, 0.017552888, 0.0035846964, 0.03980114, 0.064649396) * go_0(-1.0, -1.0); - result += mat4(-0.03289318, -0.12004539, 0.26514888, -0.15079662, 0.04214227, -0.027273783, -0.027950313, 0.19614808, 0.18510003, -0.10346252, -0.029836183, 0.09174428, -0.0088710375, -0.18273513, 0.06601674, 0.009983851) * go_0(-1.0, 0.0); - result += mat4(0.08476211, 0.043996535, 0.056711517, 0.009976895, 0.07039107, -0.024862664, -0.059921104, 0.046850603, 0.04983447, 0.04863198, 0.21777405, -0.0576961, 0.045321796, -0.0060038245, 0.096396215, -0.10842004) * go_0(-1.0, 1.0); - result += mat4(-0.15746164, 0.041757874, 0.035169285, -0.1734288, -0.24219254, -0.13318908, 0.2272079, -0.02902605, 0.07750601, -0.1467191, -0.12296749, -0.07533314, -0.07073083, 0.17909113, 0.04789308, 0.17245363) * go_0(0.0, -1.0); - result += mat4(0.057547905, 0.1464685, -0.33115456, -0.26956198, -0.26298407, -0.059824817, 0.022509675, -0.09251868, 0.36277944, -0.2072429, 0.21095088, -0.45492023, 0.07428653, 0.1593302, -0.2945834, 0.12825087) * go_0(0.0, 0.0); - result += mat4(-0.1318458, 0.27804148, 0.037600737, 0.12047866, 0.0065036337, 0.0017241207, 0.060497303, -0.14786585, -0.15149063, 0.02731698, 0.048886403, -0.0025970868, -0.026979815, 0.07348884, 0.015636757, -0.107966796) * go_0(0.0, 1.0); - result += mat4(-0.079988025, -0.01626299, 0.06517438, 0.086406484, -0.1484504, 0.070595, 0.20620634, 0.09713373, -0.13620836, 0.012067949, -0.00068703433, -0.038030174, 0.22300471, -0.0012400965, -0.014827909, -0.08927486) * go_0(1.0, -1.0); - result += mat4(0.15634936, 0.052028038, 0.038081627, 0.12720168, 0.07342066, -0.04318368, -0.0065998454, 0.12109317, -0.45398173, 0.03666754, -0.17773737, 0.038516667, -0.13009632, -0.007457001, -0.013938809, 0.09776142) * go_0(1.0, 0.0); - result += mat4(0.029636936, 0.12864171, 0.11347291, -0.11812842, -0.0870342, 0.035678383, 0.050338242, 0.045754932, -0.07072752, 0.010447726, 0.039642975, -0.08795004, -0.1191525, 0.00967509, 0.13485421, -0.053204738) * go_0(1.0, 1.0); - result += mat4(-0.011072695, -0.09613245, -0.09094804, 0.028029291, -0.04031162, 0.15690295, 0.25094184, -0.21776834, 0.06524669, 0.06412185, -0.052852992, -0.08097702, -0.039127756, 0.036357917, 0.104585476, 0.25095442) * go_1(-1.0, -1.0); - result += mat4(-0.08328618, -0.006246033, 0.099708706, -0.014916097, 0.17727195, 0.4369228, 0.14760216, 0.06707674, 0.025167737, -0.022487842, -0.038962565, 0.15380669, 0.08125089, 0.09844594, 0.33538374, -0.003161368) * go_1(-1.0, 0.0); - result += mat4(-0.0128195705, -0.05475118, -0.037705053, -0.0012077648, -0.17425515, 0.091487505, -0.12909423, 0.0074876705, 0.13438368, 5.778033e-05, 0.04563314, -0.12185897, -0.053612474, -0.049824294, -0.12851205, 0.12856449) * go_1(-1.0, 1.0); - result += mat4(-0.025741795, 0.01867236, -0.00027440622, 0.10502768, 0.27042285, -0.14947751, 0.11143123, 0.2575913, -0.07414089, -0.33919522, -0.13194235, -0.20088726, 0.23121537, -0.08197353, 0.06693911, 0.015411386) * go_1(0.0, -1.0); - result += mat4(0.09143717, 0.22842278, 0.06501074, -0.20009698, -0.042117566, -0.23452093, -0.074082755, -0.10612558, 0.077631965, 0.08343657, -0.07657599, -0.43297377, 0.7092466, -0.16272525, 0.17222248, -0.056038965) * go_1(0.0, 0.0); - result += mat4(0.081200436, 0.046752565, 0.028254949, 0.18820632, 0.096592255, 0.05896745, 0.14845169, 0.034777895, 0.07195204, -0.1908046, -0.015341971, 0.02606145, -0.010377239, 0.0755547, -0.15285216, 0.047916733) * go_1(0.0, 1.0); - result += mat4(-0.06825636, -0.049540907, -0.024328846, 0.03506251, 0.2060094, 0.054119263, -0.06671269, 0.052428722, 0.055792283, -0.14336903, -0.03180757, 0.013760968, -0.037398104, -0.06880077, -0.023608573, 0.0360965) * go_1(1.0, -1.0); - result += mat4(-0.16937497, -0.30156836, 0.0021435453, 0.025772978, -0.17990975, 0.046133514, -0.32447076, -0.083382785, -0.081322014, -0.022132374, -0.05319431, 0.11794733, 0.08943906, 0.12927428, 0.105764806, -0.051034793) * go_1(1.0, 0.0); - result += mat4(-0.011012306, 0.047636557, 0.050260928, 0.051847618, 0.010985655, -0.13752967, 0.023869954, 0.07011459, -0.18244945, 0.07239806, -0.013638856, -0.026982805, 0.11395993, -0.031304818, -0.08714153, 0.077115685) * go_1(1.0, 1.0); - result += mat4(0.08707592, 0.2265186, 0.13363098, -0.039588258, -0.029561255, 0.019238092, 0.024606103, -0.0019022018, -0.062285982, -0.0629511, -0.03753033, 0.109805316, 0.016018672, -0.08284564, -0.04092752, -0.030386891) * go_2(-1.0, -1.0); - result += mat4(0.0016500859, 0.01616536, -0.099148355, 0.24161765, 0.028064307, -0.028680569, 0.054400917, -0.1978921, -0.08584302, -0.096797146, -0.06546965, -0.09342837, 0.030265866, 0.07057579, -0.02080932, 0.053178705) * go_2(-1.0, 0.0); - result += mat4(-0.030304352, 0.047440585, -0.04248429, 0.08568772, -0.051317703, 0.036739342, 0.00865767, -0.018183297, -0.07335176, 0.025001721, -0.068509035, 0.1814819, -0.09756565, -0.024179723, -0.05959287, 0.0352454) * go_2(-1.0, 1.0); - result += mat4(0.023015196, -0.022870664, -0.12028372, -0.111095205, 0.11065281, -0.19900022, -0.24012049, -0.017028643, -0.13484617, 0.050107025, 0.10741765, 0.037951697, 0.013090438, -0.0010045726, -0.029447839, -0.1859787) * go_2(0.0, -1.0); - result += mat4(0.17922719, -0.24138594, -0.44595388, -0.032014426, 0.06897096, 0.07125395, 0.1944457, -0.035794795, -0.24022278, -0.13230884, -0.1277025, 0.21229011, -0.12249393, 0.06141907, 0.2687936, -0.26896995) * go_2(0.0, 0.0); - result += mat4(0.0397242, -0.30710965, 0.28815824, -0.06642567, -0.07588877, -0.019552408, 0.0057806037, 0.11465521, 0.03560534, -0.10640553, 0.023589289, -0.16667193, 0.02066607, -0.01026633, -0.02655378, 0.082493655) * go_2(0.0, 1.0); - result += mat4(-0.007902949, -0.08501038, -0.029395591, -0.07072227, -0.01800967, -0.14564751, -0.08372804, -0.049974415, 0.1756957, -0.02042449, -0.04413007, -0.016873527, -0.2385717, -0.001741017, 0.08298281, -0.019873247) * go_2(1.0, -1.0); - result += mat4(-0.01803727, 0.0642893, 0.21513617, 0.066888265, -0.042107955, -0.123470366, 0.045296013, -0.11958806, 0.48208967, -0.027188249, 0.12136116, 0.05246265, 0.13522038, -0.016297493, 0.028486907, -0.059840377) * go_2(1.0, 0.0); - result += mat4(-0.1373251, -0.11281026, -0.06418318, 0.08444032, 0.062874556, -0.009133875, -0.049571835, -0.042995855, 0.12483249, -0.025967957, -0.11202483, 0.09862257, 0.099986054, 0.009230306, -0.09042664, 0.046612263) * go_2(1.0, 1.0); - result += mat4(0.03203309, 0.106030256, 0.045741174, -0.020529225, -0.028610658, -0.055219248, -0.21404657, 0.07746393, -0.059359375, 0.0033258004, -0.0054513607, 0.06856653, 0.18043655, -0.119936846, -0.05639265, -0.10240379) * go_3(-1.0, -1.0); - result += mat4(-0.0004331875, 0.10426754, -0.008130048, 0.012795991, -0.14372933, -0.40797862, 0.105197415, -0.0041354536, -0.079792455, 0.0914027, 0.012418237, -0.11449173, 0.020261409, -0.14681602, -0.13355242, 0.18290488) * go_3(-1.0, 0.0); - result += mat4(0.052306626, 0.010864275, -0.072627716, -0.009773121, 0.09484167, -0.09631301, 0.14896165, -0.21220942, -0.11994051, -0.002957136, -0.118194886, 0.08661347, 0.10005298, -0.029620873, 0.101668894, 0.0242806) * go_3(-1.0, 1.0); - result += mat4(-0.055188183, -0.06322889, 0.12994595, 0.03140751, -0.092755616, 0.04239107, 0.18460171, 0.08471877, 0.014203371, 0.13608724, 0.035351243, -0.07883493, -0.10067456, 0.14417742, 0.0054235114, 0.100745104) * go_3(0.0, -1.0); - result += mat4(-0.043811034, -0.16055201, -0.11927185, 0.20517266, 0.16734722, 0.27720267, 0.1205665, 0.045803893, -0.07874647, 0.06764307, -0.11157022, 0.080770165, -0.044105835, -0.03276538, -0.10945451, 0.100562036) * go_3(0.0, 0.0); - result += mat4(-0.044731796, -0.12854387, -0.061937924, -0.21604767, -0.036132332, -0.024353411, -0.16718283, 0.14903957, -0.11620588, 0.14563644, 0.23363836, 0.08400659, 0.15248756, -0.1424437, 0.112882614, -0.04096889) * go_3(0.0, 1.0); - result += mat4(-0.0486021, -0.05714939, 0.042517707, -0.06106919, -0.12970918, -0.071898215, -0.044727243, -0.026308542, 0.05687118, -0.0394057, -0.109454155, -0.0021216893, 0.018588595, 0.08061093, 0.0500373, -0.0034918839) * go_3(1.0, -1.0); - result += mat4(0.11269324, -0.17924047, -0.12965205, -0.07287767, -0.015830642, -0.044497102, 0.20014328, -0.14054494, 0.1232692, 0.2395109, 0.14093149, 0.03518561, -0.14088139, -0.09045081, -0.07283352, 0.053434785) * go_3(1.0, 0.0); - result += mat4(0.020512339, 0.026349569, -0.06666101, 0.05554806, -0.03044066, 0.26656216, 0.019155584, -0.12118906, 0.087923005, -0.1716557, 0.050843164, 0.037432503, -0.030232614, 0.030457936, 0.04232163, -0.066400655) * go_3(1.0, 1.0); - result += vec4(-0.0216415, 0.09015036, -0.030761974, -0.26541537); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!SAVE conv2d_1_tf1 -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.04688368, 0.13853125, 0.1714716, -0.03034447, -0.08090605, 0.1225867, 0.17535992, 0.012508419, -0.0010665918, -0.07481546, -0.15541986, 0.0671128, -0.029307734, -0.076674186, 0.03925896, -0.07140553) * go_0(-1.0, -1.0); - result += mat4(-0.13273083, 0.062933214, 0.04200143, -0.0080243945, -0.120439716, -0.090192355, -0.022639645, 0.00020024918, -0.11211478, -0.12949537, 0.025783822, 0.009155746, 0.01004339, -0.0661901, 0.10630156, 0.053137038) * go_0(-1.0, 0.0); - result += mat4(0.07113487, -0.16011865, -0.10838903, -0.0034704183, 0.110606894, -0.14915739, 0.036511585, -0.003103608, -0.0551775, -0.13140677, 0.05270299, 0.12139221, 0.02226174, 0.008415268, -0.06647426, 0.118130066) * go_0(-1.0, 1.0); - result += mat4(-0.045172617, -0.0020388453, -0.27287582, 0.002428232, -0.2833772, 0.13788106, 0.073339015, 0.10666715, 0.08455194, 0.16499293, 0.089058325, 0.008815447, 0.034657538, -0.109856166, -0.11499077, -0.02918854) * go_0(0.0, -1.0); - result += mat4(0.07910854, -0.26334837, -0.3246593, -0.08246522, 0.09211476, 0.40793833, -0.09658794, -0.14430091, -0.50632644, 0.087234974, 0.26298127, 0.3687086, 0.06492316, 0.23082961, 0.18233871, -0.09283792) * go_0(0.0, 0.0); - result += mat4(-0.022744032, 0.21690565, 0.2694824, -0.12230013, -0.07969618, 0.21595429, -0.034979805, 0.008938489, 0.21289209, -0.446482, -0.042927746, -0.13587558, -0.032581557, -0.07182814, -0.054092336, -0.009542036) * go_0(0.0, 1.0); - result += mat4(-0.0034912943, -0.080354184, -0.08577375, -0.1521193, 0.09809233, 0.034529503, -0.100664355, 0.008191219, -0.014303411, -0.02862216, -0.18669915, -0.12384598, 0.046499267, 0.093707144, 0.10661308, 0.15079576) * go_0(1.0, -1.0); - result += mat4(-0.031025652, -0.0384342, 0.14258307, 0.25531343, 0.0075049917, -0.03966595, 0.062381975, 0.19593526, -0.2868182, 0.03162008, -0.4391041, -0.524017, -0.034463473, -0.0066741486, -0.24586639, 0.10521736) * go_0(1.0, 0.0); - result += mat4(-0.07452321, -0.0227877, -0.025402244, 0.115727395, -0.039511252, -0.07785703, -0.013689458, 0.0066024344, -0.052957747, 0.011206241, -0.0021671024, 0.077190824, -0.11709912, 0.046635598, 0.123751156, -0.03712064) * go_0(1.0, 1.0); - result += mat4(0.055411004, -0.0020031065, 0.06685547, -0.018829947, -0.06378933, -0.18389674, -0.0023551763, 0.0670314, 0.13038594, 0.0601923, -0.03035789, -0.019537423, -0.014483204, -0.056800704, 0.08663347, -0.106859975) * go_1(-1.0, -1.0); - result += mat4(-0.06603686, 0.07360526, -0.0072026253, -0.06778907, -0.039178446, 0.012397263, -0.13482279, 0.05745685, -0.055182382, -0.10545766, 0.003857615, 0.041947857, -0.15239377, 0.041826613, 0.058879383, -0.0042669442) * go_1(-1.0, 0.0); - result += mat4(-0.0697229, -0.010702144, -0.032265816, 0.013317131, 0.105028264, 0.21032134, 0.06845646, -0.018358687, 0.064568676, 0.08437135, -0.000723181, 0.1324007, 0.05527932, -0.049871888, -0.10125047, -0.005040889) * go_1(-1.0, 1.0); - result += mat4(-0.006467578, -0.05120533, -0.011780779, -0.011742203, -0.34242442, -0.020819988, 0.17381702, -0.059836414, -0.028882682, 0.23210457, 0.16579404, -0.03708216, -0.23541835, -0.03290251, 0.029319672, 0.26189178) * go_1(0.0, -1.0); - result += mat4(-0.30955994, -0.06408282, -0.16872866, 0.10767772, -0.041430887, 0.051697977, 0.12523535, -0.060389146, 0.026289431, 0.06359533, 0.13526368, 0.2479901, -0.3263977, 0.10216362, -0.0030894123, 0.046437826) * go_1(0.0, 0.0); - result += mat4(0.10061438, -0.17047118, -0.21593021, -0.023389054, -0.17507865, -0.30822313, -0.22044766, 0.16078933, 0.07099252, -0.11573018, 0.24712858, -0.0659458, -0.037504572, -0.12297423, 0.03342632, -0.058119852) * go_1(0.0, 1.0); - result += mat4(-0.020957774, -0.0224927, 0.04069268, -0.07911167, 0.074009344, 0.065916434, 0.008222278, 0.11625076, -0.25299504, 0.03357169, -0.021988, 0.015821831, -0.0021187372, -0.030700417, -0.004374924, 0.027358979) * go_1(1.0, -1.0); - result += mat4(0.06549052, -0.048067164, 0.05489091, -0.28851983, 0.13378961, 0.026875904, -0.09877994, -0.19947459, -0.1274035, -0.022928834, -0.26344195, -0.025870804, 0.022505255, 0.0070861108, 0.121051334, -0.025964163) * go_1(1.0, 0.0); - result += mat4(0.059426542, -0.0327433, 0.2313695, -0.07046268, 0.20479666, 0.027021704, 0.2564928, -0.11689885, -0.07407976, -0.019611249, 0.093463086, -0.121553615, 0.035009407, -0.008135333, -0.075931996, 0.047803063) * go_1(1.0, 1.0); - result += mat4(-0.059434246, -0.1652242, -0.124611154, 0.04743711, 0.10530296, -0.13869187, -0.036534663, -0.035206333, 0.06067593, 0.06126907, 0.120151915, -0.06722673, 0.008103894, 0.037225723, -0.007520425, 0.065720856) * go_2(-1.0, -1.0); - result += mat4(-3.6759695e-05, -0.036789574, 0.013370567, -0.037871476, -0.013454664, 0.15086569, 0.10164699, 0.057703357, -0.12871023, 0.12827681, -0.055057358, -0.040753044, -0.0142621, 0.08563361, -0.04615499, -0.03130452) * go_2(-1.0, 0.0); - result += mat4(-0.117965914, 0.09056485, 0.07272314, 0.009695964, -0.11331058, 0.07467256, -0.08291521, 0.00937355, -0.04097737, 0.07752905, -0.017335521, -0.12539999, 0.039462104, -0.0007037007, 0.06034812, -0.09497377) * go_2(-1.0, 1.0); - result += mat4(0.20828065, 0.0400099, 0.047638226, -0.046423353, -0.026133502, 0.098207295, 0.056742374, 0.017029466, -0.058164768, -0.046973787, -0.17328712, -0.0012984811, 0.050085854, 0.11296557, 0.12639083, 0.058543045) * go_2(0.0, -1.0); - result += mat4(-0.098907426, 0.22031747, 0.101559944, 0.06616554, 0.026110496, 0.56487054, 0.23754556, -0.07540935, 0.31768414, -0.47653618, 0.015073956, -0.33731326, 0.087285936, -0.24593173, -0.26141426, 0.15003823) * go_2(0.0, 0.0); - result += mat4(0.046026446, -0.13767281, 0.064847544, 0.07717139, 0.08544123, -0.11092969, 0.072325274, 0.010849038, -0.3055905, 0.66436774, 0.1434729, 0.0494463, 0.07115603, 0.083811216, 0.020431712, 0.06537088) * go_2(0.0, 1.0); - result += mat4(-0.15532711, 0.030139687, 0.040853374, 0.11089222, -0.08150315, -0.015851755, -0.06787692, 0.096075505, -0.011956207, -0.0017758606, 0.1277494, 0.16156575, -0.038588695, -0.0626418, -0.041797023, -0.19467135) * go_2(1.0, -1.0); - result += mat4(0.12917455, 0.017410474, -0.20125067, -0.08040003, -0.13494664, 0.17789102, -0.19909395, 0.08441434, 0.078570575, -0.06330619, 0.23767303, 0.5442659, -0.009227878, -0.021818208, 0.14318731, -0.09042824) * go_2(1.0, 0.0); - result += mat4(0.097801, 0.09345441, 0.17846581, -0.14773296, 0.06536365, 0.07642184, -0.011880635, 0.02086135, 0.013336972, -0.053295113, -0.13410404, 0.027241753, 0.087728985, -0.044033397, -0.13098569, 0.009423933) * go_2(1.0, 1.0); - result += mat4(-0.02488427, 0.0134966355, -0.0075000813, 0.07272353, 0.015842725, 0.13765687, 0.028079558, -0.08384948, -0.06666623, -0.023220664, 0.025091043, -0.055167805, -0.18826278, 0.04423603, 0.13499942, 0.059128854) * go_3(-1.0, -1.0); - result += mat4(0.01935146, -0.030980906, -0.031569187, -0.0036869382, 0.036753897, 0.118464164, 0.15871695, -0.09842428, 0.023324292, 0.071796335, -0.07869346, -0.10751301, -0.2588698, 0.064011686, 0.17386378, -0.039197855) * go_3(-1.0, 0.0); - result += mat4(0.08590827, 0.005497696, -0.026512025, 0.015661815, 0.1102415, -0.08268483, -0.0032903247, 0.10049029, -0.008157236, -0.035823178, -0.017570151, -0.081716835, -0.3531045, 0.010005245, 0.017141227, -0.016376914) * go_3(-1.0, 1.0); - result += mat4(-0.16617337, -0.007689783, 0.00954665, 0.07117733, -0.001669262, -0.012331606, 0.051613946, 0.062780835, 0.06123557, -0.20243123, -0.19181818, 0.032895602, 0.19760677, 0.004464939, 0.12754539, -0.27360034) * go_3(0.0, -1.0); - result += mat4(0.15006685, -0.083587274, -0.03215495, -0.16992462, -0.011944293, 0.058361508, -0.088097006, 0.023880545, -0.04168166, -0.06960282, -0.092672385, -0.057278465, 0.23540072, -0.1721208, -0.018213503, -0.23494521) * go_3(0.0, 0.0); - result += mat4(-0.124885194, 0.1905868, 0.11108704, 0.03163991, 0.11383064, 0.101223364, 0.069428995, -0.14298953, -0.07609092, 0.13704266, -0.07749446, -0.0005389336, -0.04617235, 0.18011934, 0.08350316, 0.09416366) * go_3(0.0, 1.0); - result += mat4(0.073356606, 0.067966126, -0.21285574, 0.0782625, -0.0034364646, -0.032581426, -0.05538558, -0.1317288, 0.14552782, -0.1132393, 0.13063973, -0.00833602, 0.0026844777, 0.028135289, -0.02536825, -0.028372496) * go_3(1.0, -1.0); - result += mat4(-0.318728, 0.07862527, -0.12176221, 0.35010242, -0.029198067, 0.016302662, 0.17667587, 0.12605923, 0.1556697, -0.06061443, 0.05843511, 0.10891248, 0.01267106, -0.018492714, -0.15945031, -0.050723754) * go_3(1.0, 0.0); - result += mat4(-0.21555941, -0.016813517, -0.084676236, -0.07545412, -0.14518794, -0.014592766, -0.2446481, 0.0530632, 0.0847341, 0.12342537, -0.028644923, 0.083479315, -0.04179012, 0.0025225023, 0.16006976, -0.026940256) * go_3(1.0, 1.0); - result += vec4(-0.060742114, -0.037577342, 0.055704296, 0.03134311); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!SAVE conv2d_2_tf -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.13129333, -0.022117995, -0.009753253, 0.020439912, 0.044090994, -0.0916335, 0.0036765633, -0.11719207, -0.06413809, 0.04079378, -0.00085516454, -0.06306388, -0.12660664, -0.054126263, -0.005513979, 0.06364538) * go_0(-1.0, -1.0); - result += mat4(-0.028422508, 0.23270117, -0.28674677, -0.10820166, 0.024321957, -0.0811145, -0.07290707, -0.02125165, -0.064260505, 0.052076746, -0.009654081, 0.08363882, -0.02037171, 0.15006389, 0.121593125, -0.011237004) * go_0(-1.0, 0.0); - result += mat4(-0.14672333, 0.015381624, 0.1028172, -0.041823238, 0.0072677187, -0.042953942, 0.06426537, -0.0938381, -0.05990813, -0.04599802, -0.11264726, -0.027826328, -0.058160868, 0.10747306, -0.07327458, 0.07998872) * go_0(-1.0, 1.0); - result += mat4(-0.08702181, -0.03750975, -0.045659006, 0.04488332, 0.09102003, 0.066556975, -0.04353586, 0.08994567, -0.13561495, -0.10653702, 0.006989605, 0.028230097, 0.07177144, 0.2938447, -0.00943923, 0.022120917) * go_0(0.0, -1.0); - result += mat4(-0.1801194, -0.11119162, 0.1977298, -0.247902, -0.16654298, -0.07423158, 0.114130594, 0.0014401592, 0.006954727, -0.09810646, -0.051310766, 0.19487657, 0.2545855, -0.06328558, -0.04617056, 0.09444692) * go_0(0.0, 0.0); - result += mat4(0.011378825, 0.16044368, 0.017211074, 0.14472178, 0.032992378, -0.008925819, 0.035120245, -0.012409223, 0.074333005, 0.1178002, -0.128956, -0.13624239, -0.2791275, 0.21457297, -0.1476131, 0.04874687) * go_0(0.0, 1.0); - result += mat4(-0.03491764, -0.061763793, 0.05779039, 0.0054837577, -0.023937583, 0.08281698, 0.032306053, -0.014566218, 0.12738499, -0.0132100545, -0.051833414, 0.0057818824, 0.012158851, -0.20231532, -0.0043795826, 0.10285843) * go_0(1.0, -1.0); - result += mat4(-0.22269921, -0.15135509, -0.039143335, 0.033390045, 0.06770212, -0.14538582, -0.08011057, 0.03796648, -0.025913516, 0.13925864, 0.18309896, 0.012709204, -0.24912506, 0.3217706, 0.0394195, 0.017977878) * go_0(1.0, 0.0); - result += mat4(0.00080196525, 0.059145816, 0.05720508, 0.0056548906, 0.005168018, 0.09938438, 0.0200503, -0.05516137, 0.061309986, -0.019621318, -0.1541441, 0.019540716, 0.030571707, -0.09054893, 0.032851614, -0.27210873) * go_0(1.0, 1.0); - result += mat4(0.27061436, -0.114008114, -0.0020118617, -0.1656827, 0.09770587, 0.029897455, -0.03307522, -0.04661818, 0.033011347, 0.18498488, -0.05162084, 0.087471776, -0.24665618, -0.12538423, -0.08123797, -0.010210389) * go_1(-1.0, -1.0); - result += mat4(0.075188264, 0.0020608555, 0.18558815, 0.041179713, 0.11232638, 0.05507779, -0.19599183, 0.027942855, 0.06199144, 0.22141005, -0.06121163, 0.014993597, 0.24105869, -0.019737717, -0.112485714, 0.0157406) * go_1(-1.0, 0.0); - result += mat4(0.09425698, 0.0207658, 0.12074599, 0.009430481, 0.11889248, -0.025782838, 0.0034711843, 0.05113582, 0.012531833, -0.0018606635, -0.09137569, 0.018120576, 0.4051155, 0.02222076, -0.16001017, 0.10981527) * go_1(-1.0, 1.0); - result += mat4(-0.03582557, 0.014994796, -6.4688604e-05, 0.24618183, -0.11697727, 0.24388117, 0.038502026, -0.3511993, 0.101741396, -0.10748137, 0.035059888, -0.017535849, 0.09450039, 0.06541661, 0.12149035, 0.28798738) * go_1(0.0, -1.0); - result += mat4(-0.27143848, 0.017990451, -0.69144464, 0.037944376, -0.04551905, 0.09263134, 0.4259611, -0.14107811, -0.10641847, 0.23065196, 0.040813655, -0.07789163, 0.3087666, 0.08190437, 0.16409059, -0.06455426) * go_1(0.0, 0.0); - result += mat4(-0.08290655, -0.35286915, -0.18082355, -0.32229406, 0.1608227, 0.030915622, 0.09207708, 0.02655054, 0.039464593, 0.026095424, 0.052584656, 0.033881903, -0.01751319, -0.0011676399, 0.04002607, 0.1630013) * go_1(0.0, 1.0); - result += mat4(-0.012021132, 0.12163766, -0.07410629, -0.06879096, 0.017859738, -0.039261997, -0.028677614, -0.23610398, -0.15963873, -0.0006119958, 0.11275506, 0.0082659265, 0.05677582, 0.08676638, -0.08669759, -0.10475464) * go_1(1.0, -1.0); - result += mat4(0.12792721, 0.06888765, 0.31803077, 0.26002547, -0.067599155, -0.011822328, -0.2589909, -0.30024147, 0.11076704, 0.15200609, -0.018180368, -0.19146141, 0.22298847, 0.059484895, 0.034478076, 0.15610938) * go_1(1.0, 0.0); - result += mat4(0.0870121, -0.016420847, -0.011579898, 0.097182855, -0.120095566, -0.06843338, -0.043460473, -0.060684606, -0.027540063, -0.008499213, 0.033570655, -0.06866259, 0.01429712, -0.07424434, 0.0009466247, 0.09142678) * go_1(1.0, 1.0); - result += mat4(-0.03781424, 0.04587032, 0.03744051, 0.02712279, -0.051038064, 0.0669144, -0.02640278, 0.12384894, -0.0022533627, -0.010022036, 0.07536463, -0.030489929, 0.09418577, 0.155089, -0.011290433, -0.02102941) * go_2(-1.0, -1.0); - result += mat4(-0.0053278613, -0.07160643, 0.039028414, 0.04123311, -0.10693177, -0.1170874, 0.07230816, -0.033255517, -0.119176835, 0.0786526, -0.11880206, -0.11354601, -0.037539184, 0.14404313, 0.069760695, 0.024738638) * go_2(-1.0, 0.0); - result += mat4(0.03413808, -0.006487654, 0.10006853, 0.22228058, -0.13796462, -0.14042488, 0.04017443, -0.031790894, -0.06673143, 0.009888688, 0.08831443, -0.0045771743, -0.028375361, -0.04704813, 0.07128581, -0.07012518) * go_2(-1.0, 1.0); - result += mat4(-0.06954315, -0.23728988, -0.14192343, -0.08236467, -0.2552115, 0.04102959, -0.06355397, -0.08340241, 0.17617856, 0.20281969, -0.16249381, 0.10843737, -0.04392261, -0.08587206, 0.053069845, -0.15482199) * go_2(0.0, -1.0); - result += mat4(0.124981806, 0.12828638, -0.061472785, -0.20108232, -0.14905351, -0.40766275, -0.35427195, -0.13183996, 0.09307428, -0.07697028, 0.06702549, -0.22656697, 0.019868268, -0.19361132, 0.08784669, 0.20249842) * go_2(0.0, 0.0); - result += mat4(-0.004661343, -0.09333453, -0.24876262, -0.07906779, 0.110697776, -0.37069768, -0.042212646, -0.0046135853, -0.2254257, -0.023392014, 0.031476703, -0.045574382, -0.12675518, -0.076056994, -0.08228006, -0.040303517) * go_2(0.0, 1.0); - result += mat4(0.16182694, 0.0512523, 0.051189836, 0.048962783, -0.05156489, -0.17987493, -0.012037288, 0.06953726, -0.09458492, 0.1610021, -0.004063283, -0.032922342, 0.08995396, 0.1939926, -0.018710036, -0.08153231) * go_2(1.0, -1.0); - result += mat4(-0.064830944, 0.06121252, -0.18886387, -0.12976822, -0.031117212, 0.12219633, 0.19070715, 0.12495262, -0.11994464, -0.24687837, -0.08425294, -0.016920334, -0.13286817, -0.3260188, -0.11776061, 0.1651019) * go_2(1.0, 0.0); - result += mat4(-0.17652592, 0.002499805, -0.030541016, -0.01393431, 0.031418208, 0.08209422, 0.12430871, 0.4387016, -0.108871914, -0.09041422, 0.031226631, -0.1638517, 0.20756467, 0.014476537, -0.012701195, -0.03440563) * go_2(1.0, 1.0); - result += mat4(0.005320072, -0.0032291536, -0.017209187, 0.031944863, -0.2479921, -0.24433962, -0.13832912, 0.07835928, -0.17707248, 0.028202811, -0.19121435, 0.164587, 0.123152815, 0.0050288937, 0.084104605, -0.0380019) * go_3(-1.0, -1.0); - result += mat4(0.16008669, -0.018608516, -0.013778938, 0.033447385, -0.01242472, -0.070916265, 0.026909694, -0.07318777, 0.15158044, 0.12047607, -0.1709358, 0.2031767, 0.0025611701, -0.21457459, 0.2791286, 0.10159932) * go_3(-1.0, 0.0); - result += mat4(0.14320926, 0.020023825, -0.0484187, 0.011563084, -0.2640472, -0.013056275, 0.004234292, -0.095376395, 0.28363484, -0.0058227647, -0.0777649, 0.05238444, 0.41757923, -0.07081097, 0.012567031, -0.13029522) * go_3(-1.0, 1.0); - result += mat4(0.07266207, 0.042793367, -0.08212271, -0.23401663, -0.19457819, 0.4191269, -0.03095442, 0.15339781, -0.28451788, 0.09316364, 0.10231693, -0.22844811, 0.111623526, 0.120017685, 0.18777381, 0.014420896) * go_3(0.0, -1.0); - result += mat4(0.15037206, -0.29763284, 0.2601235, 0.0193363, 0.13686465, 0.009907918, -0.37781665, 0.04916627, 0.14114739, 0.5043813, 0.0447959, -0.029427614, 0.041768756, 0.27211213, 0.14163221, 0.086162075) * go_3(0.0, 0.0); - result += mat4(0.19159287, 0.21363218, 0.15053211, 0.08992885, 0.100828275, 0.09379921, 0.030783929, 0.11664482, -0.059145752, -0.19400764, -0.09351283, -0.016430443, -0.12910964, -0.067078374, 0.11760082, 0.121194765) * go_3(0.0, 1.0); - result += mat4(-0.055059325, 0.09299572, 0.06848913, 0.06334532, -0.1476285, 0.111801244, -0.033960916, 0.06474366, -0.04952303, 0.27885208, -0.052447475, 0.09226763, -0.15024844, -0.0033919013, 0.013498364, 0.09135676) * go_3(1.0, -1.0); - result += mat4(-0.017010042, -0.122343406, -0.19097193, -0.27957183, -0.18206005, 0.102321096, 0.22794476, 0.0439245, -0.23710132, -0.08070259, 0.17377135, 0.23811814, 0.17799385, 0.049567625, 0.1470908, 0.07329385) * go_3(1.0, 0.0); - result += mat4(0.0038071256, 0.19454515, -0.01222965, -0.07390379, -0.0532754, 0.03942833, 0.123840906, 0.023459576, -0.0658742, -0.023957543, -0.14682837, 0.1221027, -0.010986398, -0.066184506, 0.03026491, -0.0638446) * go_3(1.0, 1.0); - result += vec4(-0.06427697, -0.00039365015, 0.011889719, 0.060232002); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!SAVE conv2d_2_tf1 -//!WIDTH conv2d_1_tf.w -//!HEIGHT conv2d_1_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_1_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_1_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.012110923, 0.07818654, 0.07964548, 0.11885079, -0.07694473, -0.01378252, 0.006632789, -0.12876098, 0.0069211307, 0.022278586, 0.069553085, 0.16569804, -0.11123615, 0.06125189, -0.11232848, 0.1559266) * go_0(-1.0, -1.0); - result += mat4(-0.3261174, -0.25586754, 0.21129315, 0.3135101, 0.1509055, 0.0044283345, 0.024674175, -0.08000473, 0.01213029, 0.09093019, 0.04942677, 0.09806723, -0.16454464, -0.14433062, -0.058094524, -0.060819894) * go_0(-1.0, 0.0); - result += mat4(0.023174008, 0.02858724, 0.07685972, 0.036857616, -0.10415571, 0.10241035, -0.01893166, 0.02065923, 0.058356714, 0.096426114, -0.03772327, -0.1529002, 0.13740575, -0.048291504, -0.06152548, -0.15199897) * go_0(-1.0, 1.0); - result += mat4(0.029300174, -0.13222043, 0.0139825605, -0.02274408, 0.062944874, 0.028447356, 0.05960515, 0.034447193, 0.03133432, -0.019283533, -0.024591971, -0.0043914663, 0.15245225, 0.006851478, -0.051783554, 0.17453748) * go_0(0.0, -1.0); - result += mat4(-0.09125915, 0.081739366, 0.01196335, 0.23130219, -0.22557035, -0.13537665, 0.0022028848, -0.043430023, 0.22759882, 0.07920754, -0.027986467, -0.14051494, -0.19557038, -0.03585936, -0.4258294, -0.03856216) * go_0(0.0, 0.0); - result += mat4(0.18511422, -0.09368415, 0.1551229, 0.04322566, -0.023400841, -0.02261204, 0.15129441, -0.007954805, -0.10739125, 0.019459398, 0.013128325, 0.018073296, 0.20886365, -0.20662378, -0.03814699, -0.09272838) * go_0(0.0, 1.0); - result += mat4(-0.027352437, -0.039882626, 0.12598103, -0.093930446, 0.030846786, -0.09325075, -0.009084744, -0.024584265, 0.07159868, 0.14162529, 0.19019091, 0.058855128, -0.09880401, -0.01843218, 0.14753596, -0.2449532) * go_0(1.0, -1.0); - result += mat4(0.06565521, 0.09150168, -0.08654865, 0.0829788, -0.07596146, -0.01815166, -0.08786775, -0.03477514, 0.20538878, -0.012766377, 0.020719538, 0.088188395, -0.034300096, 0.29972988, -0.20005241, 0.018425167) * go_0(1.0, 0.0); - result += mat4(0.11713916, 0.024167519, 0.05167596, -0.0027117804, -0.016994188, 0.048177514, -0.012556207, 0.010979094, 0.09098878, 0.028514355, 0.06063336, -0.06624107, 0.012754856, 0.013208708, -0.061374772, -0.0025992664) * go_0(1.0, 1.0); - result += mat4(-0.09053513, 0.03183455, 0.017340872, 0.12934409, -0.022161964, -0.0015361432, -0.049972344, -0.12763855, 0.12779881, -0.04697911, 0.018968226, -0.119873665, 0.05462772, -0.13919477, -0.10226718, -0.2540179) * go_1(-1.0, -1.0); - result += mat4(-0.29912186, -0.09291771, 0.050926663, 0.49361777, 0.21372582, 0.076717265, -0.058968987, -0.1572678, 0.3194591, -0.120582424, 0.03942037, 0.023128232, 0.24321598, 0.07046334, -0.21204855, -0.648296) * go_1(-1.0, 0.0); - result += mat4(0.05366883, -0.020366706, 0.020979457, -0.06893884, 0.04837168, 0.017253762, 0.008874203, -0.020785445, -0.20425391, 0.060179923, 0.046167206, 0.09863377, -0.14381303, 0.038928367, -0.06590863, -0.18408588) * go_1(-1.0, 1.0); - result += mat4(0.07099762, 0.2029403, -0.033945918, 0.15202214, 0.0901113, -0.27336198, -0.17693861, -0.16206753, -0.17642029, 0.09400492, -0.11165698, -0.07863893, -0.16306102, -0.056210615, 0.22173557, 0.013508989) * go_1(0.0, -1.0); - result += mat4(0.08541511, -0.27093616, -0.35273993, -0.48919773, 0.038383547, -0.16013749, 0.012996215, -0.03434873, 0.07024113, -0.28971404, 0.10623425, -0.0019642068, -0.062374946, 0.3291145, 0.22468035, -0.42971882) * go_1(0.0, 0.0); - result += mat4(0.020427933, 0.15062793, 0.08308975, -0.025095072, 0.030093266, -0.09649862, -0.03382388, -0.0016017791, 0.105402954, 0.020693144, -0.051065, 0.07704679, 0.02864139, -0.00135146, 0.03762216, 0.029277142) * go_1(0.0, 1.0); - result += mat4(0.01700994, 0.12214317, 0.06749582, 0.07354159, -0.093085855, -0.065021954, 0.010773045, -0.00095128635, -0.045384295, -0.072611265, -0.043900184, 0.049471326, 0.029131187, 0.03180158, -0.13313527, 0.05280797) * go_1(1.0, -1.0); - result += mat4(0.14751251, -0.15087761, 0.09932281, -0.099232934, -0.062390897, 0.112391844, -0.09159478, 0.15856399, 0.034708973, 0.01819943, -0.02730164, -0.13562973, -0.05687333, -0.0114601655, 0.07025971, 0.02496533) * go_1(1.0, 0.0); - result += mat4(-0.0117268525, -0.026162883, 0.07481553, 0.13420302, 0.029870516, 0.07405776, -0.06379041, 0.09631234, -0.07754842, 0.035888605, 0.0034764851, -0.040771756, -0.092022054, -0.034230903, -0.02281844, -0.0028173258) * go_1(1.0, 1.0); - result += mat4(-0.059846643, 0.016772347, -0.02287152, 0.07036337, -0.024946844, 0.09826078, -0.068491876, 0.20852126, 0.073890835, -0.058288682, 0.013093785, -0.05776076, 0.0516503, 0.052794468, 0.10837015, 0.038539834) * go_2(-1.0, -1.0); - result += mat4(-0.16391893, -0.008062687, -0.35022175, 0.2510062, -0.15820411, 0.048403125, 0.024878092, 0.037888516, -0.035924178, -0.068953894, -0.025386479, 0.24405715, -0.018495679, -0.051277515, 0.14754932, -0.031538483) * go_2(-1.0, 0.0); - result += mat4(-0.038429607, -0.047140498, -0.018157095, -0.029318782, -0.04094171, -0.11870087, 0.11214255, 0.07142628, 0.021007229, -0.005681072, 0.1662777, 0.10829575, 0.112268396, 0.03567479, -0.06738845, 0.0032037434) * go_2(-1.0, 1.0); - result += mat4(-0.032217573, 0.2102397, -0.20617546, -0.07920811, 0.12918773, 0.054486286, -0.13656865, 0.05806265, 0.01963165, 0.049910642, 0.15538268, 0.10724465, -0.09697837, -0.03070673, -0.0071386313, -0.11899626) * go_2(0.0, -1.0); - result += mat4(0.130827, 0.0051715383, -0.07212691, 0.45726067, 0.2773031, 0.2973666, 0.3951691, 0.01333662, -0.14561643, 0.04508669, 0.121690124, 0.13326228, -0.22579186, 0.058161184, 0.09281702, -0.00079749606) * go_2(0.0, 0.0); - result += mat4(-0.00771113, 0.09912341, -0.41895548, -0.06705759, 0.029148718, 0.052991726, 0.18665347, -0.031787418, 0.23053595, 0.09444956, 0.10691037, -0.06325714, -0.05335701, 0.1917427, -0.0065284846, 0.032622546) * go_2(0.0, 1.0); - result += mat4(-0.056801565, -0.019131258, -0.0939022, -0.08130343, -0.11051993, 0.0035269214, -0.047361933, -0.0543875, 0.10854369, 0.06445185, 0.016828364, -0.022595318, 0.1450623, 0.033027507, -0.020425137, 0.16169788) * go_2(1.0, -1.0); - result += mat4(-0.08747717, 0.07770065, 0.018155783, 0.07160794, 0.09860347, -0.04329888, -0.0043579484, -0.2014418, -0.060260013, 0.0036374568, -0.17566042, -0.2268221, 0.001273691, -0.2609373, -0.19417606, -0.04102927) * go_2(1.0, 0.0); - result += mat4(-0.086845055, -0.114253804, -0.13433142, -0.025941795, -0.0155711295, -0.13578776, 0.12059696, -0.08760523, -0.0057348222, 0.12164273, 0.07270617, -0.06352636, 0.08894258, 0.04140841, 0.1230304, -0.030357126) * go_2(1.0, 1.0); - result += mat4(0.03320213, 0.015911903, -0.06288296, -0.121976145, 0.2713457, 0.13913193, -0.092420585, 0.105714336, 0.10294281, -0.04591945, -0.11767934, 0.032249406, -0.06506192, -0.04639334, 0.08137017, -0.031746846) * go_3(-1.0, -1.0); - result += mat4(0.13717805, 0.0071242675, -0.077256985, -0.14974317, -0.08467893, -0.20126395, -0.06240603, 0.09554399, -0.075844854, 0.28380412, 0.046030026, 0.053188596, 0.50943077, 0.1179795, 0.32203588, -0.06712207) * go_3(-1.0, 0.0); - result += mat4(-0.18528835, 0.0016975187, -0.0041140947, 0.11234392, -0.34049067, -0.056880493, -0.04325441, 0.09905571, 0.10978758, 0.009608353, -0.10801905, -0.04071131, -0.09096832, -0.12350487, 0.011801418, 0.22521795) * go_3(-1.0, 1.0); - result += mat4(0.040283076, -0.034117915, -0.026142653, -0.06058959, 0.12511659, 0.4131219, 0.59190845, 0.39758852, 0.16032091, -0.5975032, -0.14516282, 0.115154505, 0.03874097, 0.18462797, 0.22934213, 0.05285643) * go_3(0.0, -1.0); - result += mat4(-0.17804009, 0.33769128, -0.14572927, -0.029545018, 0.3897, -0.055615567, 0.15232995, 0.48788264, -0.21422523, 0.03397293, 0.0337794, -0.19830915, -0.022457365, -0.35096076, 0.42616987, -0.19268763) * go_3(0.0, 0.0); - result += mat4(-0.13191561, -0.18337126, 0.017879983, -0.070472844, -0.09409196, -0.025770849, -0.060219247, 0.10869267, -0.17341033, -0.09199785, -0.0667796, -0.093538545, -0.21300837, 0.030474098, -0.04540468, 0.041321553) * go_3(0.0, 1.0); - result += mat4(-0.0998177, -0.08669185, -0.0090886615, 0.0021083376, 0.08900095, 0.5062186, 0.45537788, 0.029077586, -0.1001008, -0.0077697043, -0.0096318, 0.11706454, 0.07401959, -0.00650215, 0.06092762, 0.037442297) * go_3(1.0, -1.0); - result += mat4(-0.18500404, 0.0024998419, -0.11761331, -0.026825588, 0.27255726, 0.093010515, 0.3281413, -0.051473666, -0.050259475, -0.17258662, -0.23394547, 0.104795866, 0.035074063, -0.061560635, 0.05975411, -0.094255395) * go_3(1.0, 0.0); - result += mat4(-0.023440497, -0.021479638, 0.0036277648, 0.004972212, 0.02416659, -0.09856867, -0.03971455, -0.27094853, 0.026615402, -0.0047890246, -0.13755885, 0.16591635, -0.0016293586, 0.133207, 0.047790572, 0.029041538) * go_3(1.0, 1.0); - result += vec4(-0.0063728676, -0.029053684, -0.052831043, 0.006475641); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!SAVE conv2d_3_tf -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.0431447, 0.047972627, 0.09522898, 0.19048582, 0.0015511789, 0.1182684, -0.065335006, 0.061233886, -0.02451869, 0.065670215, -0.015341636, 0.06836347, 0.10215459, 0.17516296, 0.0857072, 0.072732896) * go_0(-1.0, -1.0); - result += mat4(0.10117189, 0.049022958, -0.016017418, -0.12119866, 0.089112304, 0.016286526, -0.025251161, 0.03239003, -0.0783818, -0.086096615, -0.13673106, -0.15934734, -0.51308054, -0.061430074, -0.16208844, 0.2227776) * go_0(-1.0, 0.0); - result += mat4(-0.011567444, 0.025550444, -0.018439503, -0.015003767, 0.11606929, -0.11613111, -0.040906087, -0.015202219, 0.03932618, -0.1106059, 0.03703376, 0.018548314, -0.12761284, -0.038109995, -0.23577367, 0.20272344) * go_0(-1.0, 1.0); - result += mat4(0.025444161, -0.075270735, 0.10999789, 0.16305386, 0.016178958, -0.074034974, 0.1177035, -0.077481024, -0.047774278, -0.029782977, 0.23137823, -0.2389453, 0.033015423, -0.10381626, -0.16437943, 0.20906886) * go_0(0.0, -1.0); - result += mat4(-0.098473966, 0.11013442, -0.18486807, 0.1907086, -0.17564997, -0.08509439, -0.42472756, -0.17446618, 0.3440862, 0.12719585, -0.12213955, -0.02246555, 0.18982963, 0.20809166, -0.36067408, 0.51116616) * go_0(0.0, 0.0); - result += mat4(-0.019805575, 0.07812505, 0.061653323, -0.08379226, 0.026396899, 0.009063019, -0.10845824, 0.0827647, 0.045301896, -0.07748021, -0.07435832, 0.14860612, -0.077515624, 0.010588131, -0.22704287, 0.26849246) * go_0(0.0, 1.0); - result += mat4(-0.02884339, -0.09512523, -0.038564682, 0.08862835, 0.041666254, -0.10532901, 0.040582962, -0.10063983, -0.15736029, -0.03644334, -0.005061672, 0.04302295, -0.046482194, -0.05262547, 0.05110866, 0.03204655) * go_0(1.0, -1.0); - result += mat4(-0.005932702, 0.033263832, 0.0044865874, -0.02328917, 0.056534443, -0.14084046, 0.022353357, 0.015087431, -0.2734596, -0.026544483, 0.06297078, 0.11277746, 0.06127936, 0.02466357, -0.04970561, 0.02098484) * go_0(1.0, 0.0); - result += mat4(0.013603583, 0.036264602, 0.10985147, 0.01532773, -0.09012781, 0.1132652, -0.17016481, 0.025332611, -0.077462606, 0.02990799, -0.10627784, -0.006231141, -0.089164406, -0.051507175, -0.043900985, 0.09049239) * go_0(1.0, 1.0); - result += mat4(-0.15391691, 0.1915742, 0.014101639, -0.022153432, 0.06291936, -0.017871676, -0.016763045, -0.14741553, -0.011252563, -0.20720159, -0.030648025, -0.0142307645, 0.010291614, -0.09243969, -0.052940153, 0.0061574522) * go_1(-1.0, -1.0); - result += mat4(0.032283742, 0.030768922, 0.1070225, -0.027818602, 0.10032608, 0.0061178426, -0.03561339, -0.26687133, 0.14369439, -0.11362691, -0.08980895, 0.066520914, 0.33414948, 0.006998835, 0.09193012, -0.2857383) * go_1(-1.0, 0.0); - result += mat4(-0.059588976, -0.02046844, -0.042585023, 0.031939838, 0.12796514, -0.06155685, 0.03540324, 0.009929082, -0.0039611827, 0.10790477, 0.049435645, -0.083034374, 0.23874004, -0.07460337, -0.020173345, -0.2006587) * go_1(-1.0, 1.0); - result += mat4(-0.13217632, 0.052319963, -0.026713084, -0.0051368694, -0.10380872, -0.28659084, 0.0044393227, 0.005174543, -0.05092618, -0.07092548, -0.027397033, -0.01609789, 0.13699281, -0.14706929, 0.17737861, -0.23746766) * go_1(0.0, -1.0); - result += mat4(0.19268502, 0.14133929, -0.1305119, -0.4034132, 0.057504695, -0.24550998, -0.081932545, 0.45489246, -0.29331785, 0.19625074, 0.063166246, 0.15158689, 0.6715147, -0.4610189, 0.08921431, 0.17761138) * go_1(0.0, 0.0); - result += mat4(0.044718128, -0.011809122, 0.024131307, -0.30093196, -0.05607289, 0.047759805, 0.004210022, 0.098192796, 0.030430846, 0.008207501, 0.12266905, -0.10549182, 0.11584339, -0.091016166, -0.08635591, -0.13889709) * go_1(0.0, 1.0); - result += mat4(-0.19226642, 0.07147627, -0.14759602, 0.4041079, 0.0744628, -0.19612685, 0.1498252, -0.06273549, 0.017959936, 0.10858338, -0.14985329, 0.062042814, -0.13240446, -0.24362786, 0.113626175, -0.15332204) * go_1(1.0, -1.0); - result += mat4(0.08383099, -0.13935047, -0.25981048, 0.16491203, 0.07513876, -0.28346774, 0.19722275, -0.044425573, 0.020889329, -0.22140723, 0.025403097, -0.09183192, 0.014202567, -0.18666178, 0.062913105, -0.047674105) * go_1(1.0, 0.0); - result += mat4(-0.1862771, 0.25878942, -0.043018065, 0.22144824, 0.016088247, 0.12113542, -0.11965952, -0.01587184, 0.07830932, -0.16069177, 0.13421321, 0.018718706, 0.09548377, 0.018543294, 0.013614677, -0.1054485) * go_1(1.0, 1.0); - result += mat4(-0.2121733, -0.015635416, 0.027564054, -0.085904464, 0.064805664, -0.070543915, 0.08966146, -0.06359783, 0.01131311, 0.046913184, -0.09809833, -0.092063695, -0.087217696, 0.012411829, 0.0045399712, 0.027389864) * go_2(-1.0, -1.0); - result += mat4(-0.19307798, 0.09449126, 0.084036835, 0.30262446, 0.011706106, 0.029800637, 0.04612629, 0.006186647, 0.11228541, 0.055147965, 0.17659879, -0.023410015, 0.19965266, -0.06684007, -0.081968054, -0.052410994) * go_2(-1.0, 0.0); - result += mat4(-0.058564443, 0.08252549, 0.058217794, 0.0864448, -0.25663558, 0.080260284, -0.0010294432, 0.05830051, -0.07684524, 0.1820709, 0.04438993, 0.019178499, -0.12425012, -0.04596089, -0.010032888, -0.0012803525) * go_2(-1.0, 1.0); - result += mat4(-0.43352658, 0.15262963, 0.25620222, 0.22428556, 0.09667152, 0.0037820593, -0.07951691, -0.11553085, 0.12982155, 0.17988266, -0.14283511, 0.074744284, 0.03604327, 0.00452661, -0.12865154, -0.020020623) * go_2(0.0, -1.0); - result += mat4(0.06850602, -0.18057181, 0.2093389, -0.07333886, 0.28406742, -0.048766967, 0.18114483, 0.47292945, -0.2340266, -0.06862712, 0.28263155, 0.3150323, -0.054724697, -0.16958356, 0.27928987, -0.19666018) * go_2(0.0, 0.0); - result += mat4(0.03281329, 0.0038649621, -0.07108877, 0.10791149, 0.15235375, -0.3083721, 0.168294, 0.10379698, 0.029038485, 0.16282903, 0.04483725, -0.018684763, 0.108186625, 0.027885616, -0.019351846, 0.1623065) * go_2(0.0, 1.0); - result += mat4(-0.110499054, 0.31347123, 0.030852, 0.01631416, -0.1466389, 0.080429435, -0.18689284, 0.10667815, 0.20645237, -0.18004708, -0.10570413, -0.15435064, -0.019000605, -3.126077e-06, 0.037761535, -0.015040956) * go_2(1.0, -1.0); - result += mat4(-0.023364332, -0.023399066, 0.2712722, 0.049637552, -0.10222765, -0.2698945, 0.20991959, 0.04921932, 0.21510898, -0.0751939, -0.19781734, -0.28162366, -0.041881047, 0.0065111094, -0.04102195, 0.0982682) * go_2(1.0, 0.0); - result += mat4(-0.032176614, 0.019144032, -0.08985387, 0.091637276, 0.1012352, 0.0003583357, 0.07897295, -0.09531175, -0.001155058, 0.074372366, -0.026186578, 0.07283374, 0.06052053, 0.009307753, -0.03874333, -0.06228009) * go_2(1.0, 1.0); - result += mat4(-0.022224072, -0.15717922, -0.1406057, -0.05941157, -0.028769474, -0.21226564, -0.036570027, 0.22266355, 0.14120889, 0.014577123, 0.10216447, 0.018429281, 0.056729726, -0.055834044, 0.058146577, -0.11999068) * go_3(-1.0, -1.0); - result += mat4(0.009995364, -0.020045493, -0.0057422677, 0.0643022, 0.016475432, -0.030856136, 0.042140726, 0.15077904, -0.32955253, 0.0694449, 0.17931722, 0.3439302, -0.12484157, -0.10958869, -0.15755124, -0.09755644) * go_3(-1.0, 0.0); - result += mat4(-0.008314924, 0.07704758, 0.043228816, -0.08110893, 0.099286236, -0.053224478, 0.22877018, -0.189486, -0.00798416, 0.018341504, 0.10734141, 0.0752633, -0.042524844, -0.086395286, 0.14299925, 0.026488977) * go_3(-1.0, 1.0); - result += mat4(-0.052531082, 0.19139186, 0.12205995, -0.2573172, 0.15157184, 0.0073150825, 0.089774385, 0.06604469, -0.16528498, -0.002511137, 0.14287429, -0.07819732, 0.025014274, 0.15338829, 0.0761692, -0.02803716) * go_3(0.0, -1.0); - result += mat4(-0.21000335, 0.15277153, 0.08546171, 0.2816124, -0.16559112, -0.11068559, 0.47053605, -0.009787771, -0.0013089112, -0.06985127, 0.44743782, 0.25142467, -0.32670796, 0.044035822, -0.12545367, -0.2996084) * go_3(0.0, 0.0); - result += mat4(-0.11526387, 0.15654811, 0.099616654, 0.15473685, 0.21278231, 0.046207245, 0.117993094, -0.26825273, -0.12539764, 0.14013724, 0.17357737, -0.05387817, 0.076738276, -0.13339446, 0.15005626, -0.2108176) * go_3(0.0, 1.0); - result += mat4(-0.0008846504, -0.05998622, -0.028892396, 0.04784136, 0.0104263965, 0.10899508, -0.073364735, 0.077516064, -0.074248806, -0.21749993, -0.26203, 0.041161157, 0.09366407, -0.026498007, 0.0122177545, 0.03892727) * go_3(1.0, -1.0); - result += mat4(0.04349908, 0.13671173, 0.2242545, -0.028021423, -0.03802222, 0.0052366396, -0.010709643, 0.031290106, 0.06291333, -0.024909683, -0.15439379, -0.04502091, 0.2062182, -0.5983536, -0.09670497, -0.38446042) * go_3(1.0, 0.0); - result += mat4(-0.008962513, 0.13044207, 0.04964221, 0.012250417, 0.012129821, 0.019985713, -0.06421885, 0.009168735, -0.044516414, 0.071368866, -0.006634213, 0.06497366, 0.08578495, -0.10586125, 0.06628038, -0.14006054) * go_3(1.0, 1.0); - result += vec4(0.056541316, 0.041788545, -0.036094554, -0.021763096); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!SAVE conv2d_3_tf1 -//!WIDTH conv2d_2_tf.w -//!HEIGHT conv2d_2_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_2_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_2_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.0647927, 0.053666476, -0.14723225, 0.027874574, -0.0003166473, 0.07337155, -0.061972085, -0.012667777, -0.17071614, 0.091927536, -0.051160213, 0.21336353, 0.13854574, 0.09582817, 0.032316446, 0.13838023) * go_0(-1.0, -1.0); - result += mat4(-0.0398984, 0.108049214, 0.093780346, -0.022015186, -0.15188989, -0.1381083, 0.2998843, 0.21623154, -0.08862326, 0.025862623, 0.06895634, 0.13529755, 0.06957801, -0.0011681129, 0.105972745, -0.04722446) * go_0(-1.0, 0.0); - result += mat4(-0.026321493, -0.04828038, -0.012545767, -0.005490858, -0.054038163, 0.075943105, -0.11526662, 0.022242405, -0.03543104, -0.12451852, -0.14911178, 0.013503498, 0.08773292, 0.09695139, -0.013498657, -0.27424073) * go_0(-1.0, 1.0); - result += mat4(0.018575635, -0.11321618, -0.07853153, 0.04104883, 0.0018416744, 0.11579002, 0.03685964, -0.031546146, -0.1755398, 0.23517849, -0.08095411, 0.031999595, -0.18542038, -0.26171613, -0.20567231, -0.05683613) * go_0(0.0, -1.0); - result += mat4(0.1538556, 0.21723682, 0.12131733, -0.15308167, 0.103326, -0.006956118, 0.043583486, -0.23811384, -0.103285454, 0.05543916, -0.37894246, 0.32072112, 0.22651967, 0.03516268, 0.34612176, 0.23688535) * go_0(0.0, 0.0); - result += mat4(0.040021293, 0.0029912095, 0.04885362, 0.061496444, 0.016926387, -0.118446946, 0.038948335, -0.0934512, -0.25194243, -0.054018084, -0.07149527, 0.017903058, 0.0845516, 0.33802906, 0.11953944, -0.081294954) * go_0(0.0, 1.0); - result += mat4(-0.09558082, -0.36974236, -0.07524102, 0.11131445, 0.047626104, 0.12854609, -0.10264962, -0.044669047, -0.05572307, 0.34475142, -0.16806377, -0.0037204176, 0.03400533, -0.04047774, 0.024379745, 0.09056291) * go_0(1.0, -1.0); - result += mat4(-0.039392482, 0.2553437, 0.11705501, 0.03219211, 0.073977776, -0.16610906, -0.032796364, -0.054669864, -0.07123178, 0.00079619256, -0.36920992, -0.029054813, 0.12830003, 0.004987549, 0.08724278, -0.029499404) * go_0(1.0, 0.0); - result += mat4(0.021272454, -0.063295126, 0.011779576, 0.103093, -0.011095461, 0.027948728, -0.014605259, -0.04723974, -0.05334346, -0.044831257, -0.07296399, -0.03314197, -0.01687865, -0.09261895, -0.06128567, 0.092708185) * go_0(1.0, 1.0); - result += mat4(0.0077418387, 0.00871427, 0.060824487, 0.1093608, -0.021077013, -0.057341542, -0.04769576, -0.08144089, 0.0212823, -0.06731425, -0.04134463, -0.0016761447, -0.03402026, 0.036424547, 0.11689576, -0.14946719) * go_1(-1.0, -1.0); - result += mat4(0.18536687, 0.020073935, 0.17041959, 0.024790209, 0.08397728, -0.13884324, 0.013950321, -0.055075396, -0.09317963, -0.05723721, -0.060491834, 0.0017911601, -0.109154835, 0.010338362, -0.1982491, -0.21752335) * go_1(-1.0, 0.0); - result += mat4(0.031852514, 0.031424347, 0.07817056, 0.07770759, 0.019805199, -0.091223724, 0.11914662, 0.1673029, -0.018734453, 0.16275099, 0.23245652, 0.36139074, -0.1396047, -0.14774057, 0.13756078, -0.123794965) * go_1(-1.0, 1.0); - result += mat4(-0.034937833, 0.20777488, 0.10104809, -0.035140667, 0.2536575, 0.010970045, 0.16896339, -0.081219964, -0.062478427, -0.0010431948, -0.027980985, 0.11446318, -0.127309, 0.21002083, 0.044436257, -0.16986957) * go_1(0.0, -1.0); - result += mat4(0.06309646, -0.042341243, 0.36642808, 0.18653205, 0.06973023, 0.06315932, -0.323688, 0.25672218, 0.042820994, 0.13792914, -0.12892757, -0.09220378, -0.18939693, 0.03862022, -0.17376114, -0.24673308) * go_1(0.0, 0.0); - result += mat4(-0.02130602, -0.35428852, -0.011634983, -3.9823462e-05, 0.110818714, -0.2981158, 0.060209107, 0.012538829, -0.0744833, -0.050204318, -0.12676497, -0.031484153, -0.28799182, 0.22338839, -0.070876874, -0.02102363) * go_1(0.0, 1.0); - result += mat4(-0.07929991, 0.014598492, 0.23034762, 0.024872296, 0.07480494, -0.17139243, -0.014421178, 0.056448363, -0.028626937, -0.022152562, 0.044871796, -0.048653606, 0.009350802, 0.019022083, -0.08554845, -0.0922645) * go_1(1.0, -1.0); - result += mat4(-0.027405115, 0.1831188, 0.28516722, 0.19882526, 0.27299204, -0.06910511, 0.03244419, -0.0031333128, 0.061055277, -0.114398144, 0.03729459, -0.07840815, -0.37776002, -0.24129418, -0.54815483, -0.2702045) * go_1(1.0, 0.0); - result += mat4(0.053723935, 0.13472083, 0.09563273, 0.19009806, -0.18722993, -0.25939655, -0.016197463, -0.067061596, 0.1647598, 0.061905228, 0.06191816, -0.018582113, -0.07218153, 0.11278394, 0.05478068, -0.104871586) * go_1(1.0, 1.0); - result += mat4(0.0036616288, -0.045782693, -0.226954, -0.05043515, -0.078096785, -0.036197383, 0.09269631, 0.016823346, -0.0060579977, -0.041455746, 0.09032774, -0.09217121, 0.058089796, 0.060311552, 0.033079024, 0.022586476) * go_2(-1.0, -1.0); - result += mat4(0.0436363, -0.079482526, 0.0027447809, 0.039558932, 0.13275702, 6.898711e-05, -0.21961488, -0.11315821, 0.0076181027, -0.025279062, -0.15829584, -0.063141204, 0.062049046, 0.13117202, -0.02435016, 0.109555416) * go_2(-1.0, 0.0); - result += mat4(-0.010148116, 0.056620967, -0.015910713, -0.07370375, 0.1529919, 0.005792597, 0.02771225, -0.17027487, 0.096740395, 0.063347995, 0.17823112, 0.054105148, 0.04995114, -0.28613812, 0.06369567, 0.15978208) * go_2(-1.0, 1.0); - result += mat4(-0.13688345, 0.16967694, -0.061759472, 0.013682004, -0.1290496, 0.07167547, -0.065592445, -0.17897636, 0.057080988, 0.035630587, 0.09140394, -0.08695068, 0.16807681, 0.014749346, 0.07875138, 0.034913708) * go_2(0.0, -1.0); - result += mat4(-0.098915346, -0.31459075, -0.10892429, 0.1557498, -0.19764107, -0.26881596, -0.03589311, 0.45288458, -0.34171388, 0.12675741, 0.18415868, -0.19770056, 0.29025507, -0.15812592, 0.09685835, 0.0027761247) * go_2(0.0, 0.0); - result += mat4(0.06425249, -0.01169722, 0.06379363, 0.053835012, -0.07356561, -0.06367294, 0.108630784, -0.14137438, 0.08536725, -0.03209748, 0.07250959, -0.014214082, 0.07170588, -0.25647813, 0.1092683, 0.18791042) * go_2(0.0, 1.0); - result += mat4(-0.023783233, 0.14261739, 0.102011986, -0.03633555, -0.05032627, 0.09378387, 0.11764051, 0.1353335, 0.032817088, -0.1352964, -0.00667997, -0.13388929, 0.022861317, 0.0037358075, 0.018605746, -0.0009892831) * go_2(1.0, -1.0); - result += mat4(0.22419162, -0.23105696, -0.09900454, -0.15831396, 0.12398773, 0.097933106, -0.13189293, 0.1330756, -0.19673057, -0.037342317, -0.13462654, -0.08974021, 0.030326528, -0.0815862, -0.118352115, 0.009187904) * go_2(1.0, 0.0); - result += mat4(-0.012130391, -0.06408448, 0.13710785, -0.06678414, -0.09970725, -0.14895032, -0.02366641, 0.029581001, -0.07101809, 0.09414698, 0.018300869, 0.009139046, -0.0027311493, -0.2359952, -0.011602826, -0.007582444) * go_2(1.0, 1.0); - result += mat4(-0.15473361, -0.06868751, -0.030721204, -0.08650113, 0.071349874, -0.08177769, 0.1611948, 0.18305337, -0.0144878505, 0.10975452, -0.026968453, -0.04909913, -0.059665974, 0.056036238, -0.11623168, -0.10584912) * go_3(-1.0, -1.0); - result += mat4(-0.096973225, 0.054132458, -0.010600018, 0.089397885, -0.0031138035, 0.037452973, 0.041115325, 0.1924831, 0.14759748, 0.032560788, -0.082884625, 0.0324635, -0.083511285, -0.050381303, 0.025589975, -0.0981257) * go_3(-1.0, 0.0); - result += mat4(-0.09183111, 0.034952193, -0.048511654, 0.020719057, 0.1863456, 0.01902738, 0.14455654, -0.008500172, 0.16385981, -0.07806569, -0.031216217, -0.17002788, -0.08882952, 0.07335293, -0.2223089, 0.01706056) * go_3(-1.0, 1.0); - result += mat4(-0.08361569, 0.046698716, -0.016646344, 0.09351987, 0.0054158634, -0.13641126, -0.12396605, 0.011380122, 0.040951792, -0.11222528, -0.0031548145, -0.0022303525, 0.0350846, -0.03280425, -0.09972476, -0.113325305) * go_3(0.0, -1.0); - result += mat4(-0.19961461, -0.27561286, -0.12783135, -0.062596925, 0.005870981, -0.24796526, 0.18717633, -0.16945636, -0.076396205, -0.08411448, 0.13751988, 0.21014418, -0.008655945, -0.09848541, -0.14536901, -0.2132181) * go_3(0.0, 0.0); - result += mat4(0.14118621, 0.20831147, -0.020545695, 0.008340737, 0.016840864, -0.16912372, -0.121718146, 0.15108089, -0.19803092, -0.07827729, -0.047639225, -0.12277847, 0.04974115, -0.09349339, -0.2756667, -0.19581003) * go_3(0.0, 1.0); - result += mat4(-0.0036992705, 0.16539848, 0.022026122, 0.07740234, -0.035687633, -0.004568715, 0.017408118, -0.09757294, -0.094941914, -0.3381112, -0.12724453, 0.025583982, -0.18571027, 0.047607586, -0.0704089, -0.055323426) * go_3(1.0, -1.0); - result += mat4(0.13821335, 0.028168043, 0.09990671, -0.032266147, -0.067236245, 0.11512147, -0.112986445, -0.10818019, -0.10062181, 0.21276556, 0.01681818, 0.069806606, 0.09628121, 0.06456379, 0.10394843, -0.02343886) * go_3(1.0, 0.0); - result += mat4(0.041937463, 0.072631165, 0.045366894, -0.0046993676, 0.03946691, 0.121010706, -0.030089365, -0.007266469, 0.0092267515, 0.14853416, -0.033248078, -0.027284347, -0.10031526, 0.15864117, -0.16782752, -0.18466589) * go_3(1.0, 1.0); - result += vec4(0.07722432, -0.025165567, 0.034291282, -0.09902708); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!SAVE conv2d_4_tf -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.004729794, -0.0124398535, -0.08538641, -0.058604605, 0.008671952, 0.25604513, 0.020800482, 0.24144122, -0.028920606, -0.04705229, 0.030192787, 0.0010597534, 0.017666103, 0.0041322373, 0.20027764, 0.08919112) * go_0(-1.0, -1.0); - result += mat4(0.0001626656, 0.05816014, -0.0060765734, 0.08811165, 0.35835367, -0.016291425, -0.56892496, 0.083845764, 0.15026698, -0.15916558, 0.08069463, -0.3931291, -0.0123534845, -0.111639686, -0.14637001, -0.08171439) * go_0(-1.0, 0.0); - result += mat4(-0.114976816, 0.023376396, 0.13855027, 0.07438716, -0.069991484, 0.20377779, 0.23929878, -0.040769435, 0.018832395, 0.005638609, -0.091848075, 0.027843866, 0.023744943, -0.06620523, -0.11678267, 0.0844119) * go_0(-1.0, 1.0); - result += mat4(0.0035854098, -0.08432094, -0.17799544, -0.10041983, 0.25605857, 0.021009786, 0.030499447, -0.09928291, 0.052178737, -0.08286175, -0.057888374, 0.024606042, 0.046342995, 0.13875343, 0.11279266, 0.19826262) * go_0(0.0, -1.0); - result += mat4(-0.016232021, -0.21539623, 0.0936961, 0.021143785, 0.094262615, 0.049040064, 0.40978724, 0.15347758, 0.08884813, -0.24887115, -0.14756748, -0.5020875, 0.112477, 0.1466549, -0.33418837, 0.5769466) * go_0(0.0, 0.0); - result += mat4(-0.16832942, -0.07354198, -0.12081261, -0.055348314, 0.39716053, 0.25583258, 0.09870877, 0.2151021, -0.025700683, -0.1801462, -0.04616654, -0.02782245, -0.054461803, -0.00042802413, -0.00163228, -0.004240747) * go_0(0.0, 1.0); - result += mat4(-0.05193433, -0.0018198475, -0.17647028, -0.19462106, 0.1538165, 0.054894235, 0.12183955, 0.07340974, -0.0019901982, 0.0357373, -0.07597063, -0.06681543, -0.00090057997, -0.053894397, -0.010301875, -0.16553953) * go_0(1.0, -1.0); - result += mat4(-0.30873474, -0.2836045, 0.057037193, -0.5016378, 0.11952749, 0.102353275, 0.2351629, -0.14635189, -0.019398788, -0.08776502, 0.021669978, -0.089918956, -0.2187901, -0.1180891, -0.049789533, -0.16109149) * go_0(1.0, 0.0); - result += mat4(-0.078335494, -0.08867304, 0.03349591, -0.1000293, -0.20235832, 0.22917585, -0.09905303, 0.08381748, 0.014350217, -0.14478815, -0.027479894, -0.026432173, -0.10309177, -0.09860884, -0.019177807, -0.06963025) * go_0(1.0, 1.0); - result += mat4(0.008169383, 0.12532842, -0.23369955, 0.077973194, 0.09076616, -0.021277165, 0.1721421, -0.26914293, -0.014729218, -0.023279984, -0.057670787, 0.003598546, -0.015225789, -0.0115396585, -0.26196182, -0.10724508) * go_1(-1.0, -1.0); - result += mat4(0.16542235, 0.06589374, 0.07410237, 0.26753154, -0.3356288, 0.3096256, 0.07112498, -0.0992165, 0.15020338, -0.11021673, 0.18803611, 0.12918204, 0.109007336, -0.031968266, 0.057093572, 0.035949256) * go_1(-1.0, 0.0); - result += mat4(0.065006174, 0.031055925, 0.0390232, -0.01678507, -0.21553491, 0.14171642, -0.19541772, -0.033691674, -0.06241631, 0.07497651, 0.024557155, 0.056778047, -0.060191352, -0.0261998, 0.07493729, -0.0699132) * go_1(-1.0, 1.0); - result += mat4(-0.008541382, 0.020270415, -0.027760057, -0.040962905, -0.26732433, 0.34379438, -0.23012447, 0.0051356517, -0.04059567, 0.0972959, 0.039965224, -0.14796777, -0.0016924662, -0.116963714, -0.026353523, -0.29799464) * go_1(0.0, -1.0); - result += mat4(0.03329303, -0.12663862, -0.0004959157, -0.11162377, 0.26238343, 0.43260252, -0.16504994, 0.10727678, -0.22505566, 0.43474057, 0.43304008, 0.05143919, 0.40494493, 0.08689636, -0.035733614, 0.25727916) * go_1(0.0, 0.0); - result += mat4(0.12175736, -0.014467151, -0.17461288, -0.18480565, -0.26439998, 0.307935, -0.058916792, -0.014292711, -0.0569471, 0.10751278, -0.04134206, 0.1847734, -0.07519831, -0.033909313, -0.05001451, -0.136606) * go_1(0.0, 1.0); - result += mat4(0.1424893, -0.026820501, 0.19645774, -0.0011315406, -0.14680974, 0.07662838, 0.21108222, 0.13260938, 0.17923595, -0.085527614, 0.08217639, 0.06579479, 0.05985784, -0.09016323, 0.11172888, 0.111903176) * go_1(1.0, -1.0); - result += mat4(0.19842595, 0.0093640275, 0.10433465, 0.13341904, -0.082806975, 0.22555825, -0.1315717, 0.11907785, 0.24012424, 0.47776055, 0.1835734, 0.17483878, 0.079803735, 0.01155073, -0.21146573, -0.16484722) * go_1(1.0, 0.0); - result += mat4(0.15064004, 0.021381427, 0.18301587, 0.21225913, 0.054995645, 0.03212186, 0.052798916, -0.048424408, 0.03609021, 0.0964704, -0.059469886, -0.05133066, -0.08157349, 0.051145166, -0.09107608, -0.1362262) * go_1(1.0, 1.0); - result += mat4(0.090521574, -0.014747857, -0.081675015, -0.118686825, 0.04848682, -0.033071827, 0.008534588, 0.023765508, 0.16849907, -0.21797262, -0.17049783, -0.07824179, -0.033794608, 0.052612655, 0.095820345, -0.07262317) * go_2(-1.0, -1.0); - result += mat4(0.22816367, -0.13772108, -0.036353834, -0.47638395, -0.0530902, 0.14089061, 0.076203234, 0.18006112, 0.121814854, -0.20750527, 0.08266107, -0.28634354, 0.14301859, -0.13458411, 0.00501663, -0.039783802) * go_2(-1.0, 0.0); - result += mat4(-0.103384845, -0.14389835, 0.08275834, -0.068423435, 0.22643796, -0.02966374, -0.2847584, 0.037081387, 0.02349005, -0.19353923, -0.00095957273, -0.13623689, -0.073120415, 0.03941467, 0.21864155, -0.014019576) * go_2(-1.0, 1.0); - result += mat4(-0.082576886, 0.17085212, 0.08971252, -0.04213377, -0.032548156, 0.022137715, 0.08399252, -0.0011743539, -0.09410863, -0.41728264, -0.20709297, -0.18933547, 0.027059928, 0.09743364, 0.2504647, -0.041173562) * go_2(0.0, -1.0); - result += mat4(-0.20924084, 0.291118, 0.029851688, 0.16953468, 0.02936709, 0.12213576, 0.22944322, 0.108747594, 0.0001881129, -0.27398208, -0.009702691, 0.15449248, -0.9472944, -0.26114875, -0.28161275, -0.3495961) * go_2(0.0, 0.0); - result += mat4(-0.12994622, -0.2758638, -0.1091727, -0.0968308, -0.14323105, 0.035175014, -0.08023811, 0.006023802, -0.031529594, -0.1486306, -0.3398172, -0.23240276, -0.29163983, 0.173475, 0.18809283, 0.22197202) * go_2(0.0, 1.0); - result += mat4(0.048254848, -0.083444916, -0.014334202, 0.060992356, -0.023099286, -0.09492961, 0.05592045, 0.0026059286, 0.08998117, -0.108810075, -0.053304546, 0.045926623, 0.068255246, 0.099023566, 0.01595483, 0.1336309) * go_2(1.0, -1.0); - result += mat4(0.21916585, 0.2837387, 0.14624594, 0.18843961, -0.06747584, 0.054924384, -0.082568415, 0.05011459, 0.014297759, -0.3884833, -0.054417178, -0.18970548, 0.088336475, -0.030646667, -0.2980552, -0.030035203) * go_2(1.0, 0.0); - result += mat4(-0.02748568, -0.011897529, -0.2370837, -0.016740574, -0.0282112, 0.050353892, -0.10761107, -0.00036999505, 0.037646662, -0.17742962, 0.06489219, -0.158852, -0.08016933, 0.07808515, -0.105895035, 0.079869986) * go_2(1.0, 1.0); - result += mat4(-0.0058994526, -0.037170693, 0.2574696, 0.06199102, -0.04497728, -0.10667442, -0.15183865, 0.0212881, -0.030842574, 0.073473394, 0.010764398, -0.00084518327, -0.03893014, -0.009649613, 0.07443129, 0.15108284) * go_3(-1.0, -1.0); - result += mat4(0.11325495, -0.096435815, -0.097331434, -0.049700152, -0.17231967, 0.047090057, -0.019111065, 0.104790315, -0.15004838, 0.13950798, 0.055996202, -0.070548095, 0.047154237, -0.007650949, -0.053611025, -0.012242293) * go_3(-1.0, 0.0); - result += mat4(0.12787002, -0.04958212, 0.053988468, 0.0017896162, 0.049493514, -0.009475431, -0.0022641935, 0.03933694, -0.005174597, 0.043754533, -0.1432976, 0.037084177, -0.04601288, -0.032077815, -0.059897035, 0.12584484) * go_3(-1.0, 1.0); - result += mat4(0.019409029, 0.10492923, 0.268368, 0.12597778, -0.17733063, -0.0085961, -0.27136415, -0.049664587, 0.012515404, -0.21444482, -0.39275557, -0.12297177, 0.06800057, 0.19228315, 0.06245887, 0.35772634) * go_3(0.0, -1.0); - result += mat4(-0.16317715, 0.2288402, -0.23235172, 0.22230752, -0.1646375, 0.13366091, 0.16681044, -0.17399235, 0.33997267, -0.3179832, -0.34756508, 0.39843196, -0.10748536, 0.322923, 0.23339489, 0.08684083) * go_3(0.0, 0.0); - result += mat4(0.02835275, 0.12314228, 0.24030593, 0.30856124, 0.055735108, -0.044914473, 0.0031432225, 0.07469899, 0.1778018, 0.107083894, -0.023706734, -0.15501897, 0.0943098, -0.034707237, -0.18622099, 0.05257965) * go_3(0.0, 1.0); - result += mat4(0.042839274, 0.12597966, 0.08979042, -0.0647561, -0.050434645, 0.049438696, -0.20008127, -0.05572608, 0.046238814, 0.12622325, -0.019017145, -0.13960391, -0.040050175, 0.14298008, -0.20270552, 0.13391526) * go_3(1.0, -1.0); - result += mat4(-0.0073277587, 0.10606624, -0.08940439, -0.09656414, 0.12387374, -0.0013147948, 0.23607181, -0.00037969893, 0.050353236, -0.17266603, 0.27796733, -0.09877832, 0.02711225, 0.096394345, 0.07457944, 0.21541388) * go_3(1.0, 0.0); - result += mat4(-0.18612787, -0.00027517386, -0.17136407, -0.06413671, 0.025629476, -0.04570916, 0.0008431566, -0.03419168, 0.08123608, 0.09465922, 0.11975521, 0.1269741, 0.08413221, 0.12125001, 0.04727287, 0.072378494) * go_3(1.0, 1.0); - result += vec4(0.04244928, -0.014280219, 0.017129054, -0.08807801); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!SAVE conv2d_4_tf1 -//!WIDTH conv2d_3_tf.w -//!HEIGHT conv2d_3_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_3_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_3_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.01973856, -0.05053795, 0.015545361, 0.10867395, 0.33441806, 0.14731607, 0.6793983, -0.21394718, -0.00846322, 0.09146322, -0.07427475, -0.078477465, -0.090998545, 0.133366, 0.105515696, -0.13784988) * go_0(-1.0, -1.0); - result += mat4(-0.05404873, 0.09784018, -0.1337389, -0.18082313, 0.13461179, -0.3816801, 0.12209786, 0.08176651, 0.10461896, -0.43315184, 0.017470734, 0.20423968, -0.03941875, -0.101959296, -0.09440259, 0.09154717) * go_0(-1.0, 0.0); - result += mat4(0.17229515, -0.06907825, -0.008382803, -0.16671611, -0.01576541, 0.03985307, 0.08209482, -0.11707446, -0.11793074, 0.13702396, -0.02013158, 0.07302033, -0.022301994, -0.11464677, 0.036753565, -0.093276784) * go_0(-1.0, 1.0); - result += mat4(-0.017650167, 0.009475923, -0.17856382, 0.15925962, 0.06434641, -0.15568036, 0.038135886, 0.18855911, -0.04427734, 0.1878215, 0.10856261, 0.0041275816, -0.12046199, 0.13610138, 0.3741596, -0.12934728) * go_0(0.0, -1.0); - result += mat4(-0.24631616, 0.0169485, -0.035534818, 0.37795424, -0.08546174, 0.07817259, 0.42897213, -0.47965595, -0.0146556785, -0.20510523, -0.18889453, 0.06476019, 0.1021008, -0.35398817, -0.031071864, -0.21416448) * go_0(0.0, 0.0); - result += mat4(0.32810766, 0.050585747, -0.17658374, -0.13881154, 0.16417882, -0.21286008, -0.106835455, -0.1722344, -0.14151084, 0.08962986, 0.057395387, -0.01623662, 0.02570415, 0.15626897, -0.12687978, 0.080729105) * go_0(0.0, 1.0); - result += mat4(-0.050597478, -0.018753758, -0.036346875, -0.017908493, 0.058593344, 0.008303028, 0.05254987, -0.06635018, -0.022532012, 0.029511122, 0.026682215, -0.054647952, 0.069466785, -0.08892492, 0.025351115, -0.023130694) * go_0(1.0, -1.0); - result += mat4(0.2412473, -0.16138165, -0.15117447, 0.11851003, -0.096868426, 0.082690425, 0.27923304, 0.11590443, 0.19363573, -0.15770023, -0.066793665, 0.011681678, 0.14037277, -0.112065665, -0.048159517, 0.009453693) * go_0(1.0, 0.0); - result += mat4(0.1580054, -0.0060506654, 0.05267837, -0.09178131, -0.09107123, 0.23191126, 0.21108283, -0.070422985, 0.024321035, 0.06131459, 0.066626504, 0.032481454, 0.044402298, 0.1390604, -0.14432502, 0.040869843) * go_0(1.0, 1.0); - result += mat4(0.10264861, 0.013504324, 0.012482852, -0.1781206, -0.12799414, -0.27026084, -0.123830505, 0.098105, -0.039127555, 0.09367889, 0.122323096, 0.1416734, 0.044763107, -0.21801683, -0.14018978, 0.17646866) * go_1(-1.0, -1.0); - result += mat4(0.017453065, 0.11498537, -0.10998983, -0.3116098, -0.3099762, 0.5024706, 0.051817298, 0.03170681, -0.18937826, 0.07946567, -0.11978771, -0.09523745, -0.0033551592, -0.11768945, 0.08932359, -0.06689581) * go_1(-1.0, 0.0); - result += mat4(0.1507582, -0.013266159, -0.073085934, -0.07252967, -0.06301927, -0.13218755, 0.12984878, -0.13678701, 0.023422396, 0.082123175, 0.006906731, -0.004018426, -0.15813835, 0.13711788, 0.016018609, 0.13443229) * go_1(-1.0, 1.0); - result += mat4(-0.06960673, 0.16156524, -0.1374069, -0.05803206, -0.077960715, -0.10676749, 0.26282015, 0.03521529, 0.058099385, -0.014738148, 0.0011174522, 0.24279532, -0.023991548, -0.108812414, -0.08886019, 0.20584475) * go_1(0.0, -1.0); - result += mat4(-0.08043308, 0.063343, 0.055290066, -0.15991378, -0.08096304, -0.23888679, 0.019161629, 0.38381267, 0.3672934, -0.119608454, -0.43623593, -0.46014485, -0.5323366, 0.1318621, 0.087373205, -0.05535459) * go_1(0.0, 0.0); - result += mat4(0.20640239, -0.1369444, -0.21677823, 0.08202178, 0.10515278, 0.06810837, 0.073207974, 0.23623931, 0.102422275, -0.05016664, -0.0039228587, -0.1810343, -0.2235563, -0.1246854, 0.1428113, -0.10609135) * go_1(0.0, 1.0); - result += mat4(-0.031941894, -0.08905056, 0.21501167, 0.11244667, -0.011811734, 0.21630247, 0.07589472, -0.040489636, -0.11824066, -0.11520391, -0.10075633, -0.035642453, 0.062144946, 0.0073282206, 0.14119269, -0.060479023) * go_1(1.0, -1.0); - result += mat4(-0.29382935, -0.056808118, 0.051812876, -0.061358813, -0.08344258, 0.124203674, 0.037964176, -0.01961274, -0.000951725, 0.50005037, -0.24176972, 0.06487161, -0.15469861, 0.04336187, 0.17826353, 0.040010225) * go_1(1.0, 0.0); - result += mat4(0.02044482, -0.0879271, -0.01053958, -0.31148303, 0.07497373, -0.11548258, -0.1666126, 0.02369657, -0.058044076, 0.010801491, -0.005933901, -0.08910467, 0.007953008, 0.03761974, -0.029501524, 0.16816042) * go_1(1.0, 1.0); - result += mat4(0.1779597, -0.10213089, 0.29942423, -0.016642543, -0.015537001, -0.04676146, 0.09585872, -0.0055750017, -0.014361908, -0.20667697, -0.11348746, 0.13081487, -0.10437329, 0.14328459, 0.11648822, -0.09163837) * go_2(-1.0, -1.0); - result += mat4(0.019033967, -0.12420627, -0.07748253, 0.43203858, -0.109799065, 0.07605535, 0.060791396, -0.24517195, -0.15674245, 0.21267459, 0.10665515, -0.073150024, -0.1358355, 0.0054066703, -0.16434059, -0.06031853) * go_2(-1.0, 0.0); - result += mat4(-0.18834068, 0.26840356, -0.12937617, 0.16103932, -0.0062331813, -0.13630053, -0.013911821, 0.022389365, -0.044232946, -0.056454606, 0.022426741, 0.18010215, 0.041900013, 0.03375041, -0.11376866, -0.010313381) * go_2(-1.0, 1.0); - result += mat4(0.12497669, -0.31161824, 0.097568035, 0.19443443, -0.05056519, -0.0031457904, 0.1055554, -0.083650924, 0.07630523, -0.34177595, -0.093093194, 0.20701368, -0.030962149, -0.054470222, -0.23853977, 0.004326528) * go_2(0.0, -1.0); - result += mat4(0.34370202, 0.085750066, -0.16071722, -0.54335934, -0.35595295, -0.050744478, -0.17405547, 0.008628697, -0.007086256, 0.23164117, 0.340156, 0.5475976, -0.15292351, 0.28019544, 0.038059216, 0.0044727) * go_2(0.0, 0.0); - result += mat4(-0.08231968, -0.0052294536, 0.07451547, 0.22278999, -0.3305531, 0.0017458396, 0.10818422, -0.21325395, -0.08807993, -0.110342845, 0.10082142, -0.051594347, 0.24192205, -0.18042035, -0.0095462985, -0.08757798) * go_2(0.0, 1.0); - result += mat4(0.096379586, 0.021887815, -0.05097233, -0.06797989, -0.026171045, 0.022944937, -0.015915364, 0.037667938, 0.17216732, -0.014889412, 0.07343887, 0.028236505, 0.0015047621, 0.1355103, -0.09918284, -0.07673695) * go_2(1.0, -1.0); - result += mat4(-0.25385055, 0.15163356, 0.0030003798, 0.18464413, 0.05611221, 0.099498056, -0.07128191, 0.042955168, 0.027493173, 0.07440157, 0.07814497, 0.096160784, 0.13571084, 0.056412842, -0.031997006, -0.16073681) * go_2(1.0, 0.0); - result += mat4(-0.21634746, 0.025153082, -0.064477116, 0.0005679147, -0.0029436245, 0.12794618, 0.024849026, 0.03018052, 0.11723976, 0.059955597, -0.013594654, 0.09091745, 0.04775348, 0.21260159, -0.07463213, -0.06727042) * go_2(1.0, 1.0); - result += mat4(-0.12166018, 0.024545137, 0.08611618, -0.17627168, 0.09042604, -0.14157623, -0.22147785, 0.09100581, 0.11078359, 0.031410985, -0.17170976, 0.09532806, -0.059569277, 0.09392676, 0.11784347, -0.21471368) * go_3(-1.0, -1.0); - result += mat4(0.1483187, -0.2217563, 0.12032977, 0.14932398, 0.27428308, -0.04568031, 0.12670338, 0.09586169, 0.06700745, 0.005126449, 0.0027694793, -0.033667028, 0.06447861, -0.08585174, -0.05509812, -0.11358761) * go_3(-1.0, 0.0); - result += mat4(-0.22750492, 0.032906335, -0.029479047, 0.11580199, -0.05812372, -0.032269973, 0.05219915, 0.041658226, 0.010897959, 0.065550454, 0.0076911976, -0.045743827, 0.11614996, -0.10393113, -0.0012606392, -0.034367524) * go_3(-1.0, 1.0); - result += mat4(0.09350742, 0.09561609, 0.3735968, 0.031685118, -0.042026598, 0.17006761, -0.3910107, 0.16984761, 0.25679177, 0.036610503, -0.13772772, 0.11101589, -0.1137049, 0.07211461, 0.18065079, -0.12324793) * go_3(0.0, -1.0); - result += mat4(-0.020749722, 0.14413361, -0.061903823, -0.21550268, 0.31306142, -0.11532895, 0.029482557, 0.03282164, -0.09800627, -0.20765196, 0.33030233, 0.075725295, 0.49252015, 0.042455837, -0.07264194, -0.10401895) * go_3(0.0, 0.0); - result += mat4(-0.22697076, -0.15738785, 0.09740376, -0.072098814, -0.06638972, 0.12336611, 0.0073687397, 0.048267826, 0.06717852, -0.027047804, -0.123397194, 0.17829034, 0.04215185, 0.066311836, -0.061742183, -0.046373066) * go_3(0.0, 1.0); - result += mat4(0.041311592, 0.2813485, 0.055084586, -0.01823069, 0.08105147, -0.087944716, -0.10135052, -0.02653456, 0.063169874, -0.1351186, 0.06722432, -0.016406318, 0.08666922, 0.0555909, 0.12086502, -0.17224412) * go_3(1.0, -1.0); - result += mat4(0.26026788, -0.18303715, 0.029279215, -0.12858874, 0.027197823, 0.0919464, 0.00849638, 0.10547888, -0.12952055, -0.14414985, 0.1903315, 0.05004528, -0.12657289, 0.038008716, -0.036606666, -0.054025438) * go_3(1.0, 0.0); - result += mat4(0.069167465, 0.2699947, -0.11137602, -0.05888806, -0.107324794, -0.07598601, 0.06042177, 0.0064530694, -0.039780665, -0.076666445, -0.00846108, -0.06165907, -0.06978219, -0.19108103, -0.040026028, -0.120319635) * go_3(1.0, 1.0); - result += vec4(-0.14375664, -0.0056876075, 0.052177623, 0.07152566); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!SAVE conv2d_5_tf -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.15667982, -0.31441393, 0.29112124, -0.15737213, 0.022372838, 0.10690639, -0.12019085, -0.051941186, -0.30367845, 0.02612279, 0.2372532, 0.2021648, -0.20481086, -0.003770439, 0.14981231, 0.066780254) * go_0(-1.0, -1.0); - result += mat4(0.03270688, -0.42270073, 0.044317324, 0.15907793, 0.14681059, -0.2934784, 0.24933252, -0.067273855, 0.07752533, -0.23194817, 0.0686707, 0.08999225, 0.121678345, -0.12916678, 0.012397381, 0.012315053) * go_0(-1.0, 0.0); - result += mat4(-0.10090412, -0.20792678, 0.11076032, -0.02938975, -0.1944187, -0.2003259, 0.04438032, 0.36946484, -0.019868722, -0.15830222, 0.042811528, 0.015641417, 0.113098525, 0.080257006, 0.011135628, -0.2877629) * go_0(-1.0, 1.0); - result += mat4(0.15482685, 0.06579119, 0.28301102, 0.23729764, 0.15990537, 0.4529694, 0.107880585, 0.10668121, -0.42430598, -0.2631025, 0.10513542, -0.036242936, -0.09827965, -0.0069260495, -0.11689201, -0.041436482) * go_0(0.0, -1.0); - result += mat4(0.08472191, -0.13051608, 0.047930017, 0.36831668, 0.1164478, 0.21384816, 0.22062506, 0.2094167, 0.48668453, 0.32302913, 0.36268055, -0.091801375, -0.079141125, -0.26613805, -0.16608004, 0.03810683) * go_0(0.0, 0.0); - result += mat4(-0.13474251, -0.04824603, 0.23303726, -0.116136365, 0.0056330245, 0.15829784, 0.0012259148, 0.12648389, 0.038680512, 0.05131116, 0.024099711, 0.4555406, 0.0035716395, 0.11633299, 0.094744846, -0.2457627) * go_0(0.0, 1.0); - result += mat4(-0.0576871, -0.04037522, 0.16857862, 0.0031084458, -0.027274646, -0.18154246, 0.13337846, 0.035422433, -0.0030749738, -0.17288287, 0.019983152, -0.31871706, -0.03280405, 0.06825421, -0.1563798, 0.05031885) * go_0(1.0, -1.0); - result += mat4(-0.066631876, 0.012560506, 0.1690693, -0.018248236, 0.0450104, 0.016296914, -0.14910112, -0.16191053, 0.5078224, -0.017615631, 0.15226597, -0.13373777, 0.20148668, 0.060258996, 0.13215344, 0.18430072) * go_0(1.0, 0.0); - result += mat4(0.12976126, -0.072738245, 0.053067926, 0.09752956, -0.04716214, 0.04136464, 0.014162617, -0.06621296, -0.09617736, 0.057469178, 0.01280261, -0.042976785, -0.12570308, 0.006027807, 0.031038594, 0.06569918) * go_0(1.0, 1.0); - result += mat4(-0.12655424, -0.41563693, -0.030971345, -0.06357555, -0.14121394, -0.15667427, 0.14398985, 0.05995984, 0.0821605, 0.12462943, 0.007492498, -0.0030187522, -0.22804567, -0.10487421, 0.13180672, -0.13978589) * go_1(-1.0, -1.0); - result += mat4(-0.075991526, 0.12352044, -0.17844258, 0.010614991, -0.18293494, 0.25009897, -0.080779895, 0.21548378, 0.22215544, 0.048670914, -0.057372037, 0.078176, 0.17490411, 0.004919551, 0.059619516, 0.12660357) * go_1(-1.0, 0.0); - result += mat4(-0.06282951, 0.10929357, 0.026720649, -0.15939257, 0.17107709, -0.04334904, -0.03047162, -0.101681694, 0.03118431, 0.19994627, 0.025729552, 0.035035726, -0.0012207883, -0.08618888, 0.061205562, 0.009940555) * go_1(-1.0, 1.0); - result += mat4(-0.23581573, 0.08002133, -0.15170844, 0.08872338, -0.25767094, -0.09273545, 0.18153891, 0.2544269, -0.084598936, -0.089766875, -0.14610913, 0.002247754, 0.1802837, -0.019625561, 0.30239686, -0.032793984) * go_1(0.0, -1.0); - result += mat4(0.5223286, 0.10347663, 0.4000593, 0.25440502, -0.07646958, -0.31940606, 0.053407036, -0.09356492, 0.2738851, 0.23945184, -0.2907089, -0.45822915, 0.13415676, 0.17187089, 0.08731114, -0.27670014) * go_1(0.0, 0.0); - result += mat4(0.059273496, -0.107137166, 0.12087539, 0.179237, -0.021209063, -0.02548005, 0.061256204, 0.033822674, 0.54491127, -0.2475085, 0.08055858, -0.4071213, -0.045093834, 0.07161349, 0.08219979, -0.31735933) * go_1(0.0, 1.0); - result += mat4(-0.29527053, 0.021469543, 0.07202354, -0.07103959, 0.03990857, 0.2490762, -0.19419849, -0.13916986, -0.05325315, 0.12922864, -0.041463424, -0.031249814, 0.073991664, -0.09723187, 0.35132217, 0.024760868) * go_1(1.0, -1.0); - result += mat4(0.09606787, -0.0951808, -0.0059865676, -0.052033573, -0.3118038, 0.4432636, -0.12943317, 0.09484738, 0.10621756, -0.10550469, 0.11264014, 0.1402276, -0.012679125, -0.08809835, 0.029994955, -0.15121669) * go_1(1.0, 0.0); - result += mat4(0.123397775, 0.048338536, -0.00975707, -0.103767075, -0.041053303, -0.07228534, 0.046792876, 0.0668788, 0.29554394, 0.012451002, 0.19568972, 0.112091154, 0.10882395, -0.0995439, 0.051324263, 0.24967718) * go_1(1.0, 1.0); - result += mat4(0.2699648, 0.17300771, -0.16056584, 0.1099392, 0.11674778, -0.19811755, 0.111880325, -0.06075038, -0.095849104, -0.04510651, -0.04180761, -0.0052786698, 0.11037549, -0.24115366, 0.018509468, -0.07819484) * go_2(-1.0, -1.0); - result += mat4(0.10981622, 0.044488225, 0.050722387, -0.3146652, -0.0013019707, -0.24084032, -0.10475088, 0.026944289, 0.1592903, 0.33087498, 0.061839584, -0.043863457, -0.06904603, -0.08635262, 0.088630445, -0.15485142) * go_2(-1.0, 0.0); - result += mat4(-0.06810522, 0.19927117, -0.08130387, 0.11612667, -0.015104349, -7.738651e-05, -0.06419643, -0.14813533, 0.026650215, 0.015038833, 0.08161237, 0.058321163, 0.015005185, -0.16189656, 0.024501886, 0.1927279) * go_2(-1.0, 1.0); - result += mat4(0.31858218, 0.11962043, -0.20560326, -0.13190113, 0.02138715, -0.057066392, -0.085771754, -0.124566585, 0.044749223, 0.13687828, 0.1195792, 0.14021616, 0.26204133, 0.05119197, -0.13980037, 0.050747477) * go_2(0.0, -1.0); - result += mat4(-0.21238558, -0.0734057, -0.2036023, -0.34308743, -0.29370925, 0.2393742, -0.37877437, 0.036869828, -0.17053255, -0.26900926, -0.23330869, 0.32902205, -0.4882585, 0.27430108, -0.033711653, 0.15501487) * go_2(0.0, 0.0); - result += mat4(0.23487025, 0.085289046, -0.14281847, 0.12543266, 0.15871634, -0.13858907, 0.14810285, -0.0239261, 0.1286852, 0.07754033, 0.01072327, -0.14313328, 0.05480442, -0.12195059, 0.11341822, 0.08224607) * go_2(0.0, 1.0); - result += mat4(0.19490337, 0.023521842, -0.24548791, 0.0035114093, -0.07937166, -0.07674376, 0.08365873, -0.003286068, 0.023862893, 0.009626835, 0.032829892, 0.0078141205, 0.053484406, -0.08297165, 0.09303188, 0.004273738) * go_2(1.0, -1.0); - result += mat4(-0.0032906602, 0.13636959, 0.027821168, 0.06270053, 0.024775786, -0.077529594, 0.03799126, 0.030000908, 0.031749167, 0.04360487, 0.004448846, -0.17835903, -0.30834544, 0.013150946, -0.13758293, -0.03296242) * go_2(1.0, 0.0); - result += mat4(-0.14166978, 0.034131095, 0.049779188, 0.09453289, -0.011406557, -0.07020709, -0.0031981543, -0.03443845, -0.00010218944, 0.0855161, -0.10951453, 0.042758763, 0.1718446, -0.1577923, 0.0410027, -0.04992991) * go_2(1.0, 1.0); - result += mat4(0.1219178, 0.105126485, -0.041097324, -0.08110963, -0.04857337, -0.11544925, -0.14572923, 0.092435546, 0.091857366, 0.15425235, -0.020324683, -0.05764375, -0.020458939, -0.10527823, -0.085554086, 0.16358297) * go_3(-1.0, -1.0); - result += mat4(-0.12372687, -0.009976829, 0.14252265, -0.1321053, -0.05965866, -0.1393898, -0.017603246, -0.02714342, -0.16824952, -0.23083204, -0.012299022, -0.06689838, -0.015830487, 0.21299921, -0.11637202, 0.0074968333) * go_3(-1.0, 0.0); - result += mat4(-0.01979935, -0.182785, -0.015397454, 0.14175794, -0.011465284, 0.11285164, -0.036115747, 0.07150463, -0.083641894, -0.10221778, -0.13871445, 0.099696055, 0.04603662, -0.06463785, -0.007984529, -0.0032940735) * go_3(-1.0, 1.0); - result += mat4(0.072830334, -0.057334073, 0.09086239, 0.13039105, 0.06350303, 0.17130788, -0.2181585, -0.09137403, -0.31397742, -0.019071499, -0.017274613, 0.13762084, 0.10195637, -0.021455176, 0.04011394, -0.08029658) * go_3(0.0, -1.0); - result += mat4(-0.26982597, -0.40265098, -0.4151411, 0.038557775, -0.095602125, 0.3503172, -0.029988842, -0.03484708, 0.095536314, -0.0030311556, 0.31589827, 0.52763534, -0.12629713, -0.24356791, 0.0059487303, 0.42298427) * go_3(0.0, 0.0); - result += mat4(0.054166105, 0.18827972, -0.081673265, -0.06720384, 0.09375001, 0.22173035, -0.14050071, 0.108400136, -0.15553835, -0.08716729, -0.037366748, 0.10971073, -0.02560103, -0.26702073, -0.05201882, 0.2432563) * go_3(0.0, 1.0); - result += mat4(0.16196893, 0.0889265, -0.09887943, -0.042956755, -0.054403376, -0.123823255, 0.045847844, 0.017027669, 0.00539936, -0.112265736, 0.050549984, -0.104931094, -0.06883012, -0.25745714, 0.11155538, -0.15363649) * go_3(1.0, -1.0); - result += mat4(-0.22157209, 0.18200903, -0.13290548, 0.026721261, -0.06066069, -0.18150693, 0.08768983, 0.037362453, -0.1073367, -0.070236765, -0.41223463, -0.168915, -0.15517351, -0.13949952, -0.13307643, -0.15935421) * go_3(1.0, 0.0); - result += mat4(-0.026589906, 0.0930502, 0.05195435, 0.06301585, -0.01107014, -0.019382332, 0.027223695, -0.004045145, -0.15238355, -0.0345132, 0.06355168, 0.0011230056, 0.16690113, 0.0017829507, -0.0023939044, -0.09471834) * go_3(1.0, 1.0); - result += vec4(0.024455175, 0.01669877, -0.066231176, 0.036848705); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!SAVE conv2d_5_tf1 -//!WIDTH conv2d_4_tf.w -//!HEIGHT conv2d_4_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_4_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_4_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.01763509, -0.17156707, -0.06841296, -0.026132878, -0.10600523, 0.11245994, 0.121395074, -0.09331501, 0.12764473, 0.0428028, -0.11837395, 0.2092563, -0.04357652, -0.0490096, 0.024701532, 0.10518723) * go_0(-1.0, -1.0); - result += mat4(-0.17130826, -0.31987694, -0.07639005, 0.21362033, 0.058639023, 0.066175915, -0.25344703, -0.07923442, -0.14766373, 0.040518284, -0.031103026, -0.040075514, -0.051108997, -0.28214613, -0.18504949, 0.27544948) * go_0(-1.0, 0.0); - result += mat4(0.030991005, -0.011353306, 0.15237464, 0.15458584, 0.1250524, 0.19959912, 0.14049476, 0.38410887, 0.07378578, -0.017728366, 0.0963528, -0.043756213, -0.039577194, -0.11800575, -0.08392266, -0.07599512) * go_0(-1.0, 1.0); - result += mat4(0.022089608, -0.027317125, 0.051330008, -0.0075439885, 0.021650828, -0.0009390209, -0.12043464, 0.049332134, -0.055557396, -0.053297505, -0.0918705, -0.13089466, -0.10994107, 0.072746456, 0.11496739, -0.05225977) * go_0(0.0, -1.0); - result += mat4(0.29730305, 0.26317745, 0.052159555, -0.32006654, 0.48288685, -0.049926184, -0.08091092, -0.13825637, -0.1485706, -0.288657, -0.41443697, 0.06856032, -0.23809211, -0.12953928, 0.4783034, -0.47557938) * go_0(0.0, 0.0); - result += mat4(0.026139118, -0.23031352, 0.04861487, 0.033556074, 0.2702056, 0.22802536, -0.15385233, 0.1664119, 0.18749923, 0.36927548, -0.011473684, -0.11771165, -0.16859052, -0.4513202, 0.12863952, 0.02482837) * go_0(0.0, 1.0); - result += mat4(0.0073229345, -0.061915245, 0.06710329, 0.0062416573, -0.00555983, 0.14592186, 0.11201052, -0.123630054, 0.32611257, -0.11279885, -0.059449438, 0.2891043, -0.10519016, 0.040108994, -0.012468261, 0.02083298) * go_0(1.0, -1.0); - result += mat4(-0.057483062, 0.08454755, -0.15529329, -0.12572923, 0.2600099, -0.02319978, -0.04037675, 0.11496361, 0.07728194, -0.12908956, -0.025529336, 0.112581626, 0.02971823, 0.11659056, -0.01298622, 0.017061908) * go_0(1.0, 0.0); - result += mat4(0.22417091, -0.00222947, 0.04980858, 0.12260437, -0.025507605, 0.042577885, 0.120813504, -0.048522256, -0.038494784, -0.0072195013, -0.23012944, -0.020850847, -0.078296244, -0.014830018, 0.19759563, -0.10000253) * go_0(1.0, 1.0); - result += mat4(-0.032090195, 0.023757193, -0.08989734, 0.14419042, 0.0112194475, -0.093776144, -0.020197887, 0.29295877, 0.06872183, 0.09511462, -0.03245769, -0.06504889, 0.05132126, 0.00399527, 0.075911656, 0.250893) * go_1(-1.0, -1.0); - result += mat4(-0.3418496, 0.25525784, 0.0018161442, 0.028484365, -0.17573346, -0.12457501, 0.18466166, 0.20209278, 0.10282706, 0.16353399, 0.025052028, -0.059714165, -0.055806916, -0.28651386, 0.112798095, 0.11624314) * go_1(-1.0, 0.0); - result += mat4(-0.018793896, 0.07500149, -0.01728254, -0.1726998, -0.13333, 0.09590344, -0.036537904, -0.11522523, 0.19445558, 0.22680458, 0.12061006, -0.06225618, 0.1127748, 0.28380096, -0.07099846, -0.007440302) * go_1(-1.0, 1.0); - result += mat4(-0.43887648, -0.10018577, -0.29267642, 0.12149727, -0.14333835, 0.04161915, 0.19442867, 0.16506511, 0.09655387, -0.0014398015, 0.13189743, -0.14068556, 0.049408, 0.0829072, 0.2950336, 0.36965907) * go_1(0.0, -1.0); - result += mat4(0.41486958, -0.023498302, -0.37900022, -0.31752598, 0.13758768, -0.18782206, -0.31358528, 0.3330786, -0.4039293, -0.06539036, 0.032599606, 0.10663507, -0.26369813, -0.17365438, 0.20723309, 0.1801556) * go_1(0.0, 0.0); - result += mat4(0.004117444, -0.14894462, 0.14915143, -0.047375835, -0.2609916, -0.10172324, -0.14925237, -0.33830285, 0.12131607, -0.18156646, -0.42382464, -0.052582145, 0.2329045, -0.4576963, 0.13756892, 0.055571318) * go_1(0.0, 1.0); - result += mat4(-0.31689477, 0.017058033, -0.01904924, -0.016893756, -0.011479519, 0.07316262, -0.07086077, 0.08923511, -0.08190091, -0.025866933, -0.06909204, -0.028601022, 0.023224542, 0.03082087, 0.2230426, -0.16713654) * go_1(1.0, -1.0); - result += mat4(0.13457374, 0.110913865, -0.1130815, -0.031438913, -0.55201167, 0.04831016, 0.25107765, -0.014003224, 0.19532952, 0.02062346, 0.04839241, 0.088673405, 0.30325848, -0.20222804, -0.085780576, 0.22512968) * go_1(1.0, 0.0); - result += mat4(0.076354, 0.021940092, -0.16170324, 0.0025543426, -0.0032400405, -0.0046705627, 0.06241069, -0.031247333, 0.098353796, 0.03723474, 0.22971998, -0.017877292, 0.119858086, 0.008041448, 0.2140585, 0.10343376) * go_1(1.0, 1.0); - result += mat4(0.08627595, 0.04532834, 0.027579082, -0.16222088, 0.15583228, -0.14371829, -0.07243855, -0.111895435, -0.14438897, -0.10250594, 0.0034202964, -0.066547595, -0.034390844, -0.021545287, 0.014540157, -0.10215731) * go_2(-1.0, -1.0); - result += mat4(0.19720152, 0.21534947, 0.1130938, -0.011730973, 0.013247983, -0.10344174, -0.1906514, -0.015767017, -0.020093633, -0.26487067, -0.005960781, -0.057149183, 0.030110173, 0.047692046, -0.19308545, -0.25292158) * go_2(-1.0, 0.0); - result += mat4(0.039498243, 0.053682897, -0.01844695, -0.017540915, 0.039454967, -0.27696076, 0.09503274, -0.038958035, 0.17321438, -0.036311295, 0.03123055, 0.02310311, 0.040591653, 0.0054627894, -0.03520426, -0.026101988) * go_2(-1.0, 1.0); - result += mat4(0.055991564, 0.06512919, -0.12532505, 0.024075158, -0.04926237, -0.11701171, 0.026792146, 0.013033238, -0.052847516, -0.01550091, -0.008442071, -0.077945165, -0.033220004, -0.13678443, -0.07040586, 0.121846326) * go_2(0.0, -1.0); - result += mat4(-0.19537796, -0.016634773, 0.10707109, -0.024361614, -0.16002733, -0.44066608, 0.16488662, 0.013152995, 0.22407806, 0.12854017, 0.19028598, -0.08379244, -0.05594235, -0.15909895, 0.511962, 0.39027596) * go_2(0.0, 0.0); - result += mat4(-0.032652248, 0.06004893, 0.011166194, 0.102761306, -0.035113614, -0.29961765, -0.013817978, 0.20938557, 0.08488225, -0.1118558, -0.0375328, -0.035511103, 0.0046933405, 0.20203683, -0.13552529, -0.12685429) * go_2(0.0, 1.0); - result += mat4(0.03054923, 0.08224908, -0.059128158, -0.02583655, -0.02133876, 0.0048713544, 0.10848829, 0.06324404, 0.028332822, -0.011002306, -0.027557913, -0.06072362, 0.1019048, -0.02587316, 0.08563405, -0.08119947) * go_2(1.0, -1.0); - result += mat4(-0.10568117, 0.1075248, 0.19379964, -0.14337265, 0.019374132, -0.0907804, -0.13827625, -0.03628561, 0.014735499, -0.026882607, -0.25948793, 0.034926686, -0.05988073, -0.22735636, 0.053511668, 0.04765336) * go_2(1.0, 0.0); - result += mat4(-0.029848114, 0.09183966, 0.084713496, 0.09422864, 0.069713995, -0.10584984, -0.020899031, 0.059645247, -0.075805016, -0.01828552, 0.06689195, -0.13804196, -0.023465823, -0.034038994, -0.12946706, 0.058709413) * go_2(1.0, 1.0); - result += mat4(0.061918218, 0.038984764, 0.013660938, -0.19340219, -0.014949839, 0.12946278, 0.12725051, 0.13429146, 0.05993008, -0.015394284, 0.011232483, 0.0344157, 0.022161875, -0.023923954, 0.061736204, 0.025963215) * go_3(-1.0, -1.0); - result += mat4(0.048136763, 0.03162042, -0.01967249, 0.06374493, 0.034645267, 0.22403605, 0.036197048, -0.06903216, -0.1024706, -0.0005459356, 0.049185563, 0.16309108, 0.07394778, 0.10351343, 0.28430694, -0.13531347) * go_3(-1.0, 0.0); - result += mat4(-0.14705071, -0.09458433, 0.03063114, 0.07901115, -0.11911086, -0.06428132, -0.013549552, -0.041342866, -0.20770676, -0.15104479, 0.054365363, -0.11652907, 0.05639815, 0.070518605, 0.0017846811, -0.00056205114) * go_3(-1.0, 1.0); - result += mat4(0.27148908, 0.07358356, 0.13644488, -0.13824654, 0.0112991175, -0.021521023, -0.10197379, 0.007816017, -0.13314332, 0.12318473, -0.043214846, -0.15759036, -0.19744353, -0.10267182, -0.28249928, 0.11233295) * go_3(0.0, -1.0); - result += mat4(-0.096474804, 0.17893109, 0.014679829, -0.21218887, -0.24170275, 0.10603527, 0.05375366, -0.059315052, 0.17087384, 0.13633691, -0.37958893, 0.43264794, 0.17829923, 0.06485103, -0.37551817, -0.22082718) * go_3(0.0, 0.0); - result += mat4(-0.30536333, -0.033212308, -0.25232, 0.11730442, -0.11176368, 0.26223183, -0.049025323, -0.01375941, -0.29028055, 0.16842811, -0.035684332, -0.4180911, -0.1611732, 0.07683385, -0.14263596, 0.17508087) * go_3(0.0, 1.0); - result += mat4(0.23580009, 0.025621435, -0.15757325, 0.008123166, -0.021905439, -0.02162503, -0.059497356, -0.01636353, 0.047654126, -0.084423855, -0.033733923, 0.0127116265, -0.059593942, -0.053935718, -0.050729543, 0.013887048) * go_3(1.0, -1.0); - result += mat4(-0.19232626, 0.07915767, -0.05909752, 0.007695347, 0.058876406, 0.057521783, -0.080253534, 0.2011056, -0.27965516, -0.08033169, -0.13025513, 0.12854645, 0.053400308, -0.18445957, -0.18463044, 0.27920377) * go_3(1.0, 0.0); - result += mat4(-0.061806213, -0.020037206, 0.003183183, -0.029844081, -0.039553937, 0.028905323, -0.11367984, -0.097321615, -0.10112643, 0.0039709485, -0.06020118, -0.23871279, -0.077974856, 0.05806996, -0.21440302, 0.11898043) * go_3(1.0, 1.0); - result += vec4(-0.023832673, 0.03702965, -0.04749135, -0.10982549); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!SAVE conv2d_6_tf -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.030931145, 0.013683292, -0.0650242, -0.028732346, 0.120067924, -0.029404473, 0.0038229884, -0.14631765, 0.041900825, -0.076596744, -0.11096378, -0.27100095, 0.0052598766, -0.05929686, -0.06816563, -0.086864315) * go_0(-1.0, -1.0); - result += mat4(-0.043620087, -0.16360405, 0.006527374, 0.15706524, 0.08338088, -0.19027525, 0.22595987, -0.054963548, 0.01825031, -0.03149212, 0.025471251, 0.06429379, -0.011633275, -0.079389006, -0.0030728737, 0.17345747) * go_0(-1.0, 0.0); - result += mat4(-0.011275288, -0.10668036, 0.05718997, 0.010336089, 0.33393976, -0.2029354, 0.075444475, -0.092244044, 0.07605498, 0.20125951, 0.10493973, -0.12306946, 0.03658231, 0.08233366, -0.12205888, -0.116969004) * go_0(-1.0, 1.0); - result += mat4(-0.0070305974, 0.105127215, 0.006041873, 0.26743913, 0.028119443, 0.14823505, -0.28344348, 0.12362866, -0.1215781, 0.08104382, 0.102011785, 0.085380934, 0.061244503, -0.06230063, -0.05353345, 0.1166729) * go_0(0.0, -1.0); - result += mat4(0.08945733, 0.4101902, -0.06404005, 0.040728435, 0.13076581, -0.20805469, -0.10897316, -0.14924604, 0.10090762, 0.015475414, 0.26346552, 0.12096677, -0.20199244, 0.2780031, 0.18515368, 0.35105625) * go_0(0.0, 0.0); - result += mat4(0.07463155, 0.26932517, -0.06768551, 0.10470878, -0.1423996, 0.013550665, -0.06167201, -0.1022994, -0.3107166, -0.15609552, 0.1695213, -0.1277181, 0.12582655, -0.1596128, 0.015612055, -0.19826376) * go_0(0.0, 1.0); - result += mat4(0.011745468, 0.006471601, 0.008110513, 0.025831396, 0.1272883, -0.221959, 0.11993834, -0.007903633, 0.009993582, -0.10170755, 0.026594637, -0.027883623, 0.030666083, -0.036415886, 0.007469573, 0.0674783) * go_0(1.0, -1.0); - result += mat4(-0.022760388, -0.10911659, -0.012589904, -0.046462692, 0.36987287, 0.71668935, -0.04466556, 0.12082762, 0.0026539841, 0.07070946, -0.00020439121, -0.13925348, 0.08672072, 0.20075354, -0.066352285, 0.14655356) * go_0(1.0, 0.0); - result += mat4(-0.081081845, -0.21956222, 0.06781787, -0.106362104, -0.03016425, -0.010460211, -0.009725996, -0.009805538, 0.07037355, 0.19254607, 0.038890257, 0.29580075, -0.10355764, 0.12613009, 0.02485986, -0.031927988) * go_0(1.0, 1.0); - result += mat4(-0.13882205, 0.21770848, 0.015392157, 0.010310204, 0.008225721, 0.07457836, 0.09984027, -0.25452816, 0.2193511, -0.22262146, -0.12950355, 0.026151875, 0.022114651, -0.030566849, 0.034688126, 0.03047327) * go_1(-1.0, -1.0); - result += mat4(0.0363441, 0.19290726, -0.1143055, 0.30871987, -0.05780708, 0.082128406, -0.115280904, 0.07636388, 0.48947453, -0.29715258, 0.146737, -0.3275992, -0.055972476, -0.09991753, 0.17435446, 0.10917291) * go_1(-1.0, 0.0); - result += mat4(0.026389305, 0.054523308, -0.028950177, 0.06913328, -0.18626037, 0.08829993, 0.10407121, 0.001246911, 0.103938825, -0.3117343, -0.045564886, 0.07316613, 0.0027089121, 0.099437356, -0.046500806, -0.0927284) * go_1(-1.0, 1.0); - result += mat4(0.051037624, -0.2068234, 0.061572235, -0.3345198, 0.16960172, -0.30289862, -0.002583443, 0.39312238, 0.08246557, 0.16374862, -0.31902805, -0.13205275, -0.032050006, 0.01670186, 0.13852347, 0.120012194) * go_1(0.0, -1.0); - result += mat4(-0.67096996, -0.06274476, 0.18575665, 0.80282855, 0.23201196, -0.0054729837, 0.050396994, -0.42014772, 0.34904522, 0.26281372, 0.24697208, 0.55475426, 0.49850988, -0.06581312, -0.0068906257, -0.15741143) * go_1(0.0, 0.0); - result += mat4(-0.04252036, -0.28224963, 0.009723064, 0.116357096, 0.2992567, -0.26702902, -0.05648925, 0.12729199, -0.37574205, 0.54211813, -0.25248805, -0.13023548, 0.18903324, -0.5182459, 0.0141203115, -0.19444294) * go_1(0.0, 1.0); - result += mat4(-0.0017735233, -0.010132458, -0.040924776, -0.13767008, 0.20757031, -0.06509882, -0.09756446, 0.018974079, 0.090851985, -0.010158765, -0.03999607, -0.12055641, 0.03629025, -0.018645551, -0.05506811, -0.014202848) * go_1(1.0, -1.0); - result += mat4(0.16203491, 0.011118734, -0.18486023, -0.024290733, -0.3673846, -0.20295864, 0.23055002, -0.1555852, -0.02706522, 0.03262891, 0.008724611, -0.03760652, -0.20946771, -0.01951837, 0.16955496, 0.11690098) * go_1(1.0, 0.0); - result += mat4(0.0783421, 0.22656651, -0.15715368, -0.024174158, 0.020260733, 0.032390315, -0.029133298, 0.086601086, 0.13871798, -0.12525433, 0.16097449, 0.058946393, 0.029865682, 0.08508385, 0.040569812, -0.09402932) * go_1(1.0, 1.0); - result += mat4(-0.05063873, 0.11269313, -0.057484943, -0.13579641, 0.047973365, -0.07103839, -0.07838756, -0.0028928046, -0.019466015, 0.018428024, 0.010016324, -0.057396665, -0.19495595, 0.034307264, -0.022888038, 0.08112259) * go_2(-1.0, -1.0); - result += mat4(-0.09790086, 0.10613111, 0.06611674, 0.19356097, -0.00073371036, -0.019078335, 0.076719105, -0.016212497, -0.3283475, -0.07547389, -0.08140701, 0.3185625, -0.25060275, 0.16820994, -0.123497784, 0.43272668) * go_2(-1.0, 0.0); - result += mat4(-0.06365342, 0.11186735, -0.17493224, -0.04207358, 0.0003117533, 0.034089327, -3.067692e-05, -0.03422754, 0.16267666, 0.054771993, 0.048384454, -0.041866794, 0.0036008756, 0.0021496525, 0.20258942, -0.06297619) * go_2(-1.0, 1.0); - result += mat4(0.03578836, 0.08763908, -0.22370125, -0.32465744, 0.019142643, 0.011316954, 0.17920344, 0.031633645, 0.03766343, -0.116487674, -0.05281752, -0.018965483, 0.049297336, -0.34511214, 0.42598158, 0.051361635) * go_2(0.0, -1.0); - result += mat4(0.26638633, -0.33628765, 0.04437907, 0.09616201, -0.020049393, 0.2560829, -0.027108455, 0.255752, 0.3666511, 0.052277412, -0.46667686, 0.48482272, 0.51302284, -0.06941614, -0.17967525, -0.07889891) * go_2(0.0, 0.0); - result += mat4(0.18503937, 0.088710256, 0.2083147, -0.20758459, -0.036416974, 0.018303726, 0.03729963, -0.035969947, -0.2685231, -0.42169708, -0.039593916, -0.02642618, 0.29050872, -0.25723743, -0.111259766, 0.15001127) * go_2(0.0, 1.0); - result += mat4(-0.026473878, -0.07241443, 0.022400148, -0.03214132, 0.0859297, -0.0036677981, -0.07039137, 0.03703108, 0.042322673, -0.01222808, -0.08151938, 0.033109214, -0.048737407, 0.25929528, -0.40535828, -0.123594694) * go_2(1.0, -1.0); - result += mat4(0.10233285, 0.22455986, -0.13368733, 0.033236265, -0.052114893, -0.11709317, 0.009709581, 0.19201641, -0.02973698, 0.032114245, -0.09771862, 0.085680574, 0.15827927, -0.15042172, 0.21833214, -0.13262676) * go_2(1.0, 0.0); - result += mat4(-0.08460587, -0.09473209, 0.019323658, -0.057233352, 0.0019434267, -0.14437936, 0.034232683, 0.0030602294, -0.023598112, 0.10692026, -0.09960999, 0.005887181, 0.014738836, -0.32473162, -0.10886747, -0.08365826) * go_2(1.0, 1.0); - result += mat4(0.10900178, 0.00080280803, -0.14009437, -0.053074867, -0.07811151, -0.03456029, -0.104943685, 0.016918905, -0.11335709, 0.079421654, 0.13481963, 0.037818357, -0.027339859, 0.05856774, -0.044562265, 0.03908084) * go_3(-1.0, -1.0); - result += mat4(0.07628258, -0.23815769, 0.2840278, -0.3541637, -0.044292126, -0.09310441, -0.1335055, -0.031899665, -0.11981227, 0.24012394, -0.041896038, -0.10168982, 0.20248915, -0.10036763, -0.044115108, 0.08520525) * go_3(-1.0, 0.0); - result += mat4(0.07234102, -0.119480744, -0.01401321, -0.025182616, -0.031284854, -0.050089385, 0.014808948, 0.038662236, -0.18539418, 0.017342187, 0.023812262, 0.13428104, 0.020824855, -0.07433546, 0.054307282, 0.08511016) * go_3(-1.0, 1.0); - result += mat4(-0.11046813, -0.04663274, 0.33497185, 0.023273284, -0.24681108, 0.116665915, 0.12045893, 0.13306482, -0.039098527, 0.04747061, 0.042796664, 0.053514794, 0.011861975, -0.048702, 0.008408589, -0.09497112) * go_3(0.0, -1.0); - result += mat4(0.34634927, 0.37973458, -0.79267627, -0.7362719, 0.35489878, -0.07635863, 0.24082923, -0.27480397, -0.3236968, -0.25523046, 0.05118527, -0.040529836, -0.6000509, 0.39020586, 0.27632973, 0.5141453) * go_3(0.0, 0.0); - result += mat4(0.16761221, -0.033125393, 0.00561569, 0.083019435, -0.101278506, 0.07810264, 0.12060661, 0.16048536, 0.14257826, -0.15996903, 0.018831912, -0.094429865, -0.22227801, 0.426937, -0.054677445, 0.05067348) * go_3(0.0, 1.0); - result += mat4(0.02233958, 0.02608942, -0.045318656, 0.06509929, 0.035911568, 0.025316885, 0.0840986, 0.08326237, 0.048455603, -0.13630742, 0.07230253, -0.047261715, -0.092630014, 0.04786565, 0.10354939, -0.07094341) * go_3(1.0, -1.0); - result += mat4(-0.1463382, -0.14900577, 0.2835977, -0.106733374, -0.11554754, -0.168429, -0.1411373, -0.20654152, -0.06388508, 0.039648015, 0.08543832, -0.13253337, 0.017264463, -0.06346233, -0.10823598, 0.067361064) * go_3(1.0, 0.0); - result += mat4(0.04419582, 0.039152585, 0.06222691, 0.05757103, 0.012084537, 0.051425997, -0.061130576, 0.16752882, 0.07497411, 0.13495837, -0.15585983, -0.02050144, -0.08555421, -0.09147339, 0.025115604, 0.05948922) * go_3(1.0, 1.0); - result += vec4(0.00590038, 0.03082865, 0.002111702, -0.03330112); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x3x3x16 -//!HOOK MAIN -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!SAVE conv2d_6_tf1 -//!WIDTH conv2d_5_tf.w -//!HEIGHT conv2d_5_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define go_0(x_off, y_off) (max((conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_1(x_off, y_off) (max((conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -#define go_2(x_off, y_off) (max(-(conv2d_5_tf_texOff(vec2(x_off, y_off))), 0.0)) -#define go_3(x_off, y_off) (max(-(conv2d_5_tf1_texOff(vec2(x_off, y_off))), 0.0)) -vec4 hook() { - vec4 result = mat4(0.009029573, 0.029218858, 0.029705316, -0.019268971, -0.0023235187, -0.072589695, 0.1424836, 0.09049359, 0.04342995, 0.18134294, 0.018145641, 0.14789368, 0.050923645, 0.06524081, 0.036812488, 0.11108108) * go_0(-1.0, -1.0); - result += mat4(-0.026506428, 0.016968496, 0.015961196, 0.010030791, -0.3141888, -0.06769598, -0.23920257, -0.031002127, -0.07351358, -0.19290134, -0.24282931, -0.18831016, -0.0928966, 0.075177215, -0.19699521, -0.05810917) * go_0(-1.0, 0.0); - result += mat4(-0.017991852, -0.079427645, 0.035970494, -0.017095685, -0.27197137, -0.20046075, 0.2616644, 0.021876303, -0.077394076, -0.04978692, 0.20363241, -0.013741705, -0.032103598, 0.14403099, 0.01442474, 0.048115995) * go_0(-1.0, 1.0); - result += mat4(-0.16939245, -0.001777, 0.026244136, -0.14122388, -0.056853324, 0.54357284, -0.19769607, -0.03187079, 0.04559263, -0.16048127, 0.12830622, 0.1442168, 0.006611398, -0.01618195, 0.012860053, -0.16539487) * go_0(0.0, -1.0); - result += mat4(0.13116026, -0.006161343, 0.7209969, 0.18338475, 0.3099777, 0.6500026, 0.3883795, -0.021434233, 0.31667513, 0.008917659, 0.14124091, -0.22335114, 0.12198921, -0.16449445, 0.08773425, 0.30054978) * go_0(0.0, 0.0); - result += mat4(-0.10413989, -0.10316161, 0.04342709, -0.021252686, 0.120892406, 0.37798002, -0.35963747, 0.021069285, 0.37587845, -0.08159587, 0.011139747, 0.2501104, -0.094568014, 0.037900843, -0.025109999, -0.030106556) * go_0(0.0, 1.0); - result += mat4(0.09680291, -0.040868275, 0.051731605, 0.089064725, -0.56098557, -0.38148618, -0.017037416, 0.08508287, -0.019247344, 0.019857002, -0.03512887, 0.031057188, -0.09648583, -0.04474188, 0.028748507, -0.11880965) * go_0(1.0, -1.0); - result += mat4(-0.010236943, 0.04257042, -0.08202597, -0.004203426, -0.26801527, -0.11716526, -0.017402772, -0.05819106, -0.13394608, 0.0234606, -0.15404865, -0.06801164, -0.0047627664, -0.1975249, 0.09420144, 0.23249897) * go_0(1.0, 0.0); - result += mat4(0.107361935, 0.07373787, 0.06242962, 0.05236332, -0.028867323, 0.025924044, -0.042526353, -0.0015729597, -0.1323144, -0.4040712, 0.023919407, -0.09535502, 0.049100045, 0.081110805, 0.08946112, 0.058505684) * go_0(1.0, 1.0); - result += mat4(0.13236825, -0.04468476, -0.04426802, 0.031087106, -0.09093992, -0.07470971, -0.01591504, 0.05924266, -0.21910913, 0.065537, -0.18358919, -0.02533145, -0.1512009, -0.04953928, 0.015540006, -0.0043442883) * go_1(-1.0, -1.0); - result += mat4(-0.14016777, -0.1086958, 0.16316028, 0.050777458, 0.23148167, 0.04944809, -0.10599886, -0.10447021, -0.40729257, -0.10926556, 0.069055155, 0.110635415, 0.108922414, -0.1716362, 0.10743909, -0.102534756) * go_1(-1.0, 0.0); - result += mat4(0.017795928, -0.066930935, 0.09396082, 0.092585504, 0.14223933, 0.059458215, 0.072033696, -0.04507726, -0.19956456, 0.1251282, -0.31733638, -0.10465904, 0.08546377, 0.048638333, 0.031372465, -0.08720661) * go_1(-1.0, 1.0); - result += mat4(0.108719654, -0.092161916, -0.014724377, 0.20068261, -0.24350016, 0.2113636, -0.07483714, -0.45665312, -0.25134233, 0.2753893, -0.11324696, -0.04472, 0.1576102, -0.045395147, 0.06013951, -0.12507361) * go_1(0.0, -1.0); - result += mat4(0.546225, -0.281897, 0.19477816, -0.116612464, -0.3145171, -0.41660902, 0.333625, 0.35902345, 0.48333502, 0.4662005, 0.10222491, -0.15314859, -0.3036888, 0.22849742, 0.20740797, 0.41399437) * go_1(0.0, 0.0); - result += mat4(0.007284074, 0.0393942, -0.31192186, -0.15687793, -0.289214, -0.015956698, -0.24718472, -0.1637855, -0.00765037, 0.26677555, 0.20215511, 0.37790874, -0.22096673, 0.25287116, -0.2446764, -0.13610223) * go_1(0.0, 1.0); - result += mat4(-0.16734968, 0.16721225, -0.053508647, -0.041097626, 0.062356673, 0.07812319, -0.263546, -0.39739034, 0.003389846, 0.12676363, -0.13175991, -0.19019242, -0.011847587, -0.007580052, -0.023946386, 0.046034034) * go_1(1.0, -1.0); - result += mat4(-0.17047611, 0.13298693, -0.07506747, -0.045542978, 0.33571973, 0.20192616, 0.30674616, 0.25668672, -0.24134545, 0.031693842, -0.009647641, 0.040534843, 0.03159419, -0.1100516, 0.11371316, 0.06098735) * go_1(1.0, 0.0); - result += mat4(-0.05518961, 0.19402988, -0.09646874, -0.059196774, -0.0073436056, -0.1381309, 0.06868669, 0.061328378, -0.1480867, -0.15774113, -0.022572191, 0.122521356, -0.04067007, -0.10145177, 0.13006335, -0.099452734) * go_1(1.0, 1.0); - result += mat4(0.06962972, 0.07768411, 0.021085173, 0.108355984, -0.03132525, 0.10220273, -0.11626593, -0.14104277, 0.018778645, -0.024237925, 0.048783034, 0.09074447, 0.4120426, -0.01948466, 0.073218934, 0.055681944) * go_2(-1.0, -1.0); - result += mat4(-0.22553118, -0.12923603, -0.22068842, -0.35037905, 0.005709937, -0.09528472, 0.08718399, 0.13200706, 0.17220478, 0.096844435, -0.30439013, -0.14122063, 0.15733318, -0.1014675, 0.33836862, 0.042193163) * go_2(-1.0, 0.0); - result += mat4(0.15826897, -0.034870047, 0.09295099, -0.17674965, -0.042326324, 0.06680338, -0.074267656, -0.0631393, -0.11267909, -0.19795708, 0.22005288, 0.35703793, 0.033995766, -0.12663686, -0.02449896, -0.123250045) * go_2(-1.0, 1.0); - result += mat4(0.021434195, 0.058398597, 0.04828315, -0.0016824572, -0.04291545, -0.0744907, -0.07698706, -0.15937585, -0.18852457, -0.17966963, 0.023800725, 0.025979731, -0.51412296, -0.018316887, -0.23076254, -0.12298674) * go_2(0.0, -1.0); - result += mat4(0.16054317, -0.0002730893, -0.54173076, -0.62443435, 0.04300197, -0.08529622, 0.15392275, 0.15742144, 0.025834514, -0.2800517, -0.17600477, 0.0020806703, -0.3010582, 0.45233512, 0.25595665, 0.103661336) * go_2(0.0, 0.0); - result += mat4(-0.024034392, -0.43800178, 0.28606912, -0.20908915, 0.078471914, -0.030501373, -0.059055753, 0.050494444, 0.063274644, -0.025071034, 0.17561312, -0.100698635, -0.25631955, 0.039981876, -0.18506624, 0.08366402) * go_2(0.0, 1.0); - result += mat4(-0.1413656, 0.03589635, -0.020917566, 0.017598262, 0.020156413, -0.018854238, 0.027228508, -0.03806087, -0.021715842, 0.071974196, -0.040065665, 0.08459291, -0.23530225, 0.16599682, -0.2772327, 0.10041177) * go_2(1.0, -1.0); - result += mat4(-0.055056706, 0.1286236, -0.11890451, -0.1790546, 0.16517544, -0.040448934, 0.12548013, 0.017075695, 0.07185459, -0.13236302, 0.19354409, 0.12767012, 0.31120765, 0.16378082, -0.036915366, -0.19724306) * go_2(1.0, 0.0); - result += mat4(-0.02225051, 0.033263147, 0.003279449, 0.08826271, -0.047833472, 6.574577e-05, 0.13721916, 0.04801998, -0.014958419, 0.08791209, -0.08076282, 0.024002168, -0.18028922, 0.23835851, -0.23309888, -0.119310364) * go_2(1.0, 1.0); - result += mat4(0.044960875, 0.18821983, 0.027640678, 0.013462449, 0.19011214, 0.21559924, -0.03329638, 0.07234414, 0.030880248, -0.11273214, 0.102028474, 0.12203351, 0.035855662, 0.008828778, 0.007218363, -0.012421797) * go_3(-1.0, -1.0); - result += mat4(-0.09450626, 0.025191775, -0.10738468, 0.16237053, 0.073676676, 0.12488881, -0.048748355, 0.007877263, 0.3572506, -0.07911043, 0.14684045, 0.0015310893, -0.33411503, -0.1151223, 0.004201752, 0.017775744) * go_3(-1.0, 0.0); - result += mat4(-0.10607509, -0.008143826, -0.08448629, -0.27557802, 0.0046665915, 0.008158659, 0.030826218, 0.020516023, 0.2333065, -0.017463414, -0.041772116, -0.03027809, -0.028166672, -0.080471426, 0.048199337, 0.08341059) * go_3(-1.0, 1.0); - result += mat4(-0.14640257, -0.18334304, -0.061674733, 0.0008892598, -0.2374775, -0.2721524, -0.040371176, 0.26362613, 0.19872928, -0.11246391, 0.0842288, 0.11188515, 0.0045209546, -0.04250933, -0.0738212, -0.069005966) * go_3(0.0, -1.0); - result += mat4(-0.08760266, 0.4816288, -0.21241407, 0.22734411, -0.1783721, -0.26842996, 0.099888, -0.2867675, 0.085521065, -0.3780281, -0.018543908, -0.039699722, 0.75688565, -0.5333645, 0.47567275, 0.09518891) * go_3(0.0, 0.0); - result += mat4(-0.04072665, 0.05998423, -0.48314768, -0.29495844, 0.10358383, -0.09816629, 0.028586809, -0.047708735, 0.008320228, 0.04089551, -0.18359782, -0.27615002, 0.12414414, -0.072417594, 0.25932562, 0.30268723) * go_3(0.0, 1.0); - result += mat4(0.14481631, 0.06484443, -0.09898657, -0.06553556, 0.25750044, -0.07265585, 0.12903488, -0.022347894, -0.04693863, -0.000107379274, 0.030295763, -0.0325354, 0.086214684, -0.021326948, 0.039682828, -0.034843277) * go_3(1.0, -1.0); - result += mat4(-0.031971477, -0.25145087, 0.03931631, 0.14262606, -0.06044626, 0.22820354, -0.10506207, 0.18064679, 0.0069641788, 0.01477993, -0.003626875, 0.118767865, 0.109416224, -0.002998205, 0.035680585, 0.07843882) * go_3(1.0, 0.0); - result += mat4(0.03375426, -0.059815384, 0.11632834, -0.12411481, 0.022583738, 0.02544465, -0.054889992, -0.07031964, -0.10140042, 0.16750422, -0.1448294, -0.09316004, 0.035582513, -0.026138382, -0.031955894, 0.040148776) * go_3(1.0, 1.0); - result += vec4(-0.03573331, 0.032919675, 0.011109369, 0.008329268); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x1x1x112 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!SAVE conv2d_last_tf -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define g_0 (max((conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_1 (max((conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_2 (max(-(conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_4 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_5 (max((conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_6 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_8 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_9 (max((conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_10 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_12 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_13 (max((conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_14 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_15 (max(-(conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_16 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_17 (max((conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_18 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_19 (max(-(conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_20 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_21 (max((conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_22 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_23 (max(-(conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_24 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_25 (max((conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -#define g_26 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_27 (max(-(conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(-0.11498094, -0.053904895, -0.11520678, -0.05479549, 0.028396055, 0.032767884, 0.052479446, 0.05257866, -0.25706592, -0.3454966, -0.24713765, -0.2854201, -0.10287636, 0.0023146886, -0.09190338, -0.011193905) * g_0; - result += mat4(-0.05461422, 0.008780496, -0.07738697, -0.032230727, -0.047554165, -0.025061952, -0.051897213, -0.009545297, -0.14548294, -0.15184018, -0.01313442, -0.015299784, -0.0007883845, -0.12866738, -0.15260352, -0.27081275) * g_1; - result += mat4(0.11007706, 0.035344437, 0.11020841, 0.0425353, 0.1613199, 0.18417408, 0.09274313, 0.11943135, 0.106862, 0.079875536, 0.0937752, 0.068030775, 0.029093558, -0.06441164, 0.06467169, -0.021989612) * g_2; - result += mat4(0.049548414, -0.012455486, 0.07185561, 0.021865537, 0.020969186, -0.03374196, -0.024260623, -0.07739141, 0.07164591, 0.12741035, 0.0379913, 0.076403245, 0.07049977, 0.0744538, 0.0062989634, 0.01818882) * g_3; - result += mat4(-0.12511204, -0.010836819, 0.13709816, 0.22472954, 0.21280868, -0.006484726, 0.17554289, -0.009977173, 0.078398876, 0.20698707, 0.13432744, 0.29740283, -0.24750128, -0.32757792, -0.19807857, -0.2537023) * g_4; - result += mat4(-0.27207088, -0.1385644, -0.2166476, -0.07687419, -0.20300622, -0.29678395, -0.13135734, -0.20851587, 0.0361364, 0.011243289, -0.06845459, -0.11796941, 0.11575868, 0.070215136, -0.10295678, -0.12281369) * g_5; - result += mat4(0.13619795, -0.0019436983, -0.12701888, -0.25933513, -0.20134166, 0.00062823144, -0.076756015, 0.11002947, 0.0059049693, -0.18756741, -0.0718802, -0.2589954, 0.23413423, 0.30107784, 0.14445266, 0.18920745) * g_6; - result += mat4(0.1494216, 0.0587532, 0.05478662, -0.039123338, 0.23322394, 0.29950607, 0.24384268, 0.27843767, -0.16094431, -0.04705998, -0.016345032, 0.028868208, -0.102872886, -0.04659664, 0.104105346, 0.14305067) * g_7; - result += mat4(-0.001037014, 0.010001526, -0.0052278573, 0.024779709, 0.06857274, 0.067640975, 0.085439384, 0.09242789, -0.066597246, -0.055928994, 0.0015658981, 0.016131008, -0.03524695, -0.018364554, -0.047754433, -0.014295886) * g_8; - result += mat4(-0.042207, 0.02835915, -0.1404656, -0.08563323, -0.030979915, -0.0673764, 0.10733943, 0.057902794, 0.00022424995, -0.0023634837, -0.10778953, -0.10202357, -0.020368295, -0.019088887, -0.06875738, -0.08504131) * g_9; - result += mat4(-0.00043458896, 0.00045652856, -0.02016843, -0.020062413, -0.08740103, -0.042085808, -0.10644177, -0.09226477, 0.11212161, -0.00048174805, 0.021872435, -0.05868698, 0.0333954, 0.058184672, 0.05532576, 0.07621587) * g_10; - result += mat4(0.054245148, 0.001020329, 0.09106849, 0.05303779, 0.009889632, 0.01309413, -0.09187347, -0.08618193, -0.011621187, 0.016222361, 0.061095525, 0.060885344, 0.078050986, 0.0111776795, 0.08829944, 0.032022282) * g_11; - result += mat4(0.01643529, 0.02285545, -0.03498564, 0.00769657, -0.0042474116, 0.015836312, -0.025771018, -0.0016368, -0.008897948, -0.012588166, -0.01416411, -0.003578984, 0.025991246, 0.021237152, 0.017450012, 0.025172485) * g_12; - result += mat4(0.014568868, 0.017796224, -0.036679734, -0.03138748, 0.019457601, -0.027607411, -0.004529679, -0.038048342, -0.054055385, -0.03876025, 0.041948095, 0.005869784, 0.02439633, 0.05177997, 0.016000897, 0.0057169925) * g_13; - result += mat4(-0.03021866, 0.017678728, -0.01371109, 0.013548159, -0.0038099394, -0.014066414, 0.028093752, 0.0027308422, -0.010615999, 0.012673458, -0.03028171, -0.016818244, -0.06530097, -0.018845048, -0.0072947564, -0.0038243714) * g_14; - result += mat4(-0.019006258, -0.007847591, 0.03690709, 0.06714211, 0.0073993434, -0.009766907, -0.0021441753, -0.01308625, 0.06658726, 0.06701995, -0.027305668, -0.016032105, -0.028976806, -0.0036668575, -0.0027825525, 0.0105632655) * g_15; - result += mat4(0.028945107, -0.0014701135, 0.048950657, -0.01923516, -0.0014054152, 0.002650635, -0.005300331, 0.004860559, 0.011158468, 0.005940625, -0.012095051, 0.0041518128, -0.020433836, -0.025870577, -0.0007547932, -0.026509356) * g_16; - result += mat4(-0.004545374, 0.04264545, 0.021741537, 0.029115127, 0.04225599, -0.0055392785, 0.026570829, -0.031795148, -0.008307126, 0.020176455, 0.010904648, 0.017765503, -0.10806103, -0.01776947, 0.00070428237, -0.06356262) * g_17; - result += mat4(-0.05663172, 0.05908046, -0.03837452, 0.06636983, -0.007960516, -0.06384041, 0.023125881, -0.030108837, 0.0038054318, -0.023263922, 0.020264054, -0.0062937695, 0.031630237, 0.020909082, 0.03594235, 0.035879835) * g_18; - result += mat4(-0.0050448794, 0.033650696, -0.002830413, 0.035174295, -0.024521282, 0.013054315, -0.020833842, 0.037953895, 0.08249671, 0.024239466, -0.012758333, -0.027316988, 0.051040914, 0.0005025873, 0.039778862, 0.0024668393) * g_19; - result += mat4(0.017232442, 0.022482058, 0.020233413, 0.024337437, 0.07986929, 0.06234036, 0.12662584, -0.05271183, -0.009718745, -0.0046989853, -0.0030333172, -0.04034237, -0.0113442, 0.022746231, -0.035293855, -0.009433693) * g_20; - result += mat4(0.015766997, 0.013647276, -0.029327558, 0.039106004, -0.010398323, -0.032851525, 0.02908329, -0.003789618, 0.12963496, 0.010851003, 0.1126276, -0.049255487, 0.06867432, 0.07970792, 0.017840397, -0.026481882) * g_21; - result += mat4(-0.058729574, -0.07886952, 0.033267397, 0.02755372, -0.0172006, 0.012404398, -0.0230168, -0.015059758, -0.09239916, -0.029533267, -0.043251917, 0.0035152994, 0.022931995, 0.101714484, -0.044946067, 0.094993) * g_22; - result += mat4(-0.04708704, -0.032475296, -0.03228093, -0.08810475, 0.013745045, 0.027828002, -0.031922746, 0.022986397, -0.061620213, -0.03694645, -0.055026993, 0.0031291894, -0.028799903, -0.0025357977, -0.03441407, 0.0028600092) * g_23; - result += mat4(0.058981724, -0.10447273, -0.088705614, 0.16546178, -0.023549391, -0.008831522, -0.018411588, 0.029640056, -0.068086684, -0.05414636, -0.029401174, 0.036180343, -0.031988926, -0.047249753, 0.008162177, 0.00548062) * g_24; - result += mat4(0.05287462, -0.030657746, 0.02821435, 0.037005343, 0.03534311, -0.15614955, 0.07085459, -0.11997641, -0.009156166, -0.021968868, -0.054147746, -0.07307657, -0.006428544, -0.017528288, 0.012614676, 0.037840024) * g_25; - result += mat4(-0.021977803, 0.047799855, 0.02660416, -0.07292106, 0.045195807, -0.0056674764, 0.10824326, -0.112114795, 0.1447127, -0.0119616175, 0.0011661504, -0.04553905, 0.13048342, 0.14574122, -0.105522245, -0.102792375) * g_26; - result += mat4(-0.16397473, 0.15785863, -0.06666504, -0.01682913, 0.06070918, 0.070222184, 0.037701584, 0.026657054, -0.0835267, -0.009457008, 0.13232987, 0.13508691, -0.056414206, -0.06818828, 0.079076104, 0.032249212) * g_27; - result += vec4(-0.10795144, -0.09953324, -0.055413827, -0.03875493); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x1x1x112 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!SAVE conv2d_last_tf1 -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define g_0 (max((conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_1 (max((conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_2 (max(-(conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_4 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_5 (max((conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_6 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_8 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_9 (max((conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_10 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_12 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_13 (max((conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_14 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_15 (max(-(conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_16 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_17 (max((conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_18 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_19 (max(-(conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_20 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_21 (max((conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_22 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_23 (max(-(conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_24 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_25 (max((conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -#define g_26 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_27 (max(-(conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(0.024905335, -0.0020974763, 0.02695263, 0.00016802056, -0.024053082, -0.02133723, -0.031614035, -0.031826317, 0.120421864, 0.10555479, 0.08609448, 0.116875134, 0.046175968, 0.04224941, 0.059216674, 0.035143953) * g_0; - result += mat4(0.059397914, 0.016519934, 0.07189327, 0.047407165, 0.04808963, 0.02792908, 0.057017103, 0.034324065, 0.14228246, 0.11275426, 0.088058695, 0.059600517, 0.02063494, 0.052596953, 0.047207687, 0.08789091) * g_1; - result += mat4(-0.013453174, 0.008474715, -0.017593835, 0.009218917, 0.070580654, 0.040542338, 0.08812338, 0.074653216, -0.016356857, 0.015809007, -0.008739107, 0.0097674895, -0.018381525, -0.007775341, -0.040571664, -0.011188163) * g_2; - result += mat4(-0.026196122, -0.034825727, -0.042998232, -0.033436514, -0.01678153, -0.004592797, -0.010311677, 0.0008815291, -0.08899181, -0.10274026, -0.066960976, -0.082430154, -0.057137426, -0.07554528, -0.030993424, -0.050372377) * g_3; - result += mat4(0.022921838, -0.010479244, -0.050794605, -0.073633075, -0.053708922, 0.009594084, -0.071259, -0.01054356, 0.005165821, -0.08024963, -0.049251772, -0.09581235, 0.17995799, 0.09743011, 0.13533138, 0.11643848) * g_4; - result += mat4(0.09727046, 0.07292666, 0.06820908, 0.041535784, -0.0049705, 0.0048759184, -0.035702795, -0.015944308, -0.010730028, 0.018847652, 0.06466244, 0.086318985, -0.05661574, -0.040698618, 0.010839972, 0.0027009705) * g_5; - result += mat4(-0.04628466, 0.010060396, 0.02609333, 0.08664702, 0.057045907, 0.033591177, 0.02186063, -0.024303377, 0.006569828, 0.08025825, 0.016128821, 0.10180713, -0.12228169, -0.112990454, -0.078443415, -0.09126021) * g_6; - result += mat4(-0.12733299, -0.087755, -0.07374111, -0.044979006, -0.025347412, -0.004083168, 0.023782173, 0.02900392, -0.017815407, -0.041119996, -0.057978686, -0.13521095, 0.08364004, 0.06950181, 0.023554614, 0.008043734) * g_7; - result += mat4(0.009062775, -0.003570175, -0.007378757, -0.0018487388, 0.01145638, 0.05217187, -0.008250244, 0.008433307, -0.056756936, -0.044681005, -0.08096105, -0.08033185, -0.023784965, -0.01859799, 0.013042476, 0.021188647) * g_8; - result += mat4(-0.0071619656, -0.012498299, -0.05144986, -0.078112476, -0.034992415, -0.017038302, -0.04464615, -0.044504963, 0.024249, -0.004297534, 0.03674578, 0.03090718, 0.04698553, 0.008344952, 0.057619847, -0.0338724) * g_9; - result += mat4(-0.011845145, -0.0045043705, -1.6646482e-06, -0.0038495932, -0.01992515, 0.004827126, 0.019493148, 0.00862289, 0.10151322, 0.0021909082, 0.09940764, 0.03728846, 0.027824005, 0.04358071, 0.014909185, 0.036326095) * g_10; - result += mat4(0.022513246, 0.028257169, 0.0102195935, 0.03301329, 0.052253865, -0.0021944977, 0.08247392, 0.03256867, -0.040685873, -0.0052207555, -0.0451257, -0.054165114, 0.01647699, 0.0028809097, -0.015233776, -0.0008741886) * g_11; - result += mat4(0.017371105, 0.01597189, -0.052552313, -0.008554715, -0.0023150423, 0.006076517, -0.012868931, 0.0039361073, -0.007524978, -0.004284313, -0.021520883, -0.010327569, 0.02543678, 0.008725823, -0.0073885336, 0.005528395) * g_12; - result += mat4(0.019192757, 0.016561812, 0.0027538154, 0.0013078215, 0.007916496, -0.042525183, -0.013173432, -0.05265476, -0.062195376, -0.011255499, 0.020898128, 0.021532273, -0.001524097, 0.034835674, -0.004051403, -0.0292426) * g_13; - result += mat4(-0.049191684, -9.43322e-06, -0.009106849, 0.012845289, -0.019482708, -0.011163468, 0.0034011535, -0.007062845, -0.006469714, 0.03177786, -0.033006195, -0.0006813464, -0.053963087, 0.00085209147, 0.02734121, 0.034086403) * g_14; - result += mat4(-0.03232248, -0.004037002, -0.010319106, 0.030889064, 0.019604538, 0.0020888883, 0.010277864, 0.000661223, 0.057915937, 0.030683514, 0.00042533095, -0.013019287, -0.015896408, 0.0038484468, -0.0042103594, 0.02174542) * g_15; - result += mat4(0.032975145, 0.0011456647, 0.04913679, -0.017063798, 0.0117176045, 0.007440557, 0.0020480808, 0.009415731, 0.027573857, 0.015140836, -0.01679426, -0.006124731, -0.03206279, -0.029842237, -0.010428016, -0.028513178) * g_16; - result += mat4(-0.00506859, 0.055869613, 0.010164368, 0.027031485, 0.042289548, -0.0054258504, 0.032214936, -0.029970925, -0.0058315448, 0.022889478, 0.01681123, 0.02985076, -0.111186065, -0.02202099, 0.0030994313, -0.062343158) * g_17; - result += mat4(-0.060951103, 0.06079555, -0.0396464, 0.070911355, -0.011480358, -0.06803282, 0.01637355, -0.043100975, -0.00423709, -0.028337711, 0.021635853, 0.0014857082, 0.030084312, 0.018155476, 0.043694943, 0.038795974) * g_18; - result += mat4(-0.0060662925, 0.029721662, -0.008117774, 0.034551267, -0.024477571, 0.018841071, -0.027095588, 0.034495078, 0.082398005, 0.008998768, -0.016399248, -0.043801688, 0.05936684, 0.006066549, 0.045399766, 3.5319943e-05) * g_19; - result += mat4(0.019259382, 0.02494012, 0.029301709, 0.028329274, 0.09122267, 0.06900443, 0.1412115, -0.043169618, -0.01627418, -0.004989528, -0.0042651827, -0.04556752, -0.023623291, 0.013007996, -0.04483056, -0.015727345) * g_20; - result += mat4(0.016332543, 0.016384754, -0.030676385, 0.045312885, -0.0100853555, -0.032632045, 0.031514473, -0.0070776115, 0.13642761, 0.0023589598, 0.12214136, -0.062155515, 0.08240989, 0.08894205, 0.03325406, -0.016589595) * g_21; - result += mat4(-0.06494277, -0.08158925, 0.030425413, 0.019835634, -0.012624623, 0.013942616, -0.030527417, -0.021668324, -0.09444672, -0.033064254, -0.044167448, 0.0011024752, 0.03210801, 0.12662941, -0.03912534, 0.1112649) * g_22; - result += mat4(-0.04716062, -0.03751481, -0.031030515, -0.09067383, 0.0077815712, 0.02169541, -0.035285182, 0.02290573, -0.0704085, -0.03916127, -0.058103334, 0.004915147, -0.0333844, -0.011548617, -0.031151932, -0.00043817286) * g_23; - result += mat4(0.05976319, -0.107285, -0.097245865, 0.17706421, -0.021453341, -0.0047738464, -0.017621001, 0.033400454, -0.07225561, -0.05599672, -0.027600193, 0.038664024, -0.03762786, -0.052429967, 0.0104017975, 0.007116869) * g_24; - result += mat4(0.06014114, -0.029824806, 0.03209269, 0.04392036, 0.031300627, -0.16249833, 0.06878509, -0.12658615, -0.012383169, -0.025043553, -0.06527381, -0.08149099, -0.014006842, -0.018669648, 0.014510818, 0.042045828) * g_25; - result += mat4(-0.023342922, 0.047104675, 0.029629575, -0.082307704, 0.04035797, -0.0013049254, 0.11085582, -0.11031226, 0.14778149, -0.016699014, -0.00634342, -0.055320874, 0.14306462, 0.15896587, -0.110229075, -0.1069649) * g_26; - result += mat4(-0.17449625, 0.15787153, -0.06711028, -0.023110518, 0.06862914, 0.074063435, 0.042682912, 0.029800726, -0.08768606, -0.009814701, 0.14180017, 0.14780663, -0.05672417, -0.074305914, 0.07873489, 0.028458012) * g_27; - result += vec4(0.06026231, 0.040204916, 0.037672628, 0.023496555); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Conv-4x1x1x112 -//!HOOK MAIN -//!BIND conv2d_tf -//!BIND conv2d_tf1 -//!BIND conv2d_1_tf -//!BIND conv2d_1_tf1 -//!BIND conv2d_2_tf -//!BIND conv2d_2_tf1 -//!BIND conv2d_3_tf -//!BIND conv2d_3_tf1 -//!BIND conv2d_4_tf -//!BIND conv2d_4_tf1 -//!BIND conv2d_5_tf -//!BIND conv2d_5_tf1 -//!BIND conv2d_6_tf -//!BIND conv2d_6_tf1 -//!SAVE conv2d_last_tf2 -//!WIDTH conv2d_tf.w -//!HEIGHT conv2d_tf.h -//!COMPONENTS 4 -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -#define g_0 (max((conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_1 (max((conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_2 (max(-(conv2d_tf_tex(conv2d_tf_pos)), 0.0)) -#define g_3 (max(-(conv2d_tf1_tex(conv2d_tf1_pos)), 0.0)) -#define g_4 (max((conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_5 (max((conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_6 (max(-(conv2d_1_tf_tex(conv2d_1_tf_pos)), 0.0)) -#define g_7 (max(-(conv2d_1_tf1_tex(conv2d_1_tf1_pos)), 0.0)) -#define g_8 (max((conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_9 (max((conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_10 (max(-(conv2d_2_tf_tex(conv2d_2_tf_pos)), 0.0)) -#define g_11 (max(-(conv2d_2_tf1_tex(conv2d_2_tf1_pos)), 0.0)) -#define g_12 (max((conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_13 (max((conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_14 (max(-(conv2d_3_tf_tex(conv2d_3_tf_pos)), 0.0)) -#define g_15 (max(-(conv2d_3_tf1_tex(conv2d_3_tf1_pos)), 0.0)) -#define g_16 (max((conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_17 (max((conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_18 (max(-(conv2d_4_tf_tex(conv2d_4_tf_pos)), 0.0)) -#define g_19 (max(-(conv2d_4_tf1_tex(conv2d_4_tf1_pos)), 0.0)) -#define g_20 (max((conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_21 (max((conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_22 (max(-(conv2d_5_tf_tex(conv2d_5_tf_pos)), 0.0)) -#define g_23 (max(-(conv2d_5_tf1_tex(conv2d_5_tf1_pos)), 0.0)) -#define g_24 (max((conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_25 (max((conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -#define g_26 (max(-(conv2d_6_tf_tex(conv2d_6_tf_pos)), 0.0)) -#define g_27 (max(-(conv2d_6_tf1_tex(conv2d_6_tf1_pos)), 0.0)) -vec4 hook() { - vec4 result = mat4(0.1765669, 0.14268716, 0.19186598, 0.15799578, 0.016374417, 0.018578433, 0.0039475, 0.0046772263, 0.39840183, 0.36909792, 0.35409746, 0.37422222, -0.108508386, -0.1331279, -0.10336035, -0.14776541) * g_0; - result += mat4(-0.057757027, -0.14071062, -0.025283009, -0.09397916, -0.09031894, -0.14219165, -0.08299535, -0.13970287, -0.12259208, -0.14382727, -0.22002274, -0.25016093, -0.048906635, 0.06620249, 0.016965045, 0.1295978) * g_1; - result += mat4(-0.16748372, -0.13718611, -0.18565705, -0.15029612, -0.080749065, -0.09955825, 0.032431383, 0.023855643, -0.2748885, -0.23232168, -0.29121292, -0.26405892, 0.16556135, 0.18657646, 0.1424068, 0.18855052) * g_2; - result += mat4(0.10960496, 0.10851629, 0.095003806, 0.11053746, 0.09885307, 0.14437789, 0.13191165, 0.17365928, 0.16558935, 0.15473324, 0.21136154, 0.19976667, -0.07267957, -0.11469687, -0.029134216, -0.06817615) * g_3; - result += mat4(0.10202856, 0.04216857, -0.03959349, -0.09849683, -0.1576996, -0.049997438, -0.1579918, -0.058789205, 0.029792828, -0.07311781, -0.045432188, -0.11312683, 0.24257647, 0.16204113, 0.17869382, 0.16024388) * g_4; - result += mat4(0.17193612, 0.12692013, 0.13177487, 0.0796725, 0.0797928, 0.08952722, -0.012468046, 0.011071511, -0.068559825, -0.024852324, 0.0526428, 0.07917346, -0.085534215, -0.09591339, 0.04615827, 0.024577664) * g_5; - result += mat4(-0.14653449, -0.067267366, -0.002524394, 0.086243175, 0.13660401, 0.08039592, 0.09179008, 0.022573143, -0.024744196, 0.09120211, 0.017654825, 0.14114714, -0.16093308, -0.14538004, -0.09950235, -0.111152865) * g_6; - result += mat4(-0.188637, -0.12968326, -0.1200479, -0.06537649, -0.12589337, -0.106242515, -0.02788782, -0.025949068, 0.04948153, 0.02222735, -0.025291357, -0.12379292, 0.11074645, 0.11902375, -0.00056989543, -0.0024386419) * g_7; - result += mat4(0.018286629, 0.0072215167, 0.00037828335, 0.0047001047, 0.011478272, 0.041745186, -0.015742473, -0.002282524, -0.03440817, -0.02196847, -0.07838253, -0.07993771, -0.010155526, -0.017590692, 0.027141469, 0.029741213) * g_8; - result += mat4(0.016512005, 0.004950637, -0.0238836, -0.05587327, -0.03164328, -0.009499985, -0.059880238, -0.061794154, 0.023154303, -0.013266373, 0.04701534, 0.0415862, 0.06357814, 0.033057794, 0.08389772, 0.00035060212) * g_9; - result += mat4(-0.016403968, -0.012538788, -0.0015746636, -0.004771009, -0.021361275, -0.009695242, 0.020548422, -0.0024130535, 0.07796766, -0.01516671, 0.09961382, 0.042754963, 0.017363647, 0.03729065, -0.004795824, 0.01550197) * g_10; - result += mat4(-0.0028093113, 0.011869523, -0.02216933, 0.011177349, 0.033342455, -0.021146454, 0.07830085, 0.032490104, -0.03281833, 0.0060484232, -0.04081057, -0.04945058, -0.0056189033, -0.010636801, -0.041949317, -0.025739705) * g_11; - result += mat4(0.012979897, 0.016758928, -0.049062215, -0.0035748442, 0.0085972, 0.0036381132, -0.0055621094, 0.0041307937, -0.0008907763, -0.0034079372, -0.025680453, -0.015531803, 0.012816766, 0.009977763, -0.016416566, 0.0034859509) * g_12; - result += mat4(0.021753248, 0.016452711, 0.009833835, 0.0065052663, 0.0014061348, -0.046160888, -0.0132271005, -0.05051269, -0.05746351, -0.0012690664, 0.017191738, 0.018192926, -0.008879476, 0.026354216, -0.012801991, -0.029587373) * g_13; - result += mat4(-0.04220692, -0.0015560482, -0.0019648245, 0.013402305, -0.018259782, -0.0036008905, 0.0035650074, -0.0019178417, 0.00051580026, 0.027355857, -0.017914988, 0.004937948, -0.046335887, 0.00013612259, 0.030293299, 0.030688645) * g_14; - result += mat4(-0.036683388, -0.0031274238, -0.026074665, 0.021684237, 0.022639066, 0.0022493738, 0.011508554, -0.0006385944, 0.04890418, 0.020119468, 0.004167364, -0.008356099, -0.008598796, 0.0089028, -0.0029575853, 0.016687104) * g_15; - result += mat4(0.027207986, 0.0011099194, 0.042383645, -0.015179333, 0.014744431, 0.006148344, 0.005165422, 0.0070196544, 0.030286826, 0.016620956, -0.01611366, -0.00667594, -0.029524863, -0.024751091, -0.013321004, -0.025199674) * g_16; - result += mat4(0.0027477827, 0.054622147, 0.010154094, 0.025437292, 0.031773083, -0.01055473, 0.022864206, -0.029010754, -0.0029999653, 0.025018329, 0.015316208, 0.027188798, -0.10096525, -0.017268656, 0.0012529213, -0.062078856) * g_17; - result += mat4(-0.053670805, 0.057336535, -0.037418038, 0.06443577, -0.016027879, -0.058168363, 0.007034215, -0.03390141, -0.0019346164, -0.027947908, 0.021723913, -0.0018286633, 0.030507812, 0.018293543, 0.042917266, 0.033528328) * g_18; - result += mat4(-0.004559579, 0.029667616, -0.001870353, 0.0378995, -0.017147437, 0.020192018, -0.021574946, 0.031568103, 0.07487145, 0.0032376775, -0.018893708, -0.041981626, 0.054478757, 0.0061423797, 0.041280247, 0.000878061) * g_19; - result += mat4(0.017076394, 0.023647636, 0.029403262, 0.029923365, 0.08866472, 0.060613394, 0.1314274, -0.04490231, -0.016304834, -0.0062647443, -0.0031828512, -0.03989252, -0.024330825, 0.00741213, -0.04075287, -0.01615817) * g_20; - result += mat4(0.017866978, 0.017720113, -0.02846163, 0.040761847, -0.0063438355, -0.02347501, 0.029564403, -0.0029562064, 0.12505588, -0.0073986333, 0.11250363, -0.06179967, 0.07854423, 0.08546533, 0.034743227, -0.010757377) * g_21; - result += mat4(-0.06416677, -0.08344284, 0.030138884, 0.017635904, -0.012087523, 0.014205202, -0.03221233, -0.023834767, -0.091186255, -0.028958676, -0.04724334, 0.00013161585, 0.027391518, 0.1249978, -0.045047652, 0.10737729) * g_22; - result += mat4(-0.04326348, -0.03543181, -0.029558217, -0.08582413, 0.007812453, 0.014296562, -0.028779754, 0.018517692, -0.063755795, -0.036619596, -0.050809663, 0.005431336, -0.029205568, -0.011827915, -0.031110523, -0.005648626) * g_23; - result += mat4(0.05499293, -0.10000709, -0.0943537, 0.16143042, -0.019952895, -0.0039807972, -0.014841254, 0.0320363, -0.065173544, -0.049425576, -0.023904482, 0.03759679, -0.03207411, -0.047782745, 0.01352581, 0.008140566) * g_24; - result += mat4(0.055923894, -0.025134467, 0.029583648, 0.04096879, 0.027551858, -0.14995384, 0.06467113, -0.11633077, -0.01563784, -0.026909819, -0.06292879, -0.078409635, -0.009081105, -0.015533088, 0.019585673, 0.04334208) * g_25; - result += mat4(-0.021717606, 0.042464726, 0.02743202, -0.07388838, 0.03460472, 0.0038285658, 0.099842004, -0.098247, 0.13276267, -0.020793032, -0.008603039, -0.051913783, 0.12959045, 0.14735717, -0.10888226, -0.10263746) * g_26; - result += mat4(-0.16819532, 0.141579, -0.062480718, -0.021918943, 0.06348125, 0.06849444, 0.03888676, 0.027375204, -0.08194279, -0.012574497, 0.13523251, 0.13739482, -0.047547445, -0.058767617, 0.07009549, 0.028136581) * g_27; - result += vec4(0.069033325, 0.040207114, 0.027286075, 0.0065334598); - return result; -} -//!DESC Anime4K-v3.2-Upscale-CNN-x2-(VL)-Depth-to-Space -//!HOOK MAIN -//!BIND MAIN -//!BIND conv2d_last_tf -//!BIND conv2d_last_tf1 -//!BIND conv2d_last_tf2 -//!SAVE MAIN -//!WIDTH conv2d_last_tf.w 2 * -//!HEIGHT conv2d_last_tf.h 2 * -//!WHEN OUTPUT.w MAIN.w / 1.200 > OUTPUT.h MAIN.h / 1.200 > * -vec4 hook() { - vec2 f0 = fract(conv2d_last_tf_pos * conv2d_last_tf_size); - ivec2 i0 = ivec2(f0 * vec2(2.0)); - float c0 = conv2d_last_tf_tex((vec2(0.5) - f0) * conv2d_last_tf_pt + conv2d_last_tf_pos)[i0.y * 2 + i0.x]; - vec2 f1 = fract(conv2d_last_tf1_pos * conv2d_last_tf1_size); - ivec2 i1 = ivec2(f1 * vec2(2.0)); - float c1 = conv2d_last_tf1_tex((vec2(0.5) - f1) * conv2d_last_tf1_pt + conv2d_last_tf1_pos)[i1.y * 2 + i1.x]; - vec2 f2 = fract(conv2d_last_tf2_pos * conv2d_last_tf2_size); - ivec2 i2 = ivec2(f2 * vec2(2.0)); - float c2 = conv2d_last_tf2_tex((vec2(0.5) - f2) * conv2d_last_tf2_pt + conv2d_last_tf2_pos)[i2.y * 2 + i2.x]; - float c3 = c2; - return vec4(c0, c1, c2, c3) + MAIN_tex(MAIN_pos); -} diff --git a/assets/shaders/LICENSE b/assets/shaders/LICENSE deleted file mode 100644 index 57ba4255d..000000000 --- a/assets/shaders/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 bloc97 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/lib/common/assets.dart b/lib/common/assets.dart index 134ac795f..a75fac79e 100644 --- a/lib/common/assets.dart +++ b/lib/common/assets.dart @@ -34,23 +34,4 @@ abstract final class Assets { static const right = 'assets/images/paycoins/ic_right.png'; static const rightDisable = 'assets/images/paycoins/ic_right_disable.png'; static const panelClose = 'assets/images/paycoins/ic_panel_close.png'; - - static const List mpvAnime4KShaders = [ - 'Anime4K_Clamp_Highlights.glsl', - 'Anime4K_Restore_CNN_VL.glsl', - 'Anime4K_Upscale_CNN_x2_VL.glsl', - 'Anime4K_AutoDownscalePre_x2.glsl', - 'Anime4K_AutoDownscalePre_x4.glsl', - 'Anime4K_Upscale_CNN_x2_M.glsl', - ]; - - static const mpvAnime4KShadersLite = [ - 'Anime4K_Clamp_Highlights.glsl', - 'Anime4K_Restore_CNN_M.glsl', - 'Anime4K_Restore_CNN_S.glsl', - 'Anime4K_Upscale_CNN_x2_M.glsl', - 'Anime4K_AutoDownscalePre_x2.glsl', - 'Anime4K_AutoDownscalePre_x4.glsl', - 'Anime4K_Upscale_CNN_x2_S.glsl', - ]; } diff --git a/lib/common/dial_prefix.dart b/lib/common/dial_prefix.dart deleted file mode 100644 index 144fac9c1..000000000 --- a/lib/common/dial_prefix.dart +++ /dev/null @@ -1,220 +0,0 @@ -abstract final class Login { - //内容来自 https://passport.bilibili.com/web/generic/country/list - static const dialPrefix = [ - (id: 1, cname: "中国大陆", countryId: 86), - (id: 5, cname: "中国香港特别行政区", countryId: 852), - (id: 2, cname: "中国澳门特别行政区", countryId: 853), - (id: 3, cname: "中国台湾", countryId: 886), - (id: 4, cname: "美国", countryId: 1), - (id: 6, cname: "比利时", countryId: 32), - (id: 7, cname: "澳大利亚", countryId: 61), - (id: 8, cname: "法国", countryId: 33), - (id: 9, cname: "加拿大", countryId: 1), - (id: 10, cname: "日本", countryId: 81), - (id: 11, cname: "新加坡", countryId: 65), - (id: 12, cname: "韩国", countryId: 82), - (id: 13, cname: "马来西亚", countryId: 60), - (id: 14, cname: "英国", countryId: 44), - (id: 15, cname: "意大利", countryId: 39), - (id: 16, cname: "德国", countryId: 49), - (id: 18, cname: "俄罗斯", countryId: 7), - (id: 19, cname: "新西兰", countryId: 64), - (id: 153, cname: "瓦利斯群岛和富图纳群岛", countryId: 1681), - (id: 152, cname: "葡萄牙", countryId: 351), - (id: 151, cname: "帕劳", countryId: 680), - (id: 150, cname: "诺福克岛", countryId: 672), - (id: 149, cname: "挪威", countryId: 47), - (id: 148, cname: "纽埃岛", countryId: 683), - (id: 147, cname: "尼日利亚", countryId: 234), - (id: 146, cname: "尼日尔", countryId: 227), - (id: 145, cname: "尼加拉瓜", countryId: 505), - (id: 144, cname: "尼泊尔", countryId: 977), - (id: 143, cname: "瑙鲁", countryId: 674), - (id: 154, cname: "格鲁吉亚", countryId: 995), - (id: 155, cname: "瑞典", countryId: 46), - (id: 165, cname: "沙特阿拉伯", countryId: 966), - (id: 164, cname: "桑给巴尔岛", countryId: 259), - (id: 163, cname: "塞舌尔共和国", countryId: 248), - (id: 162, cname: "塞浦路斯", countryId: 357), - (id: 161, cname: "塞内加尔", countryId: 221), - (id: 160, cname: "塞拉利昂", countryId: 232), - (id: 159, cname: "萨摩亚,东部", countryId: 684), - (id: 158, cname: "萨摩亚,西部", countryId: 685), - (id: 157, cname: "萨尔瓦多", countryId: 503), - (id: 156, cname: "瑞士", countryId: 41), - (id: 166, cname: "圣多美和普林西比", countryId: 239), - (id: 142, cname: "塞尔维亚", countryId: 381), - (id: 141, cname: "南非", countryId: 27), - (id: 128, cname: "毛里塔尼亚", countryId: 222), - (id: 127, cname: "毛里求斯", countryId: 230), - (id: 126, cname: "马歇尔岛", countryId: 692), - (id: 125, cname: "马提尼克岛", countryId: 596), - (id: 124, cname: "马其顿", countryId: 389), - (id: 123, cname: "马里亚纳岛", countryId: 1670), - (id: 122, cname: "马里", countryId: 223), - (id: 121, cname: "马拉维", countryId: 265), - (id: 120, cname: "马耳他", countryId: 356), - (id: 119, cname: "马尔代夫", countryId: 960), - (id: 129, cname: "蒙古", countryId: 976), - (id: 130, cname: "蒙特塞拉特岛", countryId: 1664), - (id: 140, cname: "纳米比亚", countryId: 264), - (id: 139, cname: "墨西哥", countryId: 52), - (id: 138, cname: "莫桑比克", countryId: 258), - (id: 137, cname: "摩纳哥", countryId: 377), - (id: 136, cname: "摩洛哥", countryId: 212), - (id: 135, cname: "摩尔多瓦", countryId: 373), - (id: 134, cname: "缅甸", countryId: 95), - (id: 133, cname: "密克罗尼西亚", countryId: 691), - (id: 132, cname: "秘鲁", countryId: 51), - (id: 131, cname: "孟加拉国", countryId: 880), - (id: 118, cname: "马达加斯加", countryId: 261), - (id: 167, cname: "圣卢西亚", countryId: 1784), - (id: 216, cname: "智利", countryId: 56), - (id: 203, cname: "牙买加", countryId: 1876), - (id: 202, cname: "叙利亚", countryId: 963), - (id: 201, cname: "匈牙利", countryId: 36), - (id: 200, cname: "科特迪瓦", countryId: 225), - (id: 199, cname: "希腊", countryId: 30), - (id: 198, cname: "西班牙", countryId: 34), - (id: 197, cname: "乌兹别克斯坦", countryId: 998), - (id: 196, cname: "乌拉圭", countryId: 598), - (id: 195, cname: "乌克兰", countryId: 380), - (id: 194, cname: "乌干达", countryId: 256), - (id: 204, cname: "亚美尼亚", countryId: 374), - (id: 205, cname: "也门", countryId: 967), - (id: 215, cname: "直布罗陀", countryId: 350), - (id: 214, cname: "乍得", countryId: 235), - (id: 213, cname: "赞比亚", countryId: 260), - (id: 212, cname: "越南", countryId: 84), - (id: 211, cname: "约旦", countryId: 962), - (id: 210, cname: "印尼", countryId: 62), - (id: 209, cname: "印度", countryId: 91), - (id: 208, cname: "以色列", countryId: 972), - (id: 207, cname: "伊朗", countryId: 98), - (id: 206, cname: "伊拉克", countryId: 964), - (id: 193, cname: "文莱", countryId: 673), - (id: 192, cname: "委内瑞拉", countryId: 58), - (id: 191, cname: "维珍群岛(英属)", countryId: 1284), - (id: 178, cname: "泰国", countryId: 66), - (id: 177, cname: "索马里", countryId: 252), - (id: 176, cname: "所罗门群岛", countryId: 677), - (id: 175, cname: "苏里南", countryId: 597), - (id: 174, cname: "苏丹", countryId: 249), - (id: 173, cname: "斯威士兰", countryId: 268), - (id: 172, cname: "斯洛文尼亚", countryId: 386), - (id: 171, cname: "斯洛伐克", countryId: 421), - (id: 170, cname: "斯里兰卡", countryId: 94), - (id: 169, cname: "圣皮埃尔和密克隆群岛", countryId: 508), - (id: 179, cname: "坦桑尼亚", countryId: 255), - (id: 180, cname: "汤加", countryId: 676), - (id: 190, cname: "维珍群岛(美属)", countryId: 1340), - (id: 189, cname: "瓦努阿图", countryId: 678), - (id: 188, cname: "托克劳岛", countryId: 690), - (id: 187, cname: "土库曼斯坦", countryId: 993), - (id: 186, cname: "土耳其", countryId: 90), - (id: 185, cname: "图瓦卢", countryId: 688), - (id: 184, cname: "突尼斯", countryId: 216), - (id: 183, cname: "阿森松岛", countryId: 247), - (id: 182, cname: "特立尼达和多巴哥", countryId: 1868), - (id: 181, cname: "特克斯和凯科斯", countryId: 1649), - (id: 168, cname: "圣马力诺", countryId: 378), - (id: 67, cname: "法属圭亚那", countryId: 594), - (id: 54, cname: "不丹", countryId: 975), - (id: 53, cname: "博茨瓦纳", countryId: 267), - (id: 52, cname: "伯利兹", countryId: 501), - (id: 51, cname: "玻利维亚", countryId: 591), - (id: 50, cname: "波兰", countryId: 48), - (id: 49, cname: "波黑", countryId: 387), - (id: 48, cname: "波多黎各", countryId: 1787), - (id: 47, cname: "冰岛", countryId: 354), - (id: 46, cname: "贝宁", countryId: 229), - (id: 45, cname: "保加利亚", countryId: 359), - (id: 55, cname: "布基纳法索", countryId: 226), - (id: 56, cname: "布隆迪", countryId: 257), - (id: 66, cname: "法属波利尼西亚", countryId: 689), - (id: 65, cname: "法罗岛", countryId: 298), - (id: 64, cname: "厄立特里亚", countryId: 291), - (id: 63, cname: "厄瓜多尔", countryId: 593), - (id: 62, cname: "多米尼加代表", countryId: 1809), - (id: 61, cname: "多米尼加", countryId: 1767), - (id: 60, cname: "多哥", countryId: 228), - (id: 59, cname: "迪戈加西亚岛", countryId: 246), - (id: 58, cname: "丹麦", countryId: 45), - (id: 57, cname: "赤道几内亚", countryId: 240), - (id: 44, cname: "百慕大群岛", countryId: 1441), - (id: 43, cname: "白俄罗斯", countryId: 375), - (id: 42, cname: "巴西", countryId: 55), - (id: 29, cname: "爱尔兰", countryId: 353), - (id: 28, cname: "埃塞俄比亚", countryId: 251), - (id: 27, cname: "埃及", countryId: 20), - (id: 26, cname: "阿塞拜疆", countryId: 994), - (id: 25, cname: "阿曼", countryId: 968), - (id: 24, cname: "阿联酋", countryId: 971), - (id: 23, cname: "阿根廷", countryId: 54), - (id: 22, cname: "阿富汗", countryId: 93), - (id: 21, cname: "阿尔及利亚", countryId: 213), - (id: 20, cname: "阿尔巴尼亚", countryId: 355), - (id: 30, cname: "爱沙尼亚", countryId: 372), - (id: 31, cname: "安道尔", countryId: 376), - (id: 41, cname: "巴拿马", countryId: 507), - (id: 40, cname: "巴林", countryId: 973), - (id: 39, cname: "巴拉圭", countryId: 595), - (id: 38, cname: "巴基斯坦", countryId: 92), - (id: 37, cname: "巴哈马群岛", countryId: 1242), - (id: 36, cname: "巴布亚新几内亚", countryId: 675), - (id: 35, cname: "巴巴多斯", countryId: 1246), - (id: 34, cname: "奥地利", countryId: 43), - (id: 33, cname: "安提瓜岛和巴布达", countryId: 1268), - (id: 32, cname: "安哥拉", countryId: 244), - (id: 68, cname: "非洲中部", countryId: 236), - (id: 117, cname: "罗马尼亚", countryId: 40), - (id: 104, cname: "科威特", countryId: 965), - (id: 103, cname: "科摩罗", countryId: 269), - (id: 102, cname: "开曼群岛", countryId: 1345), - (id: 101, cname: "卡塔尔", countryId: 974), - (id: 100, cname: "喀麦隆", countryId: 237), - (id: 99, cname: "聚会岛", countryId: 262), - (id: 98, cname: "津巴布韦", countryId: 263), - (id: 97, cname: "捷克", countryId: 420), - (id: 96, cname: "柬埔寨", countryId: 855), - (id: 95, cname: "加蓬", countryId: 241), - (id: 105, cname: "克罗地亚", countryId: 385), - (id: 106, cname: "肯尼亚", countryId: 254), - (id: 116, cname: "卢旺达", countryId: 250), - (id: 115, cname: "卢森堡", countryId: 352), - (id: 114, cname: "利比亚", countryId: 218), - (id: 113, cname: "利比里亚", countryId: 231), - (id: 112, cname: "立陶宛", countryId: 370), - (id: 111, cname: "黎巴嫩", countryId: 961), - (id: 110, cname: "老挝", countryId: 856), - (id: 109, cname: "莱索托", countryId: 266), - (id: 108, cname: "拉脱维亚", countryId: 371), - (id: 107, cname: "库克岛", countryId: 682), - (id: 94, cname: "加纳", countryId: 233), - (id: 93, cname: "几内亚比绍", countryId: 245), - (id: 92, cname: "几内亚", countryId: 224), - (id: 79, cname: "格林纳达", countryId: 1473), - (id: 78, cname: "哥斯达黎加", countryId: 506), - (id: 77, cname: "哥伦比亚", countryId: 57), - (id: 76, cname: "刚果(金)", countryId: 243), - (id: 75, cname: "刚果", countryId: 242), - (id: 74, cname: "冈比亚", countryId: 220), - (id: 73, cname: "福克兰岛", countryId: 500), - (id: 72, cname: "佛得角", countryId: 238), - (id: 71, cname: "芬兰", countryId: 358), - (id: 70, cname: "斐济", countryId: 679), - (id: 80, cname: "格陵兰岛", countryId: 299), - (id: 81, cname: "古巴", countryId: 53), - (id: 91, cname: "吉尔吉斯斯坦", countryId: 996), - (id: 90, cname: "吉布提", countryId: 253), - (id: 89, cname: "基里巴斯", countryId: 686), - (id: 88, cname: "维克岛", countryId: 1808), - (id: 87, cname: "洪都拉斯", countryId: 504), - (id: 86, cname: "荷兰", countryId: 31), - (id: 85, cname: "朝鲜", countryId: 850), - (id: 84, cname: "海地", countryId: 509), - (id: 83, cname: "关岛", countryId: 1671), - (id: 82, cname: "瓜德罗普岛", countryId: 590), - (id: 69, cname: "菲律宾", countryId: 63), - ]; -} diff --git a/lib/common/widgets/dialog/export_import.dart b/lib/common/widgets/dialog/export_import.dart index 4d01ff6c0..ae73502ea 100644 --- a/lib/common/widgets/dialog/export_import.dart +++ b/lib/common/widgets/dialog/export_import.dart @@ -15,8 +15,8 @@ import 'package:get/get_navigation/src/extension_navigation.dart'; import 'package:intl/intl.dart' show DateFormat; import 'package:re_highlight/languages/json.dart'; import 'package:re_highlight/re_highlight.dart'; -import 'package:re_highlight/styles/base16/github.dart'; import 'package:re_highlight/styles/github-dark.dart'; +import 'package:re_highlight/styles/github.dart'; void exportToClipBoard({ required ValueGetter onExport, diff --git a/lib/common/widgets/flutter/vertical_tabs.dart b/lib/common/widgets/flutter/vertical_tabs.dart index 70ad39945..fd1c416e6 100644 --- a/lib/common/widgets/flutter/vertical_tabs.dart +++ b/lib/common/widgets/flutter/vertical_tabs.dart @@ -5,13 +5,10 @@ import 'dart:math' as math; import 'dart:ui' show SemanticsRole, lerpDouble; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:get/get_core/src/get_main.dart'; -import 'package:get/get_instance/src/extension_instance.dart'; const double _kTabWidth = 51.0; const double _kTextAndIconTabWidth = 72.0; @@ -1626,8 +1623,6 @@ class _VerticalTabBarState extends State { int get maxTabIndex => _indicatorPainter!.maxTabIndex; - final _mainCtr = Get.find(); - double _tabScrollOffset( int index, double viewportWidth, @@ -1650,16 +1645,7 @@ class _VerticalTabBarState extends State { final double paddingTop = widget.padding?.resolve(TextDirection.ltr).top ?? 0; return clampDouble( - tabCenter + - paddingTop - - viewportWidth / 2.0 + - (_mainCtr.useBottomNav && - switch (_mainCtr.barHideType) { - .instant => _mainCtr.showBottomBar?.value ?? true, - .sync => (_mainCtr.barOffset?.value ?? 0) == 0, - } - ? 80.0 - : 0.0), + tabCenter + paddingTop - viewportWidth / 2.0, minExtent, maxExtent, ); diff --git a/lib/common/widgets/gesture/mouse_interactive_viewer.dart b/lib/common/widgets/gesture/mouse_interactive_viewer.dart index f9c2d2875..bffbeccec 100644 --- a/lib/common/widgets/gesture/mouse_interactive_viewer.dart +++ b/lib/common/widgets/gesture/mouse_interactive_viewer.dart @@ -676,11 +676,11 @@ class _MouseInteractiveViewerState extends State } void _onPointerDown(PointerDownEvent event) { - widget.onPointerDown?.call(event); final localPosition = event.localPosition; if (localPosition.dx < 40 || localPosition.dy < 40) { return; } + widget.onPointerDown?.call(event); _scaleGestureRecognizer.addPointer(event); } diff --git a/lib/common/widgets/image_grid/image_grid_view.dart b/lib/common/widgets/image_grid/image_grid_view.dart index 91db5437e..245f6fa1c 100644 --- a/lib/common/widgets/image_grid/image_grid_view.dart +++ b/lib/common/widgets/image_grid/image_grid_view.dart @@ -55,12 +55,9 @@ class ImageModel { bool get isLongPic => _isLongPic ??= (height / width) > Style.imgMaxRatio && width > 100; - bool get isLivePhoto => - _isLivePhoto ??= enableLivePhoto && liveUrl?.isNotEmpty == true; + bool get isLivePhoto => _isLivePhoto ??= liveUrl?.isNotEmpty == true; bool get isGif => url.endsWith(ImageUtils.kSuffixGIF); - - static bool enableLivePhoto = Pref.enableLivePhoto; } class ImageGridView extends StatelessWidget { diff --git a/lib/common/widgets/image_viewer/gallery_viewer.dart b/lib/common/widgets/image_viewer/gallery_viewer.dart index dbab16ac8..65b6ad972 100644 --- a/lib/common/widgets/image_viewer/gallery_viewer.dart +++ b/lib/common/widgets/image_viewer/gallery_viewer.dart @@ -25,14 +25,11 @@ import 'package:PiliPlus/common/widgets/image_viewer/image.dart'; import 'package:PiliPlus/common/widgets/image_viewer/loading_indicator.dart'; import 'package:PiliPlus/common/widgets/image_viewer/viewer.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; -import 'package:PiliPlus/main.dart' show tmpPadding; import 'package:PiliPlus/models/common/image_preview_type.dart'; -import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; -import 'package:PiliPlus/utils/device_utils.dart'; +import 'package:PiliPlus/plugin/pl_player/view/simple_video_texture.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/max_screen_size.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -80,7 +77,7 @@ class _GalleryViewerState extends State late final int _quality; late final RxInt _currIndex; GlobalKey? _key; - EdgeInsets? _padding; + late EdgeInsets _padding; late bool _hasInit = false; Player? _player; @@ -175,42 +172,10 @@ class _GalleryViewerState extends State ); } - late final bool _hideSystemBar; - - void _initHideSystemBar() { - if (Platform.isAndroid) { - if (showSystemBar_) { - final size = DeviceUtils.size; - _hideSystemBar = !MaxScreenSize.isWindowMode( - width: size.width, - height: size.height, - ); - } else { - _hideSystemBar = false; - } - } else if (Platform.isIOS) { - _hideSystemBar = showSystemBar_; - } else { - _hideSystemBar = false; - } - } - @override void didChangeDependencies() { super.didChangeDependencies(); - if (_padding == null) { - final padding = MediaQuery.viewPaddingOf(context); - _padding = padding; - _initHideSystemBar(); - if (_hideSystemBar) { - tmpPadding = padding; - hideSystemBar()!.whenComplete( - () => WidgetsBinding.instance.addPostFrameCallback( - (_) => tmpPadding = null, - ), - ); - } - } + _padding = MediaQuery.viewPaddingOf(context); } Matrix4 _onTransform(double val) { @@ -302,9 +267,6 @@ class _GalleryViewerState extends State } Future.delayed(const Duration(milliseconds: 200), _currIndex.close); super.dispose(); - if (_hideSystemBar) { - showSystemBar(); - } } void _onPointerDown(PointerDownEvent event) { @@ -357,7 +319,7 @@ class _GalleryViewerState extends State right: 0, child: IgnorePointer( child: Container( - padding: _padding! + const EdgeInsets.fromLTRB(12, 8, 20, 8), + padding: _padding + const EdgeInsets.fromLTRB(12, 8, 20, 8), decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, @@ -512,7 +474,7 @@ class _GalleryViewerState extends State _horizontalDragGestureRecognizer, onChangePage: _onChangePage, child: FittedBox( - child: SimpleVideo( + child: SimpleVideoTexture( controller: _videoController!, fill: Colors.transparent, ), diff --git a/lib/common/widgets/pendant_avatar.dart b/lib/common/widgets/pendant_avatar.dart index 9589e381c..354007631 100644 --- a/lib/common/widgets/pendant_avatar.dart +++ b/lib/common/widgets/pendant_avatar.dart @@ -6,7 +6,6 @@ import 'package:PiliPlus/models/common/avatar_badge_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; class PendantAvatar extends StatelessWidget { @@ -35,8 +34,6 @@ class PendantAvatar extends StatelessWidget { ? .institution : .none; - static bool showDecorate = Pref.showDecorate; - final BadgeType badgeType; final String? url; final double preferredSize; @@ -51,7 +48,7 @@ class PendantAvatar extends StatelessWidget { @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; - final showPendant = showDecorate && pendantImage?.isNotEmpty == true; + final showPendant = pendantImage?.isNotEmpty == true; final size = showPendant ? preferredSize - pendentOffset : preferredSize; Widget? pendant; if (showPendant) { diff --git a/lib/common/widgets/progress_bar/audio_video_progress_bar.dart b/lib/common/widgets/progress_bar/audio_video_progress_bar.dart index 665d8fd6f..731c465e7 100644 --- a/lib/common/widgets/progress_bar/audio_video_progress_bar.dart +++ b/lib/common/widgets/progress_bar/audio_video_progress_bar.dart @@ -739,13 +739,14 @@ class RenderProgressBar extends RenderBox implements MouseTrackerAnnotation { }) { final baseBarPaint = Paint() ..color = color - ..strokeCap = StrokeCap.round + ..strokeCap = .square ..strokeWidth = _barHeight; final capRadius = _barHeight / 2; final adjustedWidth = availableSize.width - barHeight; final dx = widthProportion * adjustedWidth + capRadius; - final startPoint = Offset(capRadius, availableSize.height / 2); - final endPoint = Offset(dx, availableSize.height / 2); + final dy = availableSize.height / 2; + final startPoint = Offset(capRadius, dy); + final endPoint = Offset(dx, dy); canvas.drawLine(startPoint, endPoint, baseBarPaint); } diff --git a/lib/common/widgets/scaffold.dart b/lib/common/widgets/scaffold.dart new file mode 100644 index 000000000..ccda4121f --- /dev/null +++ b/lib/common/widgets/scaffold.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +Widget scaffold({ + Widget? appBar, + required Widget body, +}) { + if (appBar != null) { + body = Column( + children: [ + appBar, + Expanded(child: body), + ], + ); + } + return Material( + child: body, + ); +} diff --git a/lib/common/widgets/scale_app.dart b/lib/common/widgets/scale_app.dart deleted file mode 100644 index 57f7db0f1..000000000 --- a/lib/common/widgets/scale_app.dart +++ /dev/null @@ -1,121 +0,0 @@ -import 'dart:async' show scheduleMicrotask; -import 'dart:collection' show Queue; -import 'dart:ui' show PointerDataPacket; - -import 'package:flutter/gestures.dart' show PointerEventConverter; -import 'package:flutter/rendering.dart' show RenderView, ViewConfiguration; -import 'package:flutter/widgets.dart'; - -/// ref https://github.com/LastMonopoly/scaled_app - -/// Adapted from [WidgetsFlutterBinding] -/// -class ScaledWidgetsFlutterBinding extends WidgetsFlutterBinding { - ScaledWidgetsFlutterBinding._({double scaleFactor = 1.0}) - : _scaleFactor = scaleFactor; - - /// Calculate scale factor from device size. - double _scaleFactor; - - /// Update scaleFactor callback, then rebuild layout - set scaleFactor(double scaleFactor) { - if (_scaleFactor == scaleFactor) return; - _scaleFactor = scaleFactor; - handleMetricsChanged(); - } - - double devicePixelRatioScaled = 0; - - static ScaledWidgetsFlutterBinding? _binding; - - static ScaledWidgetsFlutterBinding get instance => _binding!; - - /// Scaling will be applied based on [scaleFactor] callback. - /// - static WidgetsBinding ensureInitialized({double scaleFactor = 1.0}) => - _binding ??= ScaledWidgetsFlutterBinding._(scaleFactor: scaleFactor); - - /// Override the method from [RendererBinding.createViewConfiguration] to - /// change what size or device pixel ratio the [RenderView] will use. - /// - /// See more: - /// * [RendererBinding.createViewConfiguration] - /// * [TestWidgetsFlutterBinding.createViewConfiguration] - @override - ViewConfiguration createViewConfigurationFor(RenderView renderView) { - final view = renderView.flutterView; - final devicePixelRatio = view.devicePixelRatio; - devicePixelRatioScaled = devicePixelRatio * _scaleFactor; - final BoxConstraints physicalConstraints = - BoxConstraints.fromViewConstraints(view.physicalConstraints); - return ViewConfiguration( - physicalConstraints: physicalConstraints, - logicalConstraints: physicalConstraints / devicePixelRatioScaled, - devicePixelRatio: devicePixelRatioScaled, - ); - } - - /// Adapted from [GestureBinding.initInstances] - @override - void initInstances() { - super.initInstances(); - platformDispatcher.onPointerDataPacket = _handlePointerDataPacket; - } - - @override - void unlocked() { - super.unlocked(); - _flushPointerEventQueue(); - } - - final Queue _pendingPointerEvents = Queue(); - - /// When we scale UI using [ViewConfiguration], [ui.window] stays the same. - /// - /// [GestureBinding] uses [platformDispatcher.implicitView.devicePixelRatio] for calculations, - /// so we override corresponding methods. - /// - void _handlePointerDataPacket(PointerDataPacket packet) { - // We convert pointer data to logical pixels so that e.g. the touch slop can be - // defined in a device-independent manner. - try { - _pendingPointerEvents.addAll( - PointerEventConverter.expand(packet.data, _devicePixelRatioForView), - ); - if (!locked) { - _flushPointerEventQueue(); - } - } catch (error, stack) { - FlutterError.reportError( - FlutterErrorDetails( - exception: error, - stack: stack, - library: 'gestures library', - context: ErrorDescription('while handling a pointer data packet'), - ), - ); - } - } - - double _devicePixelRatioForView(int viewId) => devicePixelRatioScaled; - - /// Dispatch a [PointerCancelEvent] for the given pointer soon. - /// - /// The pointer event will be dispatched before the next pointer event and - /// before the end of the microtask but not within this function call. - @override - void cancelPointer(int pointer) { - if (_pendingPointerEvents.isEmpty && !locked) { - scheduleMicrotask(_flushPointerEventQueue); - } - _pendingPointerEvents.addFirst(PointerCancelEvent(pointer: pointer)); - } - - void _flushPointerEventQueue() { - assert(!locked); - - while (_pendingPointerEvents.isNotEmpty) { - handlePointerEvent(_pendingPointerEvents.removeFirst()); - } - } -} diff --git a/lib/common/widgets/video_popup_menu.dart b/lib/common/widgets/video_popup_menu.dart index cde21a56f..2f1e674bb 100644 --- a/lib/common/widgets/video_popup_menu.dart +++ b/lib/common/widgets/video_popup_menu.dart @@ -7,10 +7,7 @@ import 'package:PiliPlus/models/model_video.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; -import 'package:PiliPlus/pages/video/ai_conclusion/view.dart'; -import 'package:PiliPlus/pages/video/introduction/ugc/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -61,34 +58,6 @@ class VideoPopupMenu extends StatelessWidget { const Icon(MdiIcons.clockTimeEightOutline, size: 16), () => UserHttp.toViewLater(bvid: videoItem.bvid), ), - if (videoItem.cid != null && Pref.enableAi) - _VideoCustomAction( - 'AI总结', - const Icon(CustomIcons.ai_circle, size: 16), - () async { - final res = await UgcIntroController.getAiConclusion( - videoItem.bvid!, - videoItem.cid!, - videoItem.owner.mid, - ); - if (res != null && context.mounted) { - showDialog( - context: context, - builder: (context) => Dialog( - child: Padding( - padding: const .symmetric(vertical: 14), - child: AiConclusionPanel.buildContent( - context, - Theme.of(context), - res, - tap: false, - ), - ), - ), - ); - } - }, - ), ], if (videoItem is! SpaceArchiveItem) ...[ _VideoCustomAction( diff --git a/lib/grpc/reply.dart b/lib/grpc/reply.dart index f399eb4f3..361bb184d 100644 --- a/lib/grpc/reply.dart +++ b/lib/grpc/reply.dart @@ -4,28 +4,11 @@ import 'package:PiliPlus/grpc/bilibili/pagination.pb.dart'; import 'package:PiliPlus/grpc/grpc_req.dart'; import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:fixnum/fixnum.dart'; abstract final class ReplyGrpc { - static bool antiGoodsReply = Pref.antiGoodsReply; - static RegExp replyRegExp = RegExp( - Pref.banWordForReply, - caseSensitive: false, - ); - static bool enableFilter = replyRegExp.pattern.isNotEmpty; - - // static Future replyInfo({required int rpid}) { - // return _request( - // GrpcUrl.replyInfo, - // ReplyInfoReq(rpid: Int64(rpid)), - // ReplyInfoReply.fromBuffer, - // onSuccess: (response) => response.reply, - // ); - // } - // ref BiliRoamingX - static bool needRemoveGoodGrpc(ReplyInfo reply) { + static bool needRemoveGrpc(ReplyInfo reply) { return (reply.content.urls.isNotEmpty && reply.content.urls.values.any((url) { return url.hasExtra() && @@ -36,11 +19,6 @@ abstract final class ReplyGrpc { reply.content.message.contains(Constants.goodsUrlPrefix); } - static bool needRemoveGrpc(ReplyInfo reply) { - return (enableFilter && replyRegExp.hasMatch(reply.content.message)) || - (antiGoodsReply && needRemoveGoodGrpc(reply)); - } - static Future> mainList({ int type = 1, required int oid, diff --git a/lib/http/download.dart b/lib/http/download.dart index c05093cb5..7d0b05454 100644 --- a/lib/http/download.dart +++ b/lib/http/download.dart @@ -31,7 +31,7 @@ abstract final class DownloadHttp { seasonId: entry.seasonId, epid: ep?.episodeId, qn: entry.preferedVideoQuality, - tryLook: !isLogin && Pref.p1080, + tryLook: !isLogin, videoType: switch (ep?.from) { 'pugv' => VideoType.pugv, != null when isLogin => VideoType.pgc, diff --git a/lib/http/init.dart b/lib/http/init.dart index 75d41cbb6..e618dfdee 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -19,7 +19,6 @@ import 'package:brotli/brotli.dart'; import 'package:dio/dio.dart'; import 'package:dio/io.dart'; import 'package:dio_http2_adapter/dio_http2_adapter.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; class Request { static const _gzipDecoder = GZipDecoder(); @@ -116,41 +115,16 @@ class Request { } static (IOHttpClientAdapter, ConnectionManager?) _createPool() { - final bool enableSystemProxy; - late final String systemProxyHost; - late final int? systemProxyPort; - if (Pref.enableSystemProxy) { - systemProxyHost = Pref.systemProxyHost; - systemProxyPort = int.tryParse(Pref.systemProxyPort); - enableSystemProxy = systemProxyPort != null && systemProxyHost.isNotEmpty; - } else { - enableSystemProxy = false; - } - final http11Adapter = IOHttpClientAdapter( - createHttpClient: enableSystemProxy - ? () => HttpClient() - ..idleTimeout = const Duration(seconds: 15) - ..autoUncompress = false - ..findProxy = ((_) => 'PROXY $systemProxyHost:$systemProxyPort') - ..badCertificateCallback = (cert, host, port) => true - : () => HttpClient() - ..idleTimeout = const Duration(seconds: 15) - ..autoUncompress = false, // Http2Adapter没有自动解压, 统一行为 + createHttpClient: () => HttpClient() + ..idleTimeout = const Duration(seconds: 15) + ..autoUncompress = false, // Http2Adapter没有自动解压, 统一行为 ); final connectionManager = _enableHttp2 ? ConnectionManager( idleTimeout: const Duration(seconds: 15), - onClientCreate: enableSystemProxy - ? (_, config) => config - ..proxy = Uri( - scheme: 'http', - host: systemProxyHost, - port: systemProxyPort, - ) - ..onBadCertificate = (_) => true - : Pref.badCertificateCallback + onClientCreate: Pref.badCertificateCallback ? (_, config) => config.onBadCertificate = (_) => true : null, ) @@ -195,15 +169,15 @@ class Request { } // 日志拦截器 输出请求、响应内容 - if (kDebugMode) { - dio.interceptors.add( - LogInterceptor( - request: false, - requestHeader: false, - responseHeader: false, - ), - ); - } + // if (kDebugMode) { + // dio.interceptors.add( + // LogInterceptor( + // request: false, + // requestHeader: false, + // responseHeader: false, + // ), + // ); + // } dio ..transformer = BackgroundTransformer() diff --git a/lib/http/video.dart b/lib/http/video.dart index 2766f3c06..1b99a89f3 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -31,23 +31,16 @@ import 'package:PiliPlus/models_new/video/video_shot/data.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_sign.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; -import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; -import 'package:PiliPlus/utils/recommend_filter.dart'; import 'package:PiliPlus/utils/request_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/wbi_sign.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart' show compute; -import 'package:protobuf/protobuf.dart'; /// view层根据 status 判断渲染逻辑 abstract final class VideoHttp { - static RegExp zoneRegExp = RegExp(Pref.banWordForZone, caseSensitive: false); - static bool enableFilter = zoneRegExp.pattern.isNotEmpty; - // 首页推荐视频 static Future>> rcmdVideoList({ required int ps, @@ -68,15 +61,7 @@ abstract final class VideoHttp { if (res.data['code'] == 0) { List list = []; for (final i in res.data['data']['item']) { - //过滤掉live与ad,以及拉黑用户 - if (i['goto'] == 'av' && - (i['owner'] != null && - !GlobalData().blackMids.contains(i['owner']['mid']))) { - RcmdVideoItemModel videoItem = RcmdVideoItemModel.fromJson(i); - if (!RecommendFilter.filter(videoItem)) { - list.add(videoItem); - } - } + list.add(RcmdVideoItemModel.fromJson(i)); } return Success(list); } else { @@ -142,20 +127,9 @@ abstract final class VideoHttp { List list = []; for (final i in res.data['data']['items']) { // 屏蔽推广和拉黑用户 - if (i['card_goto'] != 'ad_av' && - i['card_goto'] != 'ad_web_s' && - i['ad_info'] == null && - (i['args'] != null && - !GlobalData().blackMids.contains(i['args']['up_id']))) { - if (enableFilter && - i['args']?['tname'] != null && - zoneRegExp.hasMatch(i['args']['tname'])) { - continue; - } - RcmdVideoItemAppModel videoItem = RcmdVideoItemAppModel.fromJson(i); - if (!RecommendFilter.filter(videoItem)) { - list.add(videoItem); - } + final goto = i['card_goto']; + if (goto != 'ad_av' && goto != 'ad_web_s' && i['ad_info'] == null) { + list.add(RcmdVideoItemAppModel.fromJson(i)); } } return Success(list); @@ -176,19 +150,7 @@ abstract final class VideoHttp { if (res.data['code'] == 0) { List list = []; for (final i in res.data['data']['list']) { - if (!GlobalData().blackMids.contains(i['owner']['mid']) && - !RecommendFilter.filterTitle(i['title']) && - !RecommendFilter.filterLikeRatio( - i['stat']['like'], - i['stat']['view'], - )) { - if (enableFilter && - i['tname'] != null && - zoneRegExp.hasMatch(i['tname'])) { - continue; - } - list.add(HotVideoItemModel.fromJson(i)); - } + list.add(HotVideoItemModel.fromJson(i)); } return Success(list); } else { @@ -208,7 +170,6 @@ abstract final class VideoHttp { required bool tryLook, required VideoType videoType, String? language, - bool voiceBalance = false, }) async { final params = await WbiSign.makSign({ 'avid': ?avid, @@ -221,7 +182,7 @@ abstract final class VideoHttp { 'fnval': 4048, 'fourk': 1, 'fnver': 0, - 'voice_balance': voiceBalance ? 1 : 0, + 'voice_balance': 0, 'gaia_source': 'pre-load', 'isGaiaAvoided': true, 'web_location': 1315873, @@ -318,13 +279,11 @@ abstract final class VideoHttp { queryParameters: {'bvid': bvid}, ); if (res.data['code'] == 0) { - final items = (res.data['data'] as List?)?.map( - (i) => HotVideoItemModel.fromJson(i), + return Success( + (res.data['data'] as List?) + ?.map((i) => HotVideoItemModel.fromJson(i)) + .toList(), ); - final list = RecommendFilter.applyFilterToRelatedVideos - ? items?.where((i) => !RecommendFilter.filterAll(i)).toList() - : items?.toList(); - return Success(list); } else { return Error(res.data['message']); } @@ -561,13 +520,6 @@ abstract final class VideoHttp { if (res.data['code'] == 0) { try { final replyInfo = RequestUtils.replyCast(res.data['data']['reply']); - GStorage.reply?.put( - replyInfo.id.toString(), - (replyInfo.deepCopy() - ..unknownFields.clear() - ..clearTrackInfo()) - .writeToBuffer(), - ); return Success(replyInfo); } catch (e, s) { Utils.reportError(e, s); @@ -594,7 +546,6 @@ abstract final class VideoHttp { options: Options(contentType: Headers.formUrlEncodedContentType), ); if (res.data['code'] == 0) { - GStorage.reply?.delete(rpid.toString()); return const Success(null); } else { return const Error('请退出账号后重新登录'); @@ -860,23 +811,6 @@ abstract final class VideoHttp { return null; } - static bool _canAddRank(Map i) { - if (!GlobalData().blackMids.contains(i['owner']['mid']) && - !RecommendFilter.filterTitle(i['title']) && - !RecommendFilter.filterLikeRatio( - i['stat']['like'], - i['stat']['view'], - )) { - if (enableFilter && - i['tname'] != null && - zoneRegExp.hasMatch(i['tname'])) { - return false; - } - return true; - } - return false; - } - // 视频排行 static Future>> getRankVideoList( int rid, @@ -888,17 +822,7 @@ abstract final class VideoHttp { if (res.data['code'] == 0) { List list = []; for (final i in res.data['data']['list']) { - if (_canAddRank(i)) { - list.add(HotVideoItemModel.fromJson(i)); - // final List? others = i['others']; - // if (others != null && others.isNotEmpty) { - // for (final j in others) { - // if (_canAddRank(j)) { - // list.add(HotVideoItemModel.fromJson(j)); - // } - // } - // } - } + list.add(HotVideoItemModel.fromJson(i)); } return Success(list); } else { diff --git a/lib/main.dart b/lib/main.dart index 91b1ffbb3..15ef11148 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,7 +5,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/back_detector.dart'; import 'package:PiliPlus/common/widgets/custom_toast.dart'; import 'package:PiliPlus/common/widgets/route_aware_mixin.dart'; -import 'package:PiliPlus/common/widgets/scale_app.dart'; import 'package:PiliPlus/common/widgets/scroll_behavior.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/models/common/theme/theme_color_type.dart'; @@ -20,7 +19,6 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/device_utils.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/json_file_handler.dart'; -import 'package:PiliPlus/utils/max_screen_size.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; @@ -46,8 +44,6 @@ import 'package:window_manager/window_manager.dart' hide calcWindowPosition; WebViewEnvironment? webViewEnvironment; -EdgeInsets? tmpPadding; - Future _initDownPath() async { if (PlatformUtils.isDesktop) { final customDownPath = Pref.downloadPath; @@ -91,7 +87,7 @@ Future _initSdkInt() async { } void main() async { - ScaledWidgetsFlutterBinding.ensureInitialized(); + WidgetsFlutterBinding.ensureInitialized(); MediaKit.ensureInitialized(); await _initAppPath(); try { @@ -101,7 +97,6 @@ void main() async { if (kDebugMode) debugPrint('GStorage init error: $e'); exit(0); } - ScaledWidgetsFlutterBinding.instance.scaleFactor = Pref.uiScale; await Future.wait([_initDownPath(), _initTmpPath()]); Get ..lazyPut(AccountService.new) @@ -112,7 +107,7 @@ void main() async { if (PlatformUtils.isMobile) { await Future.wait([ - if (Platform.isAndroid) ...[_initSdkInt(), MaxScreenSize.init()], + if (Platform.isAndroid) _initSdkInt(), if (Pref.horizontalScreen) ?fullMode() else ?portraitUpMode(), setupServiceLocator(), ]); @@ -150,21 +145,23 @@ void main() async { } else if (PlatformUtils.isDesktop) { await windowManager.ensureInitialized(); - final windowOptions = WindowOptions( - minimumSize: const Size(400, 720), - skipTaskbar: false, - titleBarStyle: Pref.showWindowTitleBar ? .normal : .hidden, - title: Constants.appName, + windowManager.waitUntilReadyToShow( + const WindowOptions( + minimumSize: Size(400, 720), + skipTaskbar: false, + titleBarStyle: .normal, + title: Constants.appName, + ), + () async { + final windowSize = Pref.windowSize; + await windowManager.setBounds( + await calcWindowPosition(windowSize) & windowSize, + ); + if (Pref.isWindowMaximized) await windowManager.maximize(); + await windowManager.show(); + await windowManager.focus(); + }, ); - windowManager.waitUntilReadyToShow(windowOptions, () async { - final windowSize = Pref.windowSize; - await windowManager.setBounds( - await calcWindowPosition(windowSize) & windowSize, - ); - if (Pref.isWindowMaximized) await windowManager.maximize(); - await windowManager.show(); - await windowManager.focus(); - }); } if (Pref.dynamicColor) { @@ -289,38 +286,13 @@ class MyApp extends StatelessWidget { } static Widget _builder(BuildContext context, Widget? child) { - final uiScale = Pref.uiScale; - final mediaQuery = MediaQuery.of(context); - final textScaler = TextScaler.linear(Pref.defaultTextScale); - if (uiScale != 1.0) { - child = MediaQuery( - data: mediaQuery.copyWith( - textScaler: textScaler, - size: mediaQuery.size / uiScale, - padding: (tmpPadding ?? mediaQuery.padding) / uiScale, - viewInsets: mediaQuery.viewInsets / uiScale, - viewPadding: (tmpPadding ?? mediaQuery.viewPadding) / uiScale, - devicePixelRatio: mediaQuery.devicePixelRatio * uiScale, - ), - child: child!, - ); - } else { - child = MediaQuery( - data: mediaQuery.copyWith( - textScaler: textScaler, - padding: tmpPadding, - viewPadding: tmpPadding, - ), - child: child!, - ); - } if (PlatformUtils.isDesktop) { return BackDetector( onBack: _onBack, - child: child, + child: child!, ); } - return child; + return child!; } /// from [DynamicColorBuilderState.initPlatformState] @@ -335,7 +307,7 @@ class MyApp extends StatelessWidget { debugPrint('dynamic_color: Core palette detected.'); } _light = corePalette.toColorScheme(); - _dark = corePalette.toColorScheme(brightness: Brightness.dark); + _dark = corePalette.toColorScheme(brightness: .dark); return true; } } on PlatformException { diff --git a/lib/models/common/bar_hide_type.dart b/lib/models/common/bar_hide_type.dart deleted file mode 100644 index db9fffed4..000000000 --- a/lib/models/common/bar_hide_type.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:PiliPlus/models/common/enum_with_label.dart'; - -enum BarHideType with EnumWithLabel { - instant('即时'), - sync('同步'), - ; - - @override - final String label; - const BarHideType(this.label); -} diff --git a/lib/models/common/dynamic/up_panel_position.dart b/lib/models/common/dynamic/up_panel_position.dart index d7697e781..09c4eda00 100644 --- a/lib/models/common/dynamic/up_panel_position.dart +++ b/lib/models/common/dynamic/up_panel_position.dart @@ -2,8 +2,6 @@ enum UpPanelPosition { top('顶部'), leftFixed('左侧常驻'), rightFixed('右侧常驻'), - leftDrawer('左侧抽屉'), - rightDrawer('右侧抽屉'), ; final String label; diff --git a/lib/models/common/member/tab_type.dart b/lib/models/common/member/tab_type.dart index 688e73c78..a5bfcead3 100644 --- a/lib/models/common/member/tab_type.dart +++ b/lib/models/common/member/tab_type.dart @@ -1,5 +1,3 @@ -import 'package:PiliPlus/utils/storage_pref.dart'; - enum MemberTabType { def('默认'), home('主页'), @@ -11,12 +9,7 @@ enum MemberTabType { shop('小店'), ; - static bool showMemberShop = Pref.showMemberShop; - static bool contains(String type) { - if (type == shop.name && !showMemberShop) { - return false; - } for (final e in MemberTabType.values) { if (e.name == type) { return true; diff --git a/lib/models/common/reply/reply_sort_type.dart b/lib/models/common/reply/reply_sort_type.dart index 74c4509a8..6ee4486ce 100644 --- a/lib/models/common/reply/reply_sort_type.dart +++ b/lib/models/common/reply/reply_sort_type.dart @@ -1,10 +1,11 @@ enum ReplySortType { - time('最新评论', '最新'), - hot('最热评论', '最热'), + time('最新评论', '最新', text: '按时间'), + hot('最热评论', '最热', text: '按热度'), select('精选评论', '精选'), ; final String title; final String label; - const ReplySortType(this.title, this.label); + final String? text; + const ReplySortType(this.title, this.label, {this.text}); } diff --git a/lib/models/common/setting_type.dart b/lib/models/common/setting_type.dart index 366623f60..38831f8ba 100644 --- a/lib/models/common/setting_type.dart +++ b/lib/models/common/setting_type.dart @@ -1,11 +1,9 @@ enum SettingType { privacySetting('隐私设置'), - recommendSetting('推荐流设置'), videoSetting('音视频设置'), playSetting('播放器设置'), styleSetting('外观设置'), extraSetting('其它设置'), - webdavSetting('WebDAV 设置'), about('关于'), ; diff --git a/lib/models/common/sponsor_block/segment_model.dart b/lib/models/common/sponsor_block/segment_model.dart index 496b9d99b..b723db640 100644 --- a/lib/models/common/sponsor_block/segment_model.dart +++ b/lib/models/common/sponsor_block/segment_model.dart @@ -27,7 +27,7 @@ class SegmentModel implements Comparable { if (config != null) { skipType = config.blockSettings[segmentType.index].second; if (skipType != SkipType.showOnly) { - if (segment.isEq || segment.length < config.blockLimit) { + if (segment.isEq || segment.length < 0) { skipType = SkipType.showOnly; } } diff --git a/lib/models/common/super_chat_type.dart b/lib/models/common/super_chat_type.dart deleted file mode 100644 index 10a2451a0..000000000 --- a/lib/models/common/super_chat_type.dart +++ /dev/null @@ -1,9 +0,0 @@ -enum SuperChatType { - valid('有效时间内显示'), - persist('常驻显示'), - disable('不显示'), - ; - - final String title; - const SuperChatType(this.title); -} diff --git a/lib/models/common/super_resolution_type.dart b/lib/models/common/super_resolution_type.dart deleted file mode 100644 index 792ac9f8d..000000000 --- a/lib/models/common/super_resolution_type.dart +++ /dev/null @@ -1,12 +0,0 @@ -import 'package:PiliPlus/models/common/enum_with_label.dart'; - -enum SuperResolutionType with EnumWithLabel { - disable('禁用'), - efficiency('效率'), - quality('画质'), - ; - - @override - final String label; - const SuperResolutionType(this.label); -} diff --git a/lib/models/common/video/subtitle_pref_type.dart b/lib/models/common/video/subtitle_pref_type.dart deleted file mode 100644 index 265cdb08b..000000000 --- a/lib/models/common/video/subtitle_pref_type.dart +++ /dev/null @@ -1,10 +0,0 @@ -enum SubtitlePrefType { - off('默认不显示字幕'), - on('优先选择非自动生成(ai)字幕'), - withoutAi('跳过自动生成(ai)字幕,选择第一个可用字幕'), - auto('静音时等同第二项,非静音时等同第三项'), - ; - - final String desc; - const SubtitlePrefType(this.desc); -} diff --git a/lib/models/dynamics/result.dart b/lib/models/dynamics/result.dart index b35d03600..c9dded34b 100644 --- a/lib/models/dynamics/result.dart +++ b/lib/models/dynamics/result.dart @@ -1,6 +1,5 @@ import 'dart:convert'; -import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart'; import 'package:PiliPlus/models/model_avatar.dart'; @@ -44,8 +43,6 @@ class DynamicsDataModel { ); static bool enableFilter = banWordForDyn.pattern.isNotEmpty; - static bool antiGoodsDyn = Pref.antiGoodsDyn; - DynamicsDataModel.fromJson( Map json, { DynamicsTabType type = DynamicsTabType.all, @@ -60,11 +57,10 @@ class DynamicsDataModel { type != DynamicsTabType.up && tempBannedList?.isNotEmpty == true; for (final e in list) { DynamicItemModel item = DynamicItemModel.fromJson(e); - if (antiGoodsDyn && - (item.orig?.modules.moduleDynamic?.additional?.type == - 'ADDITIONAL_TYPE_GOODS' || - item.modules.moduleDynamic?.additional?.type == - 'ADDITIONAL_TYPE_GOODS')) { + if ((item.orig?.modules.moduleDynamic?.additional?.type == + 'ADDITIONAL_TYPE_GOODS' || + item.modules.moduleDynamic?.additional?.type == + 'ADDITIONAL_TYPE_GOODS')) { continue; } if (enableFilter) { @@ -163,7 +159,6 @@ class ItemModulesModel { ModuleDynamicModel? moduleDynamic; // ModuleInterModel? moduleInter; ModuleInteraction? moduleInteraction; - ModuleDispute? moduleDispute; // 专栏 ModuleTop? moduleTop; @@ -173,9 +168,6 @@ class ItemModulesModel { ModuleBlocked? moduleBlocked; ModuleFold? moduleFold; - static bool showDynDispute = Pref.showDynDispute; - static bool showDynInteraction = Pref.showDynInteraction; - ItemModulesModel.fromJson(Map json) { moduleAuthor = json['module_author'] != null ? ModuleAuthorModel.fromJson(json['module_author']) @@ -192,16 +184,9 @@ class ItemModulesModel { moduleFold = json['module_fold'] != null ? ModuleFold.fromJson(json['module_fold']) : null; - if (showDynInteraction) { - moduleInteraction = json['module_interaction'] != null - ? ModuleInteraction.fromJson(json['module_interaction']) - : null; - } - if (showDynDispute) { - moduleDispute = json['module_dispute'] != null - ? ModuleDispute.fromJson(json['module_dispute']) - : null; - } + moduleInteraction = json['module_interaction'] != null + ? ModuleInteraction.fromJson(json['module_interaction']) + : null; } ItemModulesModel.fromOpusJson(List json) { @@ -252,18 +237,6 @@ class ItemModulesModel { } } -class ModuleDispute { - String? title; - String? desc; - String? jumpUrl; - - ModuleDispute.fromJson(Map json) { - title = json['title']; - desc = json['desc']; - jumpUrl = json['jump_url']; - } -} - class ModuleInteraction { List? items; @@ -424,13 +397,9 @@ class ModuleAuthorModel extends Avatar { pubTime = json['pub_time']; pubTs = json['pub_ts'] == 0 ? null : safeToInt(json['pub_ts']); type = json['type']; - if (PendantAvatar.showDecorate) { - decorate = json['decorate'] == null - ? null - : Decorate.fromJson(json['decorate']); - } else { - pendant = null; - } + decorate = json['decorate'] == null + ? null + : Decorate.fromJson(json['decorate']); isTop = json['is_top']; badgeText = nonNullOrEmptyString(json['icon_badge']?['text']); } diff --git a/lib/models_new/live/live_danmaku/danmaku_msg.dart b/lib/models_new/live/live_danmaku/danmaku_msg.dart index 2d6af8677..a8837d15b 100644 --- a/lib/models_new/live/live_danmaku/danmaku_msg.dart +++ b/lib/models_new/live/live_danmaku/danmaku_msg.dart @@ -2,7 +2,6 @@ import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models_new/live/live_danmaku/live_emote.dart'; import 'package:PiliPlus/models_new/live/live_medal_wall/uinfo_medal.dart'; import 'package:PiliPlus/pages/danmaku/danmaku_model.dart'; -import 'package:PiliPlus/utils/global_data.dart'; class DanmakuMsg { final String name; @@ -56,9 +55,7 @@ class DanmakuMsg { ts: checkInfo['ts'], ct: checkInfo['ct'], ), - medalInfo: !GlobalData().showMedal || medal == null - ? null - : UinfoMedal.fromJson(medal), + medalInfo: medal == null ? null : UinfoMedal.fromJson(medal), ); } diff --git a/lib/models_new/live/live_superchat/item.dart b/lib/models_new/live/live_superchat/item.dart index 3862d8592..f2e978ab1 100644 --- a/lib/models_new/live/live_superchat/item.dart +++ b/lib/models_new/live/live_superchat/item.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/models_new/live/live_medal_wall/uinfo_medal.dart'; import 'package:PiliPlus/models_new/live/live_superchat/user_info.dart'; -import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/parse_int.dart'; import 'package:PiliPlus/utils/parse_string.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -78,7 +77,7 @@ class SuperChatItem { token: json['token'], ts: safeToInt(json['ts'])!, userInfo: UserInfo.fromJson(json['user_info'] as Map), - medalInfo: !GlobalData().showMedal || json['uinfo']?['medal'] == null + medalInfo: json['uinfo']?['medal'] == null ? null : UinfoMedal.fromJson(json['uinfo']['medal']), ); diff --git a/lib/pages/about/view.dart b/lib/pages/about/view.dart index cdb0faa11..81e750918 100644 --- a/lib/pages/about/view.dart +++ b/lib/pages/about/view.dart @@ -8,10 +8,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/dialog/export_import.dart'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/services/logger.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/device_utils.dart'; @@ -71,7 +73,7 @@ class _AboutPageState extends State { onSubmitted: (value) { Get.back(); if (value.isNotEmpty) { - PageUtils.handleWebview(value, inApp: true); + PiliScheme.routePushFromUrl(value); } }, ), @@ -86,9 +88,8 @@ class _AboutPageState extends State { final subTitleStyle = TextStyle(fontSize: 13, color: outline); final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( + return scaffold( appBar: showAppBar ? AppBar(title: const Text('关于')) : null, - resizeToAvoidBottomInset: false, body: ListView( padding: EdgeInsets.only( left: showAppBar ? padding.left : 0, @@ -141,10 +142,7 @@ class _AboutPageState extends State { : () => Utils.copyText(currentVersion), title: const Text('当前版本'), leading: const Icon(Icons.commit_outlined), - trailing: Text( - currentVersion, - style: subTitleStyle, - ), + trailing: Text(currentVersion, style: subTitleStyle), ), ListTile( title: Text( @@ -173,6 +171,13 @@ Commit Hash: ${BuildConfig.commitHash}''', title: const Text('Source Code'), subtitle: Text(Constants.sourceCodeUrl, style: subTitleStyle), ), + ListTile( + onTap: () => Get.to( + const LicensePage(applicationVersion: BuildConfig.versionName), + ), + leading: const Icon(Icons.topic_outlined), + title: const Text('Open Source License'), + ), if (Platform.isAndroid) ListTile( onTap: () => Utils.channel.invokeMethod('linkVerifySettings'), @@ -184,17 +189,6 @@ Commit Hash: ${BuildConfig.commitHash}''', color: outline, ), ), - ListTile( - onTap: () => - PageUtils.launchURL('${Constants.sourceCodeUrl}/issues'), - leading: const Icon(Icons.feedback_outlined), - title: const Text('问题反馈'), - trailing: Icon( - Icons.arrow_forward, - size: 16, - color: outline, - ), - ), ListTile( onTap: () => Get.toNamed('/logs'), onLongPress: LoggerUtils.clearLogs, diff --git a/lib/pages/article/controller.dart b/lib/pages/article/controller.dart index 5a1c8da3c..b1535d0bc 100644 --- a/lib/pages/article/controller.dart +++ b/lib/pages/article/controller.dart @@ -33,9 +33,6 @@ class ArticleController extends CommonDynController { late final RxInt topIndex = 0.obs; - @override - dynamic get sourceId => commentType == 12 ? 'cv$commentId' : id; - final RxBool isLoaded = false.obs; DynamicItemModel? opusData; // 标题信息从summary获取, 动态没有favorite ArticleViewData? articleData; @@ -99,12 +96,10 @@ class ArticleController extends CommonDynController { opusData = response; commentType = response.basic!.commentType!; commentId = int.parse(response.basic!.commentIdStr!); - if (showDynActionBar) { - if (response.modules.moduleStat != null) { - stats.value = response.modules.moduleStat; - } else { - getArticleInfo(); - } + if (response.modules.moduleStat != null) { + stats.value = response.modules.moduleStat; + } else { + getArticleInfo(); } summary ..author ??= response.modules.moduleAuthor @@ -125,9 +120,7 @@ class ArticleController extends CommonDynController { ..title ??= response.title ..cover ??= response.originImageUrls?.firstOrNull; - if (showDynActionBar) { - getArticleInfo(); - } + getArticleInfo(); return true; } else { loadingState.value = res as Error; diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index a5b16b122..4694bb962 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/badge.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; @@ -15,6 +16,7 @@ import 'package:PiliPlus/pages/article/widgets/html_render.dart'; import 'package:PiliPlus/pages/article/widgets/opus_content.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; import 'package:PiliPlus/pages/dynamics_repost/view.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; @@ -64,17 +66,25 @@ class _ArticlePageState extends CommonDynPageState { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: _buildAppBar(), - body: Padding( - padding: EdgeInsets.only(left: padding.left, right: padding.right), - child: _buildPage(theme), - ), - floatingActionButtonLocation: floatingActionButtonLocation, - floatingActionButton: SlideTransition( - position: fabAnimation, - child: _buildBottom(theme), + body: Stack( + clipBehavior: .none, + children: [ + Padding( + padding: .only(left: padding.left, right: padding.right), + child: _buildPage(theme), + ), + Positioned( + left: 0, + right: 0, + bottom: 0, + child: SlideTransition( + position: fabAnimation, + child: _buildBottom(theme), + ), + ), + ], ), ); } @@ -422,7 +432,7 @@ class _ArticlePageState extends CommonDynPageState { if (!isPortrait) ratioWidget(maxWidth), IconButton( tooltip: '浏览器打开', - onPressed: () => PageUtils.inAppWebview(controller.url), + onPressed: () => WebViewPage.toWebView(controller.url), icon: const Icon(Icons.open_in_browser_outlined, size: 19), ), PopupMenuButton( @@ -496,10 +506,6 @@ class _ArticlePageState extends CommonDynPageState { ); Widget _buildBottom(ThemeData theme) { - if (!controller.showDynActionBar) { - return fabButton; - } - late final primary = theme.colorScheme.primary; late final outline = theme.colorScheme.outline; late final btnStyle = TextButton.styleFrom( diff --git a/lib/pages/article_list/view.dart b/lib/pages/article_list/view.dart index 77c2d863e..27e608792 100644 --- a/lib/pages/article_list/view.dart +++ b/lib/pages/article_list/view.dart @@ -8,10 +8,10 @@ import 'package:PiliPlus/models_new/article/article_list/article.dart'; import 'package:PiliPlus/models_new/article/article_list/list.dart'; import 'package:PiliPlus/pages/article_list/controller.dart'; import 'package:PiliPlus/pages/article_list/widgets/item.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/num_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -193,7 +193,7 @@ class _ArticleListPageState extends State with GridMixin { actions: [ IconButton( tooltip: '浏览器打开', - onPressed: () => PageUtils.inAppWebview( + onPressed: () => WebViewPage.toWebView( '${HttpString.baseUrl}/read/mobile-readlist/rl${_controller.id}', ), icon: const Icon(Icons.open_in_browser_outlined, size: 19), diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 26799a334..55310525c 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -9,6 +9,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image_viewer/hero.dart'; import 'package:PiliPlus/common/widgets/progress_bar/audio_video_progress_bar.dart'; import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pb.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_type.dart'; @@ -89,8 +90,7 @@ class _AudioPageState extends State { final colorScheme = ColorScheme.of(context); final isPortrait = MediaQuery.sizeOf(context).isPortrait; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( actions: [ if (_controller.isUgc && _controller.enableSponsorBlock) @@ -897,8 +897,9 @@ class _AudioPageState extends State { Expanded( child: Center( child: ListView( - key: const PageStorageKey(_AudioPageState), + padding: .zero, shrinkWrap: true, + key: const PageStorageKey(_AudioPageState), physics: const ClampingScrollPhysics(), children: [ Center( diff --git a/lib/pages/blacklist/view.dart b/lib/pages/blacklist/view.dart index 584e07bc2..5c1fea775 100644 --- a/lib/pages/blacklist/view.dart +++ b/lib/pages/blacklist/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/blacklist/list.dart'; @@ -34,8 +35,7 @@ class _BlackListPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Obx( () => Text( diff --git a/lib/pages/bubble/view.dart b/lib/pages/bubble/view.dart index 159ece5ca..45eb1b82e 100644 --- a/lib/pages/bubble/view.dart +++ b/lib/pages/bubble/view.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/bubble/dyn_list.dart'; @@ -132,8 +133,7 @@ class _BubblePageState extends State ], ); } - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Obx(() { final tribeName = _controller.tribeName.value; diff --git a/lib/pages/common/common_page.dart b/lib/pages/common/common_page.dart deleted file mode 100644 index f94ee6153..000000000 --- a/lib/pages/common/common_page.dart +++ /dev/null @@ -1,112 +0,0 @@ -import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/pages/home/controller.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; -import 'package:flutter/foundation.dart' show clampDouble; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -abstract class CommonPageState extends State { - RxDouble? _barOffset; - RxBool? _showTopBar; - RxBool? _showBottomBar; - final _mainController = Get.find(); - - bool get needsCorrection => false; - - @override - void initState() { - super.initState(); - _barOffset = _mainController.barOffset; - _showBottomBar = _mainController.showBottomBar; - try { - _showTopBar = Get.find().showTopBar; - } catch (_) {} - } - - Widget onBuild(Widget child) { - if (_barOffset != null) { - return NotificationListener( - onNotification: onNotificationType2, - child: child, - ); - } - if (_showTopBar != null || _showBottomBar != null) { - return NotificationListener( - onNotification: onNotificationType1, - child: child, - ); - } - return child; - } - - bool onNotificationType1(UserScrollNotification notification) { - if (!_mainController.useBottomNav) return false; - if (notification.metrics.axis == .horizontal) return false; - switch (notification.direction) { - case .forward: - _showTopBar?.value = true; - _showBottomBar?.value = true; - case .reverse: - _showTopBar?.value = false; - _showBottomBar?.value = false; - case _: - } - return false; - } - - void _updateOffset(double scrollDelta) { - _barOffset!.value = clampDouble( - _barOffset!.value + scrollDelta, - 0.0, - Style.topBarHeight, - ); - } - - bool onNotificationType2(ScrollNotification notification) { - if (!_mainController.useBottomNav) return false; - - final metrics = notification.metrics; - if (metrics.axis == .horizontal) return false; - - if (notification is ScrollUpdateNotification) { - if (notification.dragDetails == null) return false; - final pixel = metrics.pixels; - final scrollDelta = notification.scrollDelta ?? 0; - if (pixel < 0.0 && scrollDelta > 0) return false; - if (needsCorrection) { - final value = _barOffset!.value; - final newValue = clampDouble( - value + scrollDelta, - 0.0, - Style.topBarHeight, - ); - final offset = value - newValue; - if (offset != 0) { - _barOffset!.value = newValue; - if (pixel < 0.0 && scrollDelta < 0.0 && value > 0.0) { - return false; - } - Scrollable.of(notification.context!).position.correctBy(offset); - } - } else { - _updateOffset(scrollDelta); - } - return false; - } - - if (notification is OverscrollNotification) { - _updateOffset(notification.overscroll); - return false; - } - - return false; - } - - @override - void dispose() { - _barOffset = null; - _showTopBar = null; - _showBottomBar = null; - super.dispose(); - } -} diff --git a/lib/pages/common/dyn/common_dyn_controller.dart b/lib/pages/common/dyn/common_dyn_controller.dart index 8aefd2fd2..a105f7daa 100644 --- a/lib/pages/common/dyn/common_dyn_controller.dart +++ b/lib/pages/common/dyn/common_dyn_controller.dart @@ -14,13 +14,11 @@ abstract class CommonDynController extends ReplyController { late final horizontalPreview = Pref.horizontalPreview; late final List ratio = Pref.dynamicDetailRatio; - late final showDynActionBar = Pref.showDynActionBar; - @override Future> customGetData() => ReplyGrpc.mainList( type: replyType, oid: oid, - mode: mode.value, + mode: mode, cursorNext: cursorNext, offset: paginationReply?.nextOffset, ); diff --git a/lib/pages/common/dyn/common_dyn_page.dart b/lib/pages/common/dyn/common_dyn_page.dart index 320e1995f..b70b1625a 100644 --- a/lib/pages/common/dyn/common_dyn_page.dart +++ b/lib/pages/common/dyn/common_dyn_page.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' @@ -190,8 +191,7 @@ abstract class CommonDynPageState extends State ), ); if (showBackBtn) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('评论详情'), shape: Border( @@ -269,16 +269,6 @@ abstract class CommonDynPageState extends State icon: const Icon(CustomIcons.splitscreen_rotate_90, size: 19), ); - FloatingActionButtonLocation get floatingActionButtonLocation => - controller.showDynActionBar - ? const ActionBarLocation() - : const NoBottomPaddingFabLocation(); - - Widget get fabButton => Padding( - padding: .only(bottom: padding.bottom + kFloatingActionButtonMargin), - child: replyButton, - ); - Widget get replyButton => FloatingActionButton( heroTag: null, onPressed: () { diff --git a/lib/pages/common/fab_mixin.dart b/lib/pages/common/fab_mixin.dart index 50255f8c7..e97627586 100644 --- a/lib/pages/common/fab_mixin.dart +++ b/lib/pages/common/fab_mixin.dart @@ -40,39 +40,3 @@ mixin FabMixin on State, TickerProvider { super.dispose(); } } - -mixin _NoRightMarginMixin on StandardFabLocation { - @override - double getOffsetX(scaffoldGeometry, _) { - return scaffoldGeometry.scaffoldSize.width - - scaffoldGeometry.minInsets.right - - scaffoldGeometry.floatingActionButtonSize.width; - } -} - -mixin _NoBottomPaddingMixin on StandardFabLocation { - @override - double getOffsetY(scaffoldGeometry, _) { - return scaffoldGeometry.contentBottom - - scaffoldGeometry.floatingActionButtonSize.height; - } -} - -class NoRightMarginFabLocation extends StandardFabLocation - with FabFloatOffsetY, _NoRightMarginMixin { - const NoRightMarginFabLocation(); -} - -class NoBottomPaddingFabLocation extends StandardFabLocation - with FabEndOffsetX, _NoBottomPaddingMixin { - const NoBottomPaddingFabLocation(); -} - -class ActionBarLocation extends StandardFabLocation with _NoBottomPaddingMixin { - const ActionBarLocation(); - - @override - double getOffsetX(scaffoldGeometry, _) { - return 0.0; - } -} diff --git a/lib/pages/common/publish/common_publish_page.dart b/lib/pages/common/publish/common_publish_page.dart index 54995ecd8..d585ad24d 100644 --- a/lib/pages/common/publish/common_publish_page.dart +++ b/lib/pages/common/publish/common_publish_page.dart @@ -4,7 +4,6 @@ import 'dart:math' show max; import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:chat_bottom_container/chat_bottom_container.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -28,9 +27,7 @@ abstract class CommonPublishPageState extends State with WidgetsBindingObserver { late final FocusNode focusNode; - late final controller = ChatBottomPanelContainerController( - uiScale: Pref.uiScale, - ); + late final controller = ChatBottomPanelContainerController(); TextEditingController get editController; final Rx panelType = PanelType.none.obs; diff --git a/lib/pages/common/reply_controller.dart b/lib/pages/common/reply_controller.dart index 01ad1b9e5..8ba851731 100644 --- a/lib/pages/common/reply_controller.dart +++ b/lib/pages/common/reply_controller.dart @@ -9,7 +9,6 @@ import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/pages/common/publish/publish_route.dart'; import 'package:PiliPlus/pages/video/reply_new/view.dart'; import 'package:PiliPlus/utils/reply_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:fixnum/fixnum.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -18,8 +17,8 @@ import 'package:get/get.dart'; abstract class ReplyController extends CommonListController { final RxInt count = (-1).obs; - late final Rx sortType; - late final Rx mode; + late final Rx sortType = Rx(.hot); + Mode mode = Mode.MAIN_LIST_HOT; final savedReplies = ?>{}; @@ -32,22 +31,6 @@ abstract class ReplyController extends CommonListController { @override bool? get hasFooter => true; - // comment antifraud - late final _enableCommAntifraud = Pref.enableCommAntifraud; - late final _biliSendCommAntifraud = Pref.biliSendCommAntifraud; - bool get enableCommAntifraud => - _enableCommAntifraud || _biliSendCommAntifraud; - dynamic get sourceId; - - @override - void onInit() { - super.onInit(); - final cacheSortType = Pref.replySortType; - sortType = cacheSortType.obs; - mode = - (cacheSortType == .time ? Mode.MAIN_LIST_TIME : Mode.MAIN_LIST_HOT).obs; - } - @override void checkIsEnd(int length) { final count = this.count.value; @@ -89,15 +72,15 @@ abstract class ReplyController extends CommonListController { void queryBySort() { if (isLoading) return; switch (sortType.value) { - case ReplySortType.time: - sortType.value = ReplySortType.hot; - mode.value = Mode.MAIN_LIST_HOT; + case .time: + sortType.value = .hot; + mode = Mode.MAIN_LIST_HOT; break; - case ReplySortType.hot: - sortType.value = ReplySortType.time; - mode.value = Mode.MAIN_LIST_TIME; + case .hot: + sortType.value = .time; + mode = Mode.MAIN_LIST_TIME; break; - case ReplySortType.select: + case .select: return; } onReload(); @@ -193,9 +176,7 @@ abstract class ReplyController extends CommonListController { count.value += 1; // check reply - if (enableCommAntifraud) { - onCheckReply(replyInfo, isManual: false); - } + onCheckReply(replyInfo, isManual: false); } }, ); @@ -216,8 +197,6 @@ abstract class ReplyController extends CommonListController { void onCheckReply(ReplyInfo replyInfo, {required bool isManual}) { ReplyUtils.onCheckReply( replyInfo: replyInfo, - biliSendCommAntifraud: _biliSendCommAntifraud, - sourceId: sourceId, isManual: isManual, ); } diff --git a/lib/pages/common/search/common_search_page.dart b/lib/pages/common/search/common_search_page.dart index 3855836e5..65011e1fc 100644 --- a/lib/pages/common/search/common_search_page.dart +++ b/lib/pages/common/search/common_search_page.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart'; @@ -36,7 +37,7 @@ abstract class CommonSearchPageState } Widget _build(bool multiSelect) { - return Scaffold( + return scaffold( appBar: _buildBar(multiSelect), body: CustomScrollView( physics: const AlwaysScrollableScrollPhysics(), diff --git a/lib/pages/contact/view.dart b/lib/pages/contact/view.dart index 4f31c8f7b..2081c1ac9 100644 --- a/lib/pages/contact/view.dart +++ b/lib/pages/contact/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/pages/fan/view.dart'; import 'package:PiliPlus/pages/follow/child/child_view.dart'; @@ -39,8 +40,7 @@ class _ContactPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('通讯录'), bottom: TabBar( diff --git a/lib/pages/danmaku/controller.dart b/lib/pages/danmaku/controller.dart index 6206c27f0..53eb2e9cd 100644 --- a/lib/pages/danmaku/controller.dart +++ b/lib/pages/danmaku/controller.dart @@ -17,11 +17,10 @@ class PlDanmakuController { this._cid, this._plPlayerController, this._isFileSource, - ) : _mergeDanmaku = _plPlayerController.mergeDanmaku; + ); final int _cid; final PlPlayerController _plPlayerController; - final bool _mergeDanmaku; final bool _isFileSource; late final _isLogin = Accounts.main.isLogin; @@ -66,7 +65,6 @@ class PlDanmakuController { void handleDanmaku(List elems) { if (elems.isEmpty) return; - final uniques = HashMap(); final filters = _plPlayerController.filters; final danmakuWeight = DanmakuOptions.danmakuWeight; @@ -77,16 +75,6 @@ class PlDanmakuController { } if (!element.isSelf) { - if (_mergeDanmaku) { - final elem = uniques[element.content]; - if (elem == null) { - uniques[element.content] = element..count = 1; - } else { - elem.count++; - continue; - } - } - if (element.weight < danmakuWeight || (shouldFilter && filters.remove(element))) { continue; diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index 40e57639e..0ae5563c3 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -138,9 +138,7 @@ class _PlDanmakuState extends State { ? Colors.white : DmUtils.decimalToColor(e.color), type: DmUtils.getPosition(e.mode), - isColorful: - playerController.showVipDanmaku && - e.colorful == DmColorfulType.VipGradualColor, + isColorful: e.colorful == DmColorfulType.VipGradualColor, count: e.count > 1 ? e.count : null, selfSend: e.isSelf, extra: VideoDanmaku( diff --git a/lib/pages/danmaku_block/view.dart b/lib/pages/danmaku_block/view.dart index 6e4e349de..1cc2b4392 100644 --- a/lib/pages/danmaku_block/view.dart +++ b/lib/pages/danmaku_block/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/models/common/dm_block_type.dart'; import 'package:PiliPlus/models/user/danmaku_block.dart'; @@ -25,6 +26,7 @@ class DanmakuBlockPage extends StatefulWidget { class _DanmakuBlockPageState extends State { final DanmakuBlockController _controller = Get.put(DanmakuBlockController()); late PlPlayerController plPlayerController; + late EdgeInsets padding; @override void initState() { @@ -32,6 +34,12 @@ class _DanmakuBlockPageState extends State { plPlayerController = Get.arguments as PlPlayerController; } + @override + void didChangeDependencies() { + super.didChangeDependencies(); + padding = MediaQuery.viewPaddingOf(context); + } + @override void dispose() { final ruleFilter = RuleFilter.fromRuleTypeEntries(_controller.rules); @@ -42,8 +50,7 @@ class _DanmakuBlockPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('弹幕屏蔽'), bottom: TabBar( @@ -59,23 +66,33 @@ class _DanmakuBlockPageState extends State { .toList(), ), ), - body: tabBarView( - controller: _controller.tabController, - children: DmBlockType.values - .map( - (e) => KeepAliveWrapper( - child: Obx( - () => tabViewBuilder(e.index, _controller.rules[e.index]), - ), + body: Stack( + clipBehavior: .none, + children: [ + tabBarView( + controller: _controller.tabController, + children: DmBlockType.values + .map( + (e) => KeepAliveWrapper( + child: Obx( + () => tabViewBuilder(e.index, _controller.rules[e.index]), + ), + ), + ) + .toList(), + ), + Positioned( + right: kFloatingActionButtonMargin, + bottom: padding.bottom + kFloatingActionButtonMargin, + child: FloatingActionButton( + tooltip: '添加', + onPressed: () => _showAddDialog( + DmBlockType.values[_controller.tabController.index], ), - ) - .toList(), - ), - floatingActionButton: FloatingActionButton( - tooltip: '添加', - onPressed: () => - _showAddDialog(DmBlockType.values[_controller.tabController.index]), - child: const Icon(Icons.add), + child: const Icon(Icons.add), + ), + ), + ], ), ); } @@ -86,9 +103,7 @@ class _DanmakuBlockPageState extends State { } return ListView.builder( itemCount: list.length, - padding: EdgeInsets.only( - bottom: MediaQuery.viewPaddingOf(context).bottom + 100, - ), + padding: .only(bottom: padding.bottom + 100), itemBuilder: (context, itemIndex) { final SimpleRule item = list[itemIndex]; final child = iconButton( diff --git a/lib/pages/dlna/view.dart b/lib/pages/dlna/view.dart deleted file mode 100644 index 39ed53944..000000000 --- a/lib/pages/dlna/view.dart +++ /dev/null @@ -1,131 +0,0 @@ -import 'dart:async'; - -import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; -import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; -import 'package:dlna_dart/dlna.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -class DLNAPage extends StatefulWidget { - const DLNAPage({super.key}); - - @override - State createState() => _DLNAPageState(); -} - -class _DLNAPageState extends State { - final _searcher = DLNAManager(); - final Map _deviceList = {}; - late final _url = Get.parameters['url']!; - late final _title = Get.parameters['title']; - - Timer? _timer; - bool _isSearching = false; - DLNADevice? _lastDevice; - String? _lastDeviceKey; - - @override - void initState() { - super.initState(); - _onSearch(isInit: true); - } - - Future _onSearch({bool isInit = false}) async { - if (_isSearching) return; - _isSearching = true; - if (!isInit && mounted) { - _lastDevice = null; - _deviceList.clear(); - setState(() {}); - } - final deviceManager = await _searcher.start(); - if (!mounted) { - return; - } - _timer = Timer(const Duration(seconds: 20), _searcher.stop); - await for (final deviceList in deviceManager.devices.stream) { - if (mounted) { - _deviceList.addAll(deviceList); - setState(() {}); - } - } - if (mounted) { - setState(() { - _isSearching = false; - }); - } - } - - @override - void dispose() { - _timer?.cancel(); - _timer = null; - _searcher.stop(); - _lastDevice = null; - _lastDeviceKey = null; - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final colorScheme = ColorScheme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: const Text('投屏'), - actions: [ - IconButton( - tooltip: '搜索', - onPressed: _onSearch, - icon: const Icon(Icons.refresh), - ), - const SizedBox(width: 6), - ], - ), - body: CustomScrollView( - slivers: [ - if (_isSearching) linearLoading, - ViewSliverSafeArea(sliver: _buildBody(colorScheme)), - ], - ), - ); - } - - Widget _buildBody(ColorScheme colorScheme) { - if (!_isSearching && _deviceList.isEmpty) { - return HttpError( - errMsg: '没有设备', - onReload: _onSearch, - ); - } - if (_deviceList.isNotEmpty) { - final keys = _deviceList.keys.toList(); - return SliverList.builder( - itemCount: keys.length, - itemBuilder: (context, index) { - final key = keys[index]; - final device = _deviceList[key]!; - final isCurr = key == _lastDeviceKey; - return ListTile( - title: Text( - device.info.friendlyName, - style: isCurr ? TextStyle(color: colorScheme.primary) : null, - ), - subtitle: Text(key), - onTap: () async { - if (isCurr) return; - _lastDevice?.pause(); - _lastDevice = device; - _lastDeviceKey = key; - setState(() {}); - await device.setUrl(_url, title: _title ?? ''); - await device.play(); - }, - ); - }, - ); - } - return const SliverToBoxAdapter(); - } -} diff --git a/lib/pages/download/detail/view.dart b/lib/pages/download/detail/view.dart index be1312dda..bc69de2a4 100644 --- a/lib/pages/download/detail/view.dart +++ b/lib/pages/download/detail/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart' @@ -93,8 +94,7 @@ class _DownloadDetailPageState extends State handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, + child: scaffold( appBar: MultiSelectAppBarWidget( ctr: this, actions: [ diff --git a/lib/pages/download/downloading/view.dart b/lib/pages/download/downloading/view.dart index 001da6ea9..9998ccfa3 100644 --- a/lib/pages/download/downloading/view.dart +++ b/lib/pages/download/downloading/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/pages/common/multi_select/base.dart' @@ -41,8 +42,7 @@ class _DownloadingPageState extends State handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, + child: scaffold( appBar: MultiSelectAppBarWidget( ctr: this, child: AppBar( diff --git a/lib/pages/download/view.dart b/lib/pages/download/view.dart index b743e2040..9e38c3ce1 100644 --- a/lib/pages/download/view.dart +++ b/lib/pages/download/view.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; @@ -57,8 +58,7 @@ class _DownloadPageState extends State { _controller.handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, + child: scaffold( appBar: MultiSelectAppBarWidget( ctr: _controller, actions: [ diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index e44c2e2e1..2b46316d2 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -1,15 +1,12 @@ import 'dart:async'; import 'package:PiliPlus/http/dynamics.dart'; -import 'package:PiliPlus/http/follow.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/dynamics/up.dart'; -import 'package:PiliPlus/models_new/follow/data.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; import 'package:PiliPlus/pages/dynamics_tab/controller.dart'; import 'package:PiliPlus/services/account_service.dart'; -import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -29,11 +26,8 @@ class DynamicsController extends GetxController final Rx> upState = LoadingState.loading().obs; - late int _upPage = 1; late bool _upEnd = false; - Set? _cacheUpList; - late final _showAllUp = Pref.dynamicsShowAllFollowedUp; - late bool showLiveUp = Pref.expandDynLivePanel; + late bool showLiveUp = false; final upPanelPosition = Pref.upPanelPosition; @@ -56,17 +50,12 @@ class DynamicsController extends GetxController tabController = TabController( length: DynamicsTabType.values.length, vsync: this, - initialIndex: Pref.defaultDynamicTypeIndex, ); queryFollowUp(); } void onLoadMoreUp() { - if (_showAllUp) { - queryAllUp(); - } else { - queryUpList(); - } + queryUpList(); } Future queryUpList() async { @@ -92,33 +81,6 @@ class DynamicsController extends GetxController isQuerying = false; } - Future queryAllUp() async { - if (isQuerying || _upEnd) return; - isQuerying = true; - - final res = await FollowHttp.followings( - vmid: Accounts.main.mid, - pn: _upPage, - orderType: 'attention', - ps: 50, - ); - - if (res case Success(:final response)) { - _upPage++; - final list = response.list; - if (list.isEmpty) { - _upEnd = true; - } - upState - ..value.data.upList.addAll( - list..removeWhere((e) => _cacheUpList?.contains(e) == true), - ) - ..refresh(); - } - - isQuerying = false; - } - late bool isQuerying = false; Future queryFollowUp() async { if (isQuerying) return; @@ -132,39 +94,13 @@ class DynamicsController extends GetxController // reset _upEnd = false; - if (_showAllUp) _upPage = 1; - final res = await Future.wait([ - DynamicsHttp.followUp(), - if (_showAllUp) - FollowHttp.followings( - vmid: Accounts.main.mid, - pn: _upPage, - orderType: 'attention', - ps: 50, - ), - ]); + final res = await DynamicsHttp.followUp(); - final first = res.first; - if (first case final Success i) { + if (res case final Success i) { final data = i.response; - final second = res.elementAtOrNull(1); - if (second case final Success j) { - final data1 = j.response; - final list1 = data1.list; - - _upPage++; - if (list1.isEmpty || list1.length >= (data1.total ?? 0)) { - _upEnd = true; - } - - final list = data.upList; - list.addAll(list1..removeWhere((_cacheUpList = list.toSet()).contains)); - } - if (!_showAllUp) { - if (data.hasMore == false || data.offset.isNullOrEmpty) { - _upEnd = true; - } + if (data.hasMore == false || data.offset.isNullOrEmpty) { + _upEnd = true; } upState.value = Success(data); } else { @@ -195,10 +131,6 @@ class DynamicsController extends GetxController } void _refreshFollowUp() { - if (_showAllUp) { - _upPage = 1; - _cacheUpList = null; - } queryFollowUp(); } diff --git a/lib/pages/dynamics/view.dart b/lib/pages/dynamics/view.dart index 9d3d1b446..28ea5a802 100644 --- a/lib/pages/dynamics/view.dart +++ b/lib/pages/dynamics/view.dart @@ -3,12 +3,10 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; import 'package:PiliPlus/models/dynamics/up.dart'; -import 'package:PiliPlus/pages/common/common_page.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/dynamics/widgets/up_panel.dart'; import 'package:PiliPlus/pages/dynamics_create/view.dart'; import 'package:PiliPlus/pages/dynamics_tab/view.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:flutter/material.dart' hide DraggableScrollableSheet; import 'package:get/get.dart'; @@ -20,11 +18,10 @@ class DynamicsPage extends StatefulWidget { State createState() => _DynamicsPageState(); } -class _DynamicsPageState extends CommonPageState +class _DynamicsPageState extends State with AutomaticKeepAliveClientMixin { final _dynamicsController = Get.putOrFind(DynamicsController.new); UpPanelPosition get upPanelPosition => _dynamicsController.upPanelPosition; - late final MainController _mainController = Get.find(); @override bool get wantKeepAlive => true; @@ -52,8 +49,7 @@ class _DynamicsPageState extends CommonPageState ), ); - Widget upPanelPart(ThemeData theme) { - final isTop = upPanelPosition == .top; + Widget upPanelPart(ThemeData theme, {bool isTop = false}) { final needBg = upPanelPosition.index > 2; return Material( type: needBg ? .canvas : .transparency, @@ -92,34 +88,11 @@ class _DynamicsPageState extends CommonPageState }; } - bool get checkPage => - _mainController.navigationBars[0] != .dynamics && - _mainController.selectedIndex.value == 0; - - @override - bool onNotificationType1(UserScrollNotification notification) { - if (checkPage) { - return false; - } - return super.onNotificationType1(notification); - } - - @override - bool onNotificationType2(ScrollNotification notification) { - if (checkPage) { - return false; - } - return super.onNotificationType2(notification); - } - @override Widget build(BuildContext context) { super.build(context); final theme = Theme.of(context); - Widget? drawer; - Widget? endDrawer; - Widget? leading; List? actions; @@ -134,7 +107,7 @@ class _DynamicsPageState extends CommonPageState case UpPanelPosition.top: child = Column( children: [ - upPanelPart(theme), + upPanelPart(theme, isTop: true), Expanded(child: child), ], ); @@ -155,52 +128,44 @@ class _DynamicsPageState extends CommonPageState ], ); actions = [_createDynamicBtn(theme)]; - case UpPanelPosition.leftDrawer: - drawer = upPanelPart(theme); - actions = [_createDynamicBtn(theme)]; - case UpPanelPosition.rightDrawer: - endDrawer = upPanelPart(theme); - leading = _createDynamicBtn(theme, isRight: false); } - return Scaffold( - resizeToAvoidBottomInset: false, - backgroundColor: Colors.transparent, - appBar: AppBar( - primary: false, - leading: leading, - leadingWidth: 50, - toolbarHeight: 50, - backgroundColor: Colors.transparent, - title: SizedBox( - height: 50, - child: TabBar( - dividerHeight: 0, - isScrollable: true, - tabAlignment: .center, - dividerColor: Colors.transparent, - labelColor: theme.colorScheme.primary, - indicatorColor: theme.colorScheme.primary, - controller: _dynamicsController.tabController, - unselectedLabelColor: theme.colorScheme.onSurface, - labelStyle: - TabBarTheme.of(context).labelStyle?.copyWith(fontSize: 13) ?? - const TextStyle(fontSize: 13), - tabs: DynamicsTabType.values - .map((e) => Tab(text: e.label)) - .toList(), - onTap: (index) { - if (!_dynamicsController.tabController.indexIsChanging) { - _dynamicsController.animateToTop(); - } - }, + return Column( + children: [ + AppBar( + primary: false, + leading: leading, + leadingWidth: 50, + toolbarHeight: 50, + backgroundColor: Colors.transparent, + title: SizedBox( + height: 50, + child: TabBar( + dividerHeight: 0, + isScrollable: true, + tabAlignment: .center, + dividerColor: Colors.transparent, + labelColor: theme.colorScheme.primary, + indicatorColor: theme.colorScheme.primary, + controller: _dynamicsController.tabController, + unselectedLabelColor: theme.colorScheme.onSurface, + labelStyle: + TabBarTheme.of(context).labelStyle?.copyWith(fontSize: 13) ?? + const TextStyle(fontSize: 13), + tabs: DynamicsTabType.values + .map((e) => Tab(text: e.label)) + .toList(), + onTap: (index) { + if (!_dynamicsController.tabController.indexIsChanging) { + _dynamicsController.animateToTop(); + } + }, + ), ), + actions: actions, ), - actions: actions, - ), - drawer: drawer, - endDrawer: endDrawer, - body: onBuild(child), + Expanded(child: child), + ], ); } } diff --git a/lib/pages/dynamics/widgets/additional_panel.dart b/lib/pages/dynamics/widgets/additional_panel.dart index 711129483..ff6d67edd 100644 --- a/lib/pages/dynamics/widgets/additional_panel.dart +++ b/lib/pages/dynamics/widgets/additional_panel.dart @@ -5,10 +5,10 @@ import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; Widget? addWidget( BuildContext context, { @@ -124,14 +124,9 @@ Widget? addWidget( recognizer: reserve.desc3!.jumpUrl == null ? null : (NoDeadlineTapGestureRecognizer() - ..onTap = () { - Get.toNamed( - '/webview', - parameters: { - 'url': reserve.desc3!.jumpUrl!, - }, - ); - }), + ..onTap = () => WebViewPage.toWebView( + reserve.desc3!.jumpUrl!, + )), ), ], ], @@ -261,14 +256,9 @@ Widget? addWidget( recognizer: content.desc!.jumpUrl == null ? null : (NoDeadlineTapGestureRecognizer() - ..onTap = () { - Get.toNamed( - '/webview', - parameters: { - 'url': content.desc!.jumpUrl!, - }, - ); - }), + ..onTap = () => WebViewPage.toWebView( + content.desc!.jumpUrl!, + )), ), ], ), diff --git a/lib/pages/dynamics/widgets/dynamic_panel.dart b/lib/pages/dynamics/widgets/dynamic_panel.dart index 74ffe9bc6..4633ca01f 100644 --- a/lib/pages/dynamics/widgets/dynamic_panel.dart +++ b/lib/pages/dynamics/widgets/dynamic_panel.dart @@ -6,7 +6,6 @@ import 'package:PiliPlus/pages/dynamics/widgets/action_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/author_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dyn_content.dart'; import 'package:PiliPlus/pages/dynamics/widgets/interaction.dart'; -import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; @@ -87,8 +86,6 @@ class DynamicPanel extends StatelessWidget { padding: const EdgeInsets.fromLTRB(12, 12, 12, 6), child: authorWidget, ), - if (item.modules.moduleDispute case final moduleDispute?) - _buildDispute(theme, moduleDispute), ...dynContent( context, theme: theme, @@ -252,53 +249,4 @@ class DynamicPanel extends StatelessWidget { ), ); } - - Widget _buildDispute(ThemeData theme, ModuleDispute moduleDispute) { - final child = Container( - width: .infinity, - margin: const .fromLTRB(12, 2, 12, 6), - padding: const .symmetric(horizontal: 8, vertical: 6), - decoration: BoxDecoration( - color: theme.colorScheme.secondaryContainer.withValues( - alpha: theme.isLight ? 0.5 : 0.7, - ), - borderRadius: const BorderRadius.all(Radius.circular(6)), - ), - child: Text.rich( - style: TextStyle( - height: 1, - fontSize: 13, - color: theme.colorScheme.onSecondaryContainer, - ), - strutStyle: const StrutStyle( - leading: 0, - height: 1, - fontSize: 13, - ), - TextSpan( - children: [ - WidgetSpan( - alignment: .middle, - child: Padding( - padding: const .only(right: 4), - child: Icon( - size: 15, - Icons.warning_rounded, - color: theme.colorScheme.onSecondaryContainer, - ), - ), - ), - TextSpan(text: moduleDispute.title), - ], - ), - ), - ); - if (moduleDispute.jumpUrl?.isNotEmpty == true) { - return GestureDetector( - onTap: () => PageUtils.handleWebview(moduleDispute.jumpUrl!), - child: child, - ); - } - return child; - } } diff --git a/lib/pages/dynamics/widgets/module_panel.dart b/lib/pages/dynamics/widgets/module_panel.dart index 507be62f7..1c346604f 100644 --- a/lib/pages/dynamics/widgets/module_panel.dart +++ b/lib/pages/dynamics/widgets/module_panel.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/live_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/live_panel_sub.dart'; import 'package:PiliPlus/pages/dynamics/widgets/live_rcmd_panel.dart'; import 'package:PiliPlus/pages/dynamics/widgets/video_panel.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -124,7 +125,7 @@ Widget module( PageUtils.viewPgcFromUri(url)) { return; } - PageUtils.handleWebview(url, inApp: true); + PiliScheme.routePushFromUrl(url); } catch (_) {} }, child: Padding( diff --git a/lib/pages/dynamics/widgets/rich_node_panel.dart b/lib/pages/dynamics/widgets/rich_node_panel.dart index c79f7ce79..347858743 100644 --- a/lib/pages/dynamics/widgets/rich_node_panel.dart +++ b/lib/pages/dynamics/widgets/rich_node_panel.dart @@ -11,6 +11,7 @@ import 'package:PiliPlus/models/common/image_preview_type.dart' import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/vote.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -128,7 +129,8 @@ TextSpan? richNode( style: style, recognizer: hasLink ? (NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(i.jumpUrl!)) + ..onTap = () => + PiliScheme.routePushFromUrl(i.jumpUrl!)) : null, ), ); @@ -193,12 +195,8 @@ TextSpan? richNode( text: '${i.origText} ', style: style, recognizer: NoDeadlineTapGestureRecognizer() - ..onTap = () => Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/h5/lottery/result?business_id=${item.idStr}', - }, + ..onTap = () => PiliScheme.routePushFromUrl( + 'https://www.bilibili.com/h5/lottery/result?business_id=${item.idStr}', ), ), ); @@ -223,7 +221,8 @@ TextSpan? richNode( recognizer: i.jumpUrl == null ? null : (NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(i.jumpUrl!)), + ..onTap = () => + PiliScheme.routePushFromUrl(i.jumpUrl!)), ), ); break; @@ -347,7 +346,8 @@ TextSpan? richNode( recognizer: i.jumpUrl == null ? null : (NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(i.jumpUrl!)), + ..onTap = () => + PiliScheme.routePushFromUrl(i.jumpUrl!)), ), ); break; @@ -359,7 +359,8 @@ TextSpan? richNode( recognizer: i.jumpUrl == null ? null : (NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(i.jumpUrl!)), + ..onTap = () => + PiliScheme.routePushFromUrl(i.jumpUrl!)), ), ); break; diff --git a/lib/pages/dynamics_create/view.dart b/lib/pages/dynamics_create/view.dart index 8dfe8da83..b95ab3c22 100644 --- a/lib/pages/dynamics_create/view.dart +++ b/lib/pages/dynamics_create/view.dart @@ -136,7 +136,7 @@ class _CreateDynPanelState extends CommonRichTextPubPageState { _buildAppBar(theme), Expanded( child: ListView( - padding: EdgeInsets.zero, + padding: .zero, controller: widget.scrollController, physics: const ClampingScrollPhysics(), children: [ diff --git a/lib/pages/dynamics_create_reserve/view.dart b/lib/pages/dynamics_create_reserve/view.dart index 28f443245..ef2e2a50e 100644 --- a/lib/pages/dynamics_create_reserve/view.dart +++ b/lib/pages/dynamics_create_reserve/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/time_picker.dart'; import 'package:PiliPlus/pages/dynamics_create_reserve/controller.dart'; import 'package:PiliPlus/utils/date_utils.dart'; @@ -46,10 +47,10 @@ class _CreateReservePageState extends State { ), const SizedBox(height: 10), ]; - return Scaffold( + return scaffold( appBar: AppBar(title: const Text('添加直播预约')), body: ListView( - padding: EdgeInsets.only( + padding: .only( top: 16, left: padding.left + 16, right: padding.right + 16, diff --git a/lib/pages/dynamics_create_vote/view.dart b/lib/pages/dynamics_create_vote/view.dart index f7610a54d..bbe805274 100644 --- a/lib/pages/dynamics_create_vote/view.dart +++ b/lib/pages/dynamics_create_vote/view.dart @@ -2,6 +2,7 @@ import 'dart:io' show File; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/time_picker.dart'; import 'package:PiliPlus/models/dynamics/vote_model.dart'; import 'package:PiliPlus/pages/dynamics_create_vote/controller.dart'; @@ -53,12 +54,12 @@ class _CreateVotePageState extends State { thickness: 1, color: theme.colorScheme.outline.withValues(alpha: 0.1), ); - return Scaffold( + return scaffold( appBar: AppBar( title: Text('${_controller.voteId != null ? '' : '发起'}投票'), ), body: ListView( - padding: EdgeInsets.only( + padding: .only( left: padding.left + 16, right: padding.right + 16, bottom: padding.bottom + 100, diff --git a/lib/pages/dynamics_detail/controller.dart b/lib/pages/dynamics_detail/controller.dart index 261ea8155..8d44e015f 100644 --- a/lib/pages/dynamics_detail/controller.dart +++ b/lib/pages/dynamics_detail/controller.dart @@ -3,7 +3,6 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/reply.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_controller.dart'; -import 'package:PiliPlus/utils/id_utils.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -14,9 +13,6 @@ class DynamicDetailController extends CommonDynController { late int replyType; late DynamicItemModel dynItem; - @override - dynamic get sourceId => replyType == 1 ? IdUtils.av2bv(oid) : oid; - @override void onInit() { super.onInit(); diff --git a/lib/pages/dynamics_detail/view.dart b/lib/pages/dynamics_detail/view.dart index a5db534c7..5e5480b57 100644 --- a/lib/pages/dynamics_detail/view.dart +++ b/lib/pages/dynamics_detail/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -58,22 +59,30 @@ class _DynamicDetailPageState extends CommonDynPageState { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: _buildAppBar(), - body: Padding( - padding: EdgeInsets.only(left: padding.left, right: padding.right), - child: isPortrait - ? refreshIndicator( - onRefresh: controller.onRefresh, - child: _buildBody(theme), - ) - : _buildBody(theme), - ), - floatingActionButtonLocation: floatingActionButtonLocation, - floatingActionButton: SlideTransition( - position: fabAnimation, - child: _buildBottom(theme), + body: Stack( + clipBehavior: .none, + children: [ + Padding( + padding: .only(left: padding.left, right: padding.right), + child: isPortrait + ? refreshIndicator( + onRefresh: controller.onRefresh, + child: _buildBody(theme), + ) + : _buildBody(theme), + ), + Positioned( + left: 0, + right: 0, + bottom: 0, + child: SlideTransition( + position: fabAnimation, + child: _buildBottom(theme), + ), + ), + ], ), ); } @@ -328,10 +337,6 @@ class _DynamicDetailPageState extends CommonDynPageState { } Widget _buildBottom(ThemeData theme) { - if (!controller.showDynActionBar) { - return fabButton; - } - final primary = theme.colorScheme.primary; final outline = theme.colorScheme.outline; final btnStyle = TextButton.styleFrom( diff --git a/lib/pages/dynamics_repost/view.dart b/lib/pages/dynamics_repost/view.dart index 0d1bc46ac..d5e58c306 100644 --- a/lib/pages/dynamics_repost/view.dart +++ b/lib/pages/dynamics_repost/view.dart @@ -100,7 +100,7 @@ class _RepostPanelState extends CommonRichTextPubPageState { if (_isMax) ...[ Expanded( child: ListView( - padding: EdgeInsets.zero, + padding: .zero, controller: scrollController, physics: const ClampingScrollPhysics(), children: _buildEditPanel(theme), diff --git a/lib/pages/dynamics_topic/view.dart b/lib/pages/dynamics_topic/view.dart index 6c76d3e40..cd48b01ee 100644 --- a/lib/pages/dynamics_topic/view.dart +++ b/lib/pages/dynamics_topic/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; @@ -13,11 +14,11 @@ import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/top_details.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; import 'package:PiliPlus/pages/dynamics_create/view.dart'; import 'package:PiliPlus/pages/dynamics_topic/controller.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/num_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -47,102 +48,112 @@ class _DynTopicPageState extends State with DynMixin { Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, - floatingActionButton: FloatingActionButton.extended( - onPressed: () { - if (_controller.isLogin) { - CreateDynPanel.onCreateDyn( - context, - topic: Pair( - first: int.parse(_controller.topicId), - second: _controller.topicName, - ), - ); - } else { - SmartDialog.showToast('账号未登录'); - } - }, - icon: const Icon(CustomIcons.topic_tag, size: 20), - label: const Text('参与话题'), - ), - body: refreshIndicator( - onRefresh: _controller.onRefresh, - child: CustomScrollView( - controller: _controller.scrollController, - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - Obx( - () => _buildAppBar( - theme, - padding, - _controller.topState.value, - ), - ), - Obx(() { - final allSortBy = _controller.topicSortByConf.value?.allSortBy; - if (allSortBy != null && allSortBy.isNotEmpty) { - return SliverPinnedHeader( - backgroundColor: theme.colorScheme.surface, - child: Padding( - padding: EdgeInsets.only( - left: 12 + padding.left, - top: 6, - bottom: 6, - ), - child: Builder( - builder: (context) { - return ToggleButtons( - fillColor: theme.colorScheme.secondaryContainer, - selectedColor: theme.colorScheme.onSecondaryContainer, - constraints: const BoxConstraints( - minWidth: 54, - minHeight: 24, - ), - tapTargetSize: MaterialTapTargetSize.shrinkWrap, - borderRadius: const .all(.circular(25)), - onPressed: (index) { - _controller.onSort(allSortBy[index].sortBy!); - (context as Element).markNeedsBuild(); - }, - isSelected: allSortBy - .map((e) => e.sortBy == _controller.sortBy) - .toList(), - children: allSortBy.map((e) { - return Text( - e.sortName!, - style: const TextStyle( - fontSize: 13, - height: 1, - ), - strutStyle: const StrutStyle( - height: 1, - leading: 0, - fontSize: 13, - ), - textScaler: TextScaler.noScaling, - ); - }).toList(), - ); - }, - ), + return scaffold( + body: Stack( + clipBehavior: .none, + children: [ + refreshIndicator( + onRefresh: _controller.onRefresh, + child: CustomScrollView( + controller: _controller.scrollController, + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + Obx( + () => _buildAppBar( + theme, + padding, + _controller.topState.value, ), - ); - } - return const SliverToBoxAdapter(); - }), - SliverPadding( - padding: EdgeInsets.only( - left: padding.left, - right: padding.right, - bottom: padding.bottom + 100, - ), - sliver: buildPage( - Obx(() => _buildBody(_controller.loadingState.value)), - ), + ), + Obx(() { + final allSortBy = + _controller.topicSortByConf.value?.allSortBy; + if (allSortBy != null && allSortBy.isNotEmpty) { + return SliverPinnedHeader( + backgroundColor: theme.colorScheme.surface, + child: Padding( + padding: EdgeInsets.only( + left: 12 + padding.left, + top: 6, + bottom: 6, + ), + child: Builder( + builder: (context) { + return ToggleButtons( + fillColor: theme.colorScheme.secondaryContainer, + selectedColor: + theme.colorScheme.onSecondaryContainer, + constraints: const BoxConstraints( + minWidth: 54, + minHeight: 24, + ), + tapTargetSize: MaterialTapTargetSize.shrinkWrap, + borderRadius: const .all(.circular(25)), + onPressed: (index) { + _controller.onSort(allSortBy[index].sortBy!); + (context as Element).markNeedsBuild(); + }, + isSelected: allSortBy + .map((e) => e.sortBy == _controller.sortBy) + .toList(), + children: allSortBy.map((e) { + return Text( + e.sortName!, + style: const TextStyle( + fontSize: 13, + height: 1, + ), + strutStyle: const StrutStyle( + height: 1, + leading: 0, + fontSize: 13, + ), + textScaler: TextScaler.noScaling, + ); + }).toList(), + ); + }, + ), + ), + ); + } + return const SliverToBoxAdapter(); + }), + SliverPadding( + padding: EdgeInsets.only( + left: padding.left, + right: padding.right, + bottom: padding.bottom + 100, + ), + sliver: buildPage( + Obx(() => _buildBody(_controller.loadingState.value)), + ), + ), + ], ), - ], - ), + ), + Positioned( + right: kFloatingActionButtonMargin, + bottom: padding.bottom + kFloatingActionButtonMargin, + child: FloatingActionButton.extended( + onPressed: () { + if (_controller.isLogin) { + CreateDynPanel.onCreateDyn( + context, + topic: Pair( + first: int.parse(_controller.topicId), + second: _controller.topicName, + ), + ); + } else { + SmartDialog.showToast('账号未登录'); + } + }, + icon: const Icon(CustomIcons.topic_tag, size: 20), + label: const Text('参与话题'), + ), + ), + ], ), ); } @@ -321,7 +332,7 @@ class _DynTopicPageState extends State with DynMixin { SmartDialog.showToast('账号未登录'); return; } - PageUtils.inAppWebview( + WebViewPage.toWebView( 'https://www.bilibili.com/h5/topic-active/topic-report?topic_id=${_controller.topicId}&topic_name=${_controller.topicName}&${ThemeUtils.themeUrl(theme.isDark)}', ); }, diff --git a/lib/pages/dynamics_topic_rcmd/view.dart b/lib/pages/dynamics_topic_rcmd/view.dart index f80c09806..f6b4a65cc 100644 --- a/lib/pages/dynamics_topic_rcmd/view.dart +++ b/lib/pages/dynamics_topic_rcmd/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/dynamic/dyn_topic_top/topic_item.dart'; @@ -21,8 +22,7 @@ class _DynTopicRcmdPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('话题')), body: refreshIndicator( onRefresh: _controller.onRefresh, diff --git a/lib/pages/emote/view.dart b/lib/pages/emote/view.dart index 5cbc89cef..7b83a03e7 100644 --- a/lib/pages/emote/view.dart +++ b/lib/pages/emote/view.dart @@ -8,6 +8,7 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/emote/emote.dart'; import 'package:PiliPlus/models_new/emote/package.dart'; import 'package:PiliPlus/pages/emote/controller.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:flutter/material.dart'; @@ -178,12 +179,8 @@ class _EmotePanelState extends State iconSize: 20, iconColor: theme.colorScheme.onSurfaceVariant .withValues(alpha: 0.8), - onPressed: () => Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/h5/mall/emoji-package/home?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', - }, + onPressed: () => WebViewPage.toWebView( + 'https://www.bilibili.com/h5/mall/emoji-package/home?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', ), icon: const Icon(Icons.settings), ), diff --git a/lib/pages/fav/note/widget/item.dart b/lib/pages/fav/note/widget/item.dart index 61396624e..cce7f8e6d 100644 --- a/lib/pages/fav/note/widget/item.dart +++ b/lib/pages/fav/note/widget/item.dart @@ -4,7 +4,7 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/select_mask.dart'; import 'package:PiliPlus/models_new/fav/fav_note/list.dart'; import 'package:PiliPlus/pages/fav/note/controller.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide LayoutBuilder; @@ -39,10 +39,7 @@ class FavNoteItem extends StatelessWidget { return; } if (item.webUrl?.isNotEmpty == true) { - PageUtils.handleWebview( - item.webUrl!, - inApp: true, - ); + PiliScheme.routePushFromUrl(item.webUrl!); } }, onLongPress: onLongPress, diff --git a/lib/pages/fav/view.dart b/lib/pages/fav/view.dart index 0124257e5..99d394995 100644 --- a/lib/pages/fav/view.dart +++ b/lib/pages/fav/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -51,8 +52,7 @@ class _FavPageState extends State with SingleTickerProviderStateMixin { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('我的收藏'), actions: [ diff --git a/lib/pages/fav_create/view.dart b/lib/pages/fav_create/view.dart index c0cbf7f78..6e04597a6 100644 --- a/lib/pages/fav_create/view.dart +++ b/lib/pages/fav_create/view.dart @@ -2,6 +2,7 @@ import 'dart:io' show File; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; @@ -71,7 +72,7 @@ class _CreateFavPageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( + return scaffold( appBar: AppBar( title: Text(_mediaId != null ? '编辑' : '创建'), actions: [ diff --git a/lib/pages/fav_detail/view.dart b/lib/pages/fav_detail/view.dart index 58119d060..758e91f18 100644 --- a/lib/pages/fav_detail/view.dart +++ b/lib/pages/fav_detail/view.dart @@ -4,13 +4,12 @@ import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/fav_order_type.dart'; import 'package:PiliPlus/models_new/fav/fav_detail/media.dart'; import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; -import 'package:PiliPlus/pages/common/fab_mixin.dart' - show NoRightMarginFabLocation; import 'package:PiliPlus/pages/dynamics_repost/view.dart'; import 'package:PiliPlus/pages/fav_detail/controller.dart'; import 'package:PiliPlus/pages/fav_detail/widget/fav_video_card.dart'; @@ -60,68 +59,73 @@ class _FavDetailPageState extends State with GridMixin { _favDetailController.handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, - floatingActionButtonLocation: const NoRightMarginFabLocation(), - floatingActionButton: Padding( - padding: const EdgeInsets.only( - right: kFloatingActionButtonMargin, - ), - child: Obx( - () => _favDetailController.folderInfo.value.mediaCount > 0 - ? AnimatedSlide( - offset: _favDetailController.isPlayAll.value - ? Offset.zero - : const Offset(0.75, 0), - duration: const Duration(milliseconds: 120), - child: GestureDetector( - onHorizontalDragDown: (details) => - _favDetailController.dx = - details.localPosition.dx, - onHorizontalDragStart: (details) => - _favDetailController.setIsPlayAll( - details.localPosition.dx < - _favDetailController.dx, - ), - child: FloatingActionButton.extended( - onPressed: () { - if (_favDetailController.isPlayAll.value) { - _favDetailController.toViewPlayAll(); - } else { - _favDetailController.setIsPlayAll(true); - } - }, - label: const Text('播放全部'), - icon: const Icon(Icons.playlist_play), + child: scaffold( + body: Stack( + clipBehavior: .none, + children: [ + refreshIndicator( + onRefresh: _favDetailController.onRefresh, + child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), + controller: _favDetailController.scrollController, + slivers: [ + _buildHeader(enableMultiSelect, theme), + SliverPadding( + padding: EdgeInsets.only( + left: padding.left, + right: padding.right, + bottom: padding.bottom + 100, + ), + sliver: Obx( + () => _buildBody( + enableMultiSelect, + theme, + _favDetailController.loadingState.value, ), ), - ) - : const SizedBox.shrink(), - ), - ), - body: refreshIndicator( - onRefresh: _favDetailController.onRefresh, - child: CustomScrollView( - physics: const AlwaysScrollableScrollPhysics(), - controller: _favDetailController.scrollController, - slivers: [ - _buildHeader(enableMultiSelect, theme), - SliverPadding( - padding: EdgeInsets.only( - left: padding.left, - right: padding.right, - bottom: padding.bottom + 100, - ), - sliver: Obx( - () => _buildBody( - enableMultiSelect, - theme, - _favDetailController.loadingState.value, ), + ], + ), + ), + Positioned( + right: 0, + bottom: padding.bottom + kFloatingActionButtonMargin, + child: Padding( + padding: const .only(right: kFloatingActionButtonMargin), + child: Obx( + () => _favDetailController.folderInfo.value.mediaCount > 0 + ? AnimatedSlide( + offset: _favDetailController.isPlayAll.value + ? Offset.zero + : const Offset(0.75, 0), + duration: const Duration(milliseconds: 120), + child: GestureDetector( + onHorizontalDragDown: (details) => + _favDetailController.dx = + details.localPosition.dx, + onHorizontalDragStart: (details) => + _favDetailController.setIsPlayAll( + details.localPosition.dx < + _favDetailController.dx, + ), + child: FloatingActionButton.extended( + onPressed: () { + if (_favDetailController.isPlayAll.value) { + _favDetailController.toViewPlayAll(); + } else { + _favDetailController.setIsPlayAll(true); + } + }, + label: const Text('播放全部'), + icon: const Icon(Icons.playlist_play), + ), + ), + ) + : const SizedBox.shrink(), ), ), - ], - ), + ), + ], ), ), ); diff --git a/lib/pages/fav_folder_sort/view.dart b/lib/pages/fav_folder_sort/view.dart index f99e752f5..c8777e71b 100644 --- a/lib/pages/fav_folder_sort/view.dart +++ b/lib/pages/fav_folder_sort/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/reorder_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; @@ -27,8 +28,7 @@ class _FavFolderSortPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('收藏夹排序'), actions: [ diff --git a/lib/pages/fav_search/controller.dart b/lib/pages/fav_search/controller.dart index d84371f40..b57c601da 100644 --- a/lib/pages/fav_search/controller.dart +++ b/lib/pages/fav_search/controller.dart @@ -16,13 +16,24 @@ class FavSearchController CommonMultiSelectMixin, DeleteItemMixin, BaseFavController { - int type = Get.arguments['type']; + late int type; @override - int mediaId = Get.arguments['mediaId']; + late int mediaId; @override - bool isOwner = Get.arguments['isOwner']; - dynamic count = Get.arguments['count']; - dynamic title = Get.arguments['title']; + late bool isOwner; + late dynamic count; + late dynamic title; + + @override + void onInit() { + final args = Get.arguments; + type = args['type']; + mediaId = args['mediaId']; + isOwner = args['isOwner']; + count = args['count']; + title = args['title']; + super.onInit(); + } final Rx order = FavOrderType.mtime.obs; diff --git a/lib/pages/fav_sort/view.dart b/lib/pages/fav_sort/view.dart index 620e5a2d6..4b4eea81b 100644 --- a/lib/pages/fav_sort/view.dart +++ b/lib/pages/fav_sort/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/reorder_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/fav/fav_detail/media.dart'; @@ -46,8 +47,7 @@ class _FavSortPageState extends State with ReorderMixin { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text('排序: ${_favDetailController.folderInfo.value.title}'), actions: [ diff --git a/lib/pages/follow/view.dart b/lib/pages/follow/view.dart index 13688820e..15950b90b 100644 --- a/lib/pages/follow/view.dart +++ b/lib/pages/follow/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -47,8 +48,7 @@ class _FollowPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: _buildAppBar, body: _followController.isOwner ? Obx(() => _buildBody(_followController.followState.value)) diff --git a/lib/pages/follow_tag_sort/view.dart b/lib/pages/follow_tag_sort/view.dart index 0ba9fc0b0..3f028a296 100644 --- a/lib/pages/follow_tag_sort/view.dart +++ b/lib/pages/follow_tag_sort/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/reorder_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/follow.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/member/tags.dart'; @@ -36,8 +37,7 @@ class _FollowTagSortPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('关注分组排序'), actions: _customTags.isNotEmpty diff --git a/lib/pages/follow_type/view.dart b/lib/pages/follow_type/view.dart index 1fa199ae6..79bd1653f 100644 --- a/lib/pages/follow_type/view.dart +++ b/lib/pages/follow_type/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/follow/list.dart'; @@ -19,8 +20,7 @@ abstract class FollowTypePageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context).colorScheme; - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: appBar, body: refreshIndicator( onRefresh: controller.onRefresh, diff --git a/lib/pages/history/view.dart b/lib/pages/history/view.dart index d8ba6540c..2fbb77c50 100644 --- a/lib/pages/history/view.dart +++ b/lib/pages/history/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/history/list.dart'; @@ -92,8 +93,7 @@ class _HistoryPageState extends State currCtr().handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, + child: scaffold( appBar: MultiSelectAppBarWidget( visible: enableMultiSelect, ctr: currCtr(), diff --git a/lib/pages/home/controller.dart b/lib/pages/home/controller.dart index 3965da6c7..8a6d7800b 100644 --- a/lib/pages/home/controller.dart +++ b/lib/pages/home/controller.dart @@ -1,26 +1,17 @@ import 'dart:async'; -import 'dart:math'; import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/pages/common/common_controller.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/services/account_service.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:get/get.dart'; class HomeController extends GetxController with GetSingleTickerProviderStateMixin, ScrollOrRefreshMixin { - late List tabs; late TabController tabController; - RxBool? showTopBar; - late final bool hideTopBar; - - ScrollOrRefreshMixin get controller => tabs[tabController.index].ctr(); + ScrollOrRefreshMixin get controller => + HomeTabType.values[tabController.index].ctr(); @override ScrollController get scrollController => controller.scrollController; @@ -30,41 +21,16 @@ class HomeController extends GetxController @override void onInit() { super.onInit(); - - hideTopBar = Pref.hideTopBar; - if (hideTopBar) { - final mainCtr = Get.find(); - switch (mainCtr.barHideType) { - case .instant: - showTopBar = RxBool(true); - case .sync: - mainCtr.barOffset ??= RxDouble(0.0); - } - } - - setTabConfig(); + tabController = TabController( + initialIndex: HomeTabType.rcmd.index, + length: HomeTabType.values.length, + vsync: this, + ); } @override Future onRefresh() { - return controller.onRefresh().catchError((e) { - if (kDebugMode) debugPrint(e.toString()); - }); - } - - void setTabConfig() { - final tabs = GStorage.setting.get(SettingBoxKey.tabBarSort) as List?; - if (tabs != null) { - this.tabs = tabs.map((i) => HomeTabType.values[i]).toList(); - } else { - this.tabs = HomeTabType.values; - } - - tabController = TabController( - initialIndex: max(0, this.tabs.indexOf(HomeTabType.rcmd)), - length: this.tabs.length, - vsync: this, - ); + return controller.onRefresh(); } @override diff --git a/lib/pages/home/view.dart b/lib/pages/home/view.dart index 035b3ecd6..da109bf5d 100644 --- a/lib/pages/home/view.dart +++ b/lib/pages/home/view.dart @@ -1,13 +1,13 @@ import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/common/widgets/custom_height_widget.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; -import 'package:PiliPlus/pages/common/common_page.dart'; +import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; +import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -19,14 +19,11 @@ class HomePage extends StatefulWidget { State createState() => _HomePageState(); } -class _HomePageState extends CommonPageState +class _HomePageState extends State with AutomaticKeepAliveClientMixin { final _homeController = Get.putOrFind(HomeController.new); final _mainController = Get.find(); - @override - bool get needsCorrection => _homeController.hideTopBar; - @override bool get wantKeepAlive => true; @@ -34,51 +31,36 @@ class _HomePageState extends CommonPageState Widget build(BuildContext context) { super.build(context); final theme = Theme.of(context); - Widget tabBar; - if (_homeController.tabs.length > 1) { - tabBar = Padding( - padding: const EdgeInsets.only(top: 4), - child: SizedBox( - height: 42, - width: double.infinity, - child: TabBar( - controller: _homeController.tabController, - tabs: _homeController.tabs.map((e) => Tab(text: e.label)).toList(), - isScrollable: true, - dividerColor: Colors.transparent, - dividerHeight: 0, - splashBorderRadius: Style.mdRadius, - tabAlignment: TabAlignment.center, - onTap: (_) { - if (!_homeController.tabController.indexIsChanging) { - _homeController.animateToTop(); - } - }, - ), - ), - ); - if (_homeController.hideTopBar && - _mainController.barHideType == .instant) { - tabBar = Material( - color: theme.colorScheme.surface, - child: tabBar, - ); - } - } else { - tabBar = const SizedBox(height: 6); - } return Column( children: [ if (MediaQuery.sizeOf(context).isPortrait) customAppBar(theme), - tabBar, - Expanded( - child: onBuild( - tabBarView( + Padding( + padding: const EdgeInsets.only(top: 4), + child: SizedBox( + height: 42, + width: double.infinity, + child: TabBar( controller: _homeController.tabController, - children: _homeController.tabs.map((e) => e.page).toList(), + tabs: HomeTabType.values.map((e) => Tab(text: e.label)).toList(), + isScrollable: true, + dividerColor: Colors.transparent, + dividerHeight: 0, + splashBorderRadius: Style.mdRadius, + tabAlignment: TabAlignment.center, + onTap: (_) { + if (!_homeController.tabController.indexIsChanging) { + _homeController.animateToTop(); + } + }, ), ), ), + Expanded( + child: tabBarView( + controller: _homeController.tabController, + children: HomeTabType.values.map((e) => e.page).toList(), + ), + ), ], ); } @@ -94,39 +76,6 @@ class _HomePageState extends CommonPageState userAvatar(theme: theme, mainController: _mainController), ], ); - if (_homeController.hideTopBar) { - if (_mainController.barOffset case final barOffset?) { - return Obx( - () { - final offset = barOffset.value; - return CustomHeightWidget( - offset: Offset(0, -offset), - height: Style.topBarHeight - offset, - child: Padding( - padding: padding, - child: child, - ), - ); - }, - ); - } - if (_homeController.showTopBar case final showTopBar?) { - return Obx(() { - final showSearchBar = showTopBar.value; - return AnimatedOpacity( - opacity: showSearchBar ? 1 : 0, - duration: const Duration(milliseconds: 300), - child: AnimatedContainer( - curve: Curves.easeInOutCubicEmphasized, - duration: const Duration(milliseconds: 500), - height: showSearchBar ? Style.topBarHeight : 0, - padding: padding, - child: child, - ), - ); - }); - } - } return Container( height: Style.topBarHeight, padding: padding, @@ -246,7 +195,7 @@ Widget userAvatar({ Widget msgBadge(MainController mainController) { return Obx( () { - if (mainController.accountService.isLogin.value) { + if (mainController.accountService.isLogin.value || kDebugMode) { final count = mainController.msgUnReadCount.value; final isNumBadge = mainController.msgBadgeMode == .number; return IconButton( diff --git a/lib/pages/hot/view.dart b/lib/pages/hot/view.dart index 472dad6b0..883c1d4ff 100644 --- a/lib/pages/hot/view.dart +++ b/lib/pages/hot/view.dart @@ -2,15 +2,12 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; -import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/models/model_hot_video_item.dart'; import 'package:PiliPlus/pages/home/controller.dart'; import 'package:PiliPlus/pages/hot/controller.dart'; -import 'package:PiliPlus/pages/rank/view.dart'; import 'package:PiliPlus/utils/grid.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; @@ -64,53 +61,37 @@ class _HotPageState extends State physics: const AlwaysScrollableScrollPhysics(), controller: controller.scrollController, slivers: [ - if (Pref.showHotRcmd) - SliverToBoxAdapter( - child: Padding( - padding: const .only(left: 12, top: 12, right: 12), - child: Row( - mainAxisAlignment: .spaceEvenly, - children: [ - _buildEntranceItem( - iconUrl: - 'https://i0.hdslb.com/bfs/archive/a3f11218aaf4521b4967db2ae164ecd3052586b9.png', - title: '排行榜', - onTap: () { - try { - final homeController = Get.find(); - final index = homeController.tabs.indexOf( - HomeTabType.rank, - ); - if (index != -1) { - homeController.tabController.animateTo(index); - } else { - Get.to( - Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar(title: const Text('排行榜')), - body: const ViewSafeArea(child: RankPage()), - ), - ); - } - } catch (_) {} - }, - ), - _buildEntranceItem( - iconUrl: - 'https://i0.hdslb.com/bfs/archive/552ebe8c4794aeef30ebd1568b59ad35f15e21ad.png', - title: '每周必看', - onTap: () => Get.toNamed('/popularSeries'), - ), - _buildEntranceItem( - iconUrl: - 'https://i0.hdslb.com/bfs/archive/3693ec9335b78ca57353ac0734f36a46f3d179a9.png', - title: '入站必刷', - onTap: () => Get.toNamed('/popularPrecious'), - ), - ], - ), + SliverToBoxAdapter( + child: Padding( + padding: const .only(left: 12, top: 12, right: 12), + child: Row( + mainAxisAlignment: .spaceEvenly, + children: [ + _buildEntranceItem( + iconUrl: + 'https://i0.hdslb.com/bfs/archive/a3f11218aaf4521b4967db2ae164ecd3052586b9.png', + title: '排行榜', + onTap: () => + Get.find().tabController.animateTo( + HomeTabType.rank.index, + ), + ), + _buildEntranceItem( + iconUrl: + 'https://i0.hdslb.com/bfs/archive/552ebe8c4794aeef30ebd1568b59ad35f15e21ad.png', + title: '每周必看', + onTap: () => Get.toNamed('/popularSeries'), + ), + _buildEntranceItem( + iconUrl: + 'https://i0.hdslb.com/bfs/archive/3693ec9335b78ca57353ac0734f36a46f3d179a9.png', + title: '入站必刷', + onTap: () => Get.toNamed('/popularPrecious'), + ), + ], ), ), + ), SliverPadding( padding: const EdgeInsets.only(top: 7, bottom: 100), sliver: Obx( diff --git a/lib/pages/later/view.dart b/lib/pages/later/view.dart index db37be02a..78ac45e85 100644 --- a/lib/pages/later/view.dart +++ b/lib/pages/later/view.dart @@ -2,12 +2,11 @@ import 'package:PiliPlus/common/widgets/appbar/appbar.dart'; import 'package:PiliPlus/common/widgets/flutter/page/tabs.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/models/common/later_view_type.dart'; import 'package:PiliPlus/models_new/later/list.dart'; -import 'package:PiliPlus/pages/common/fab_mixin.dart' - show NoRightMarginFabLocation; import 'package:PiliPlus/pages/later/base_controller.dart'; import 'package:PiliPlus/pages/later/controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; @@ -73,78 +72,91 @@ class _LaterPageState extends State currCtr().handleSelect(); } }, - child: Scaffold( - resizeToAvoidBottomInset: false, + child: scaffold( appBar: _buildAppbar(enableMultiSelect), - floatingActionButtonLocation: const NoRightMarginFabLocation(), - floatingActionButton: Padding( - padding: const .only(right: kFloatingActionButtonMargin), - child: Obx( - () => currCtr().loadingState.value.isSuccess - ? AnimatedSlide( - offset: _baseCtr.isPlayAll.value - ? Offset.zero - : const Offset(0.75, 0), - duration: const Duration(milliseconds: 120), - child: GestureDetector( - onHorizontalDragDown: (details) => - _baseCtr.dx = details.localPosition.dx, - onHorizontalDragStart: (details) => - _baseCtr.setIsPlayAll( - details.localPosition.dx < _baseCtr.dx, - ), - child: FloatingActionButton.extended( - onPressed: () { - if (_baseCtr.isPlayAll.value) { - currCtr().toViewPlayAll(); - } else { - _baseCtr.setIsPlayAll(true); - } - }, - label: const Text('播放全部'), - icon: const Icon(Icons.playlist_play), - ), - ), - ) - : const SizedBox.shrink(), - ), - ), - body: ViewSafeArea( - child: Column( - children: [ - TabBar( - // isScrollable: true, - // tabAlignment: TabAlignment.start, - controller: _tabController, - tabs: LaterViewType.values.map((item) { - final count = _baseCtr.counts[item.index]; - return Tab( - text: '${item.title}${count != -1 ? '($count)' : ''}', - ); - }).toList(), - onTap: (_) { - if (!_tabController.indexIsChanging) { - currCtr().scrollController.animToTop(); - } else if (enableMultiSelect) { - currCtr(_tabController.previousIndex).handleSelect(); - } - }, + body: Stack( + clipBehavior: .none, + children: [ + ViewSafeArea( + child: Column( + children: [ + TabBar( + // isScrollable: true, + // tabAlignment: TabAlignment.start, + controller: _tabController, + tabs: LaterViewType.values.map((item) { + final count = _baseCtr.counts[item.index]; + return Tab( + text: + '${item.title}${count != -1 ? '($count)' : ''}', + ); + }).toList(), + onTap: (_) { + if (!_tabController.indexIsChanging) { + currCtr().scrollController.animToTop(); + } else if (enableMultiSelect) { + currCtr( + _tabController.previousIndex, + ).handleSelect(); + } + }, + ), + Expanded( + child: + TabBarView( + physics: enableMultiSelect + ? const NeverScrollableScrollPhysics() + : clampingScrollPhysics, + controller: _tabController, + horizontalDragGestureRecognizer: + CustomHorizontalDragGestureRecognizer.new, + children: LaterViewType.values + .map((item) => item.page) + .toList(), + ), + ), + ], ), - Expanded( - child: TabBarView( - physics: enableMultiSelect - ? const NeverScrollableScrollPhysics() - : clampingScrollPhysics, - controller: _tabController, - horizontalDragGestureRecognizer: - CustomHorizontalDragGestureRecognizer.new, - children: LaterViewType.values - .map((item) => item.page) - .toList(), + ), + Positioned( + right: 0, + bottom: + MediaQuery.viewPaddingOf(context).bottom + + kFloatingActionButtonMargin, + child: Padding( + padding: const .only(right: kFloatingActionButtonMargin), + child: Obx( + () => currCtr().loadingState.value.isSuccess + ? AnimatedSlide( + offset: _baseCtr.isPlayAll.value + ? Offset.zero + : const Offset(0.75, 0), + duration: const Duration(milliseconds: 120), + child: GestureDetector( + onHorizontalDragDown: (details) => + _baseCtr.dx = details.localPosition.dx, + onHorizontalDragStart: (details) => + _baseCtr.setIsPlayAll( + details.localPosition.dx < _baseCtr.dx, + ), + child: FloatingActionButton.extended( + onPressed: () { + if (_baseCtr.isPlayAll.value) { + currCtr().toViewPlayAll(); + } else { + _baseCtr.setIsPlayAll(true); + } + }, + label: const Text('播放全部'), + icon: const Icon(Icons.playlist_play), + ), + ), + ) + : const SizedBox.shrink(), ), ), - ], - ), + ), + ], ), ), ); diff --git a/lib/pages/later_search/controller.dart b/lib/pages/later_search/controller.dart index 7774e9e7a..d3420f404 100644 --- a/lib/pages/later_search/controller.dart +++ b/lib/pages/later_search/controller.dart @@ -13,8 +13,16 @@ class LaterSearchController CommonMultiSelectMixin, DeleteItemMixin, BaseLaterController { - dynamic mid = Get.arguments['mid']; - dynamic count = Get.arguments['count']; + dynamic mid; + dynamic count; + + @override + void onInit() { + final args = Get.arguments; + mid = args['mid']; + count = args['count']; + super.onInit(); + } @override Future> customGetData() => UserHttp.seeYouLater( diff --git a/lib/pages/live/view.dart b/lib/pages/live/view.dart index d72e725cf..36df3ce0d 100644 --- a/lib/pages/live/view.dart +++ b/lib/pages/live/view.dart @@ -14,6 +14,7 @@ import 'package:PiliPlus/pages/live/widgets/live_item_app.dart'; import 'package:PiliPlus/pages/live_area/view.dart'; import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/page_utils.dart'; @@ -149,13 +150,9 @@ class _LivePageState extends State context: context, tooltip: '游戏赛事', icon: const Icon(Icons.gamepad), - onPressed: () => Get.toNamed( - '/webview', - parameters: { - 'uaType': 'mob', - 'url': - 'https://www.bilibili.com/h5/match/data/home?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', - }, + onPressed: () => WebViewPage.toWebView( + uaType: 'mob', + 'https://www.bilibili.com/h5/match/data/home?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', ), ), const SizedBox(width: 8), diff --git a/lib/pages/live_area/view.dart b/lib/pages/live_area/view.dart index 7ea4458a4..b0a771f9c 100644 --- a/lib/pages/live_area/view.dart +++ b/lib/pages/live_area/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; @@ -30,8 +31,7 @@ class _LiveAreaPageState extends State { Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('全部标签'), actions: _controller.isLogin diff --git a/lib/pages/live_area_detail/view.dart b/lib/pages/live_area_detail/view.dart index 3624e49c4..f3ebd301c 100644 --- a/lib/pages/live_area_detail/view.dart +++ b/lib/pages/live_area_detail/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; @@ -43,8 +44,7 @@ class _LiveAreaDetailPageState extends State { Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text(widget.parentName), actions: [ diff --git a/lib/pages/live_dm_block/view.dart b/lib/pages/live_dm_block/view.dart index e79b27cff..88774325e 100644 --- a/lib/pages/live_dm_block/view.dart +++ b/lib/pages/live_dm_block/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart'; import 'package:PiliPlus/models/common/live/live_dm_silent_type.dart'; @@ -82,8 +83,7 @@ class _LiveDmBlockPageState extends State { ), ); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('弹幕屏蔽')), body: Padding( padding: EdgeInsets.only(left: padding.left, right: padding.right), diff --git a/lib/pages/live_follow/view.dart b/lib/pages/live_follow/view.dart index 0ea623ebb..a156bb460 100644 --- a/lib/pages/live_follow/view.dart +++ b/lib/pages/live_follow/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/live/live_follow/item.dart'; import 'package:PiliPlus/pages/live_follow/controller.dart'; @@ -23,8 +24,7 @@ class _LiveFollowPageState extends State { @override Widget build(BuildContext context) { final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Obx( () { diff --git a/lib/pages/live_room/controller.dart b/lib/pages/live_room/controller.dart index e9d8a986b..fdc3fdc17 100644 --- a/lib/pages/live_room/controller.dart +++ b/lib/pages/live_room/controller.dart @@ -7,7 +7,6 @@ import 'package:PiliPlus/common/widgets/flutter/text_field/controller.dart'; import 'package:PiliPlus/http/live.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; -import 'package:PiliPlus/models/common/super_chat_type.dart'; import 'package:PiliPlus/models/common/video/live_quality.dart'; import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models_new/live/live_danmaku/danmaku_msg.dart'; @@ -31,7 +30,6 @@ import 'package:PiliPlus/utils/connectivity_utils.dart'; import 'package:PiliPlus/utils/danmaku_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; -import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -111,7 +109,7 @@ class LiveRoomController extends GetxController { LiveMessageStream? _msgStream; late final ScrollController scrollController; late final RxInt pageIndex = 0.obs; - PageController? pageController; + late final PageController pageController; int? currentQn = PlatformUtils.isMobile ? null : Pref.liveQuality; RxString currentQnDesc = ''.obs; @@ -125,9 +123,6 @@ class LiveRoomController extends GetxController { bool? isPlaying; late bool isFullScreen = false; - final superChatType = Pref.superChatType; - late final showSuperChat = superChatType != SuperChatType.disable; - final headerKey = GlobalKey(); final RxString title = ''.obs; @@ -160,9 +155,7 @@ class LiveRoomController extends GetxController { if (Accounts.heartbeat.isLogin && !Pref.historyPause) { VideoHttp.roomEntryAction(roomId: roomId); } - if (showSuperChat) { - pageController = PageController(); - } + pageController = PageController(); } Future? playerInit({ @@ -177,7 +170,6 @@ class LiveRoomController extends GetxController { isLive: true, autoplay: autoplay, isVertical: isPortrait.value, - autoFullScreenFlag: autoFullScreenFlag, ); } @@ -338,9 +330,7 @@ class LiveRoomController extends GetxController { void startLiveMsg() { if (messages.isEmpty) { prefetch(); - if (showSuperChat) { - getSuperChatMsg(); - } + getSuperChatMsg(); } if (_msgStream != null) { return; @@ -385,14 +375,12 @@ class LiveRoomController extends GetxController { savedDanmaku?.clear(); savedDanmaku = null; messages.clear(); - if (showSuperChat) { - superChatMsg.clear(); - fsSC.value = null; - } + superChatMsg.clear(); + fsSC.value = null; scrollController ..removeListener(listener) ..dispose(); - pageController?.dispose(); + pageController.dispose(); danmakuController = null; super.onClose(); } @@ -485,7 +473,7 @@ class LiveRoomController extends GetxController { uemote: uemote, extra: liveExtra, reply: reply, - medalInfo: !GlobalData().showMedal || user['medal'] == null + medalInfo: user['medal'] == null ? null : UinfoMedal.fromJson(user['medal']), ), @@ -501,7 +489,7 @@ class LiveRoomController extends GetxController { ), ); break; - case 'SUPER_CHAT_MESSAGE' when showSuperChat: + case 'SUPER_CHAT_MESSAGE': final item = SuperChatItem.fromJson(obj['data']); superChatMsg.insert(0, item); if (plPlayerController.showDanmaku && @@ -515,27 +503,6 @@ class LiveRoomController extends GetxController { } addDm(item); break; - // case 'SUPER_CHAT_MESSAGE_DELETE' when showSuperChat: - // if (obj['roomid'] == roomId) { - // final ids = obj['data']?['ids'] as List?; - // if (ids != null && ids.isNotEmpty) { - // if (superChatType == .valid) { - // superChatMsg.removeWhere((e) => ids.contains(e.id)); - // } else { - // bool? refresh; - // for (final id in ids) { - // if (superChatMsg.firstWhereOrNull((e) => e.id == id) - // case final item?) { - // item.deleted = true; - // refresh ??= true; - // } - // } - // if (refresh ?? false) { - // superChatMsg.refresh(); - // } - // } - // } - // } case 'WATCHED_CHANGE': watchedShow.value = obj['data']['text_large']; break; diff --git a/lib/pages/live_room/superchat/superchat_panel.dart b/lib/pages/live_room/superchat/superchat_panel.dart index 72bdd3424..b4cdf3606 100644 --- a/lib/pages/live_room/superchat/superchat_panel.dart +++ b/lib/pages/live_room/superchat/superchat_panel.dart @@ -1,7 +1,5 @@ -import 'package:PiliPlus/models/common/super_chat_type.dart'; import 'package:PiliPlus/pages/live_room/controller.dart'; import 'package:PiliPlus/pages/live_room/superchat/superchat_card.dart'; -import 'package:PiliPlus/pages/search/controller.dart'; import 'package:flutter/material.dart'; import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart'; @@ -17,15 +15,9 @@ class SuperChatPanel extends StatefulWidget { State createState() => _SuperChatPanelState(); } -class _SuperChatPanelState extends DebounceStreamState +class _SuperChatPanelState extends State with AutomaticKeepAliveClientMixin { @override - Duration get duration => const Duration(milliseconds: 300); - - late final persistentSC = - widget.controller.superChatType == SuperChatType.persist; - - @override Widget build(BuildContext context) { super.build(context); return Obx( @@ -46,8 +38,7 @@ class _SuperChatPanelState extends DebounceStreamState return SuperChatCard( key: ValueKey(item.id), item: item, - onRemove: () => ctr?.add(true), - persistentSC: persistentSC, + persistentSC: true, onReport: () => widget.controller.reportSC(item), ); }, @@ -56,9 +47,6 @@ class _SuperChatPanelState extends DebounceStreamState ); } - @override - void onValueChanged(value) => widget.controller.clearSC(); - @override bool get wantKeepAlive => true; } diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index 24d83dcf7..3b17792e9 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -32,21 +32,18 @@ import 'package:PiliPlus/pages/video/widgets/player_focus.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/plugin/pl_player/utils/danmaku_options.dart'; -import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/plugin/pl_player/view/view.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/max_screen_size.dart'; import 'package:PiliPlus/utils/mobile_observer.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:canvas_danmaku/canvas_danmaku.dart'; @@ -55,7 +52,6 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart' hide PageView; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:screen_brightness_platform_interface/screen_brightness_platform_interface.dart'; class LiveRoomPage extends StatefulWidget { const LiveRoomPage({super.key}); @@ -66,7 +62,6 @@ class LiveRoomPage extends StatefulWidget { class _LiveRoomPageState extends State with WidgetsBindingObserver, RouteAware, RouteAwareMixin { - late final fullScreenSCWidth = Pref.fullScreenSCWidth; final String heroTag = Utils.generateRandomString(6); late final LiveRoomController _liveRoomController; late final PlPlayerController plPlayerController; @@ -88,26 +83,15 @@ class _LiveRoomPageState extends State plPlayerController = _liveRoomController.plPlayerController ..addStatusLister(playerListener); PlPlayerController.setPlayCallBack(plPlayerController.play); - if (plPlayerController.removeSafeArea) { - hideSystemBar(); - } } @override void didChangeDependencies() { super.didChangeDependencies(); - if (plPlayerController.removeSafeArea) { - padding = .zero; - } else { - padding = MediaQuery.viewPaddingOf(context); - } + padding = MediaQuery.viewPaddingOf(context); final size = MediaQuery.sizeOf(context); maxWidth = size.width; maxHeight = size.height; - isWindowMode = MaxScreenSize.isWindowMode( - width: maxWidth, - height: maxHeight, - ); isPortrait = size.isPortrait; plPlayerController.screenRatio = maxHeight / maxWidth; } @@ -170,9 +154,6 @@ class _LiveRoomPageState extends State void dispose() { removeObserverMobile(this); videoPlayerServiceHandler?.onVideoDetailDispose(heroTag); - if (Platform.isAndroid && !plPlayerController.setSystemBrightness) { - ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness(); - } PlPlayerController.setPlayCallBack(null); plPlayerController ..removeStatusLister(playerListener) @@ -204,7 +185,6 @@ class _LiveRoomPageState extends State late double maxWidth; late double maxHeight; - bool isWindowMode = false; late EdgeInsets padding; late bool isPortrait; @@ -217,7 +197,6 @@ class _LiveRoomPageState extends State width: maxWidth, height: maxHeight, isPipMode: true, - needDm: !plPlayerController.pipNoDanmaku, ); } else { child = childWhenDisabled; @@ -290,8 +269,7 @@ class _LiveRoomPageState extends State return const SizedBox.shrink(); }, ); - if (_liveRoomController.showSuperChat && - (isFullScreen || plPlayerController.isDesktopPip)) { + if ((isFullScreen || plPlayerController.isDesktopPip)) { player = Stack( clipBehavior: Clip.none, children: [ @@ -324,7 +302,7 @@ class _LiveRoomPageState extends State Positioned( left: padding.left + 25, bottom: 25, - width: fullScreenSCWidth, + width: 255.0, child: Obx(() { final item = _liveRoomController.fsSC.value; if (item == null) { @@ -409,23 +387,22 @@ class _LiveRoomPageState extends State ); }, ), - Scaffold( - primary: !plPlayerController.removeSafeArea, - resizeToAvoidBottomInset: false, - backgroundColor: Colors.transparent, - appBar: isWindowMode && isFullScreen && !isPortrait - ? null - : _buildAppBar(isFullScreen), - body: isPortrait - ? Obx( - () { - if (_liveRoomController.isPortrait.value) { - return _buildPP(isFullScreen); - } - return _buildPH(isFullScreen); - }, - ) - : _buildBodyH(isFullScreen), + Column( + children: [ + if (!(isFullScreen && !isPortrait)) _buildAppBar(isFullScreen), + Expanded( + child: isPortrait + ? Obx( + () { + if (_liveRoomController.isPortrait.value) { + return _buildPP(isFullScreen); + } + return _buildPH(isFullScreen); + }, + ) + : _buildBodyH(isFullScreen), + ), + ], ), ], ); @@ -435,7 +412,7 @@ class _LiveRoomPageState extends State Widget _buildPH(bool isFullScreen) { final height = maxWidth / Style.aspectRatio16x9; final videoHeight = isFullScreen - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) + ? maxHeight - (!isPortrait ? 0 : padding.top) : height; final bottomHeight = maxHeight - padding.top - height - kToolbarHeight; return Column( @@ -464,7 +441,7 @@ class _LiveRoomPageState extends State Widget _buildPP(bool isFullScreen) { final bottomHeight = 70 + padding.bottom; final videoHeight = isFullScreen - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) + ? maxHeight - (!isPortrait ? 0 : padding.top) : maxHeight - bottomHeight; return Stack( clipBehavior: Clip.none, @@ -543,7 +520,6 @@ class _LiveRoomPageState extends State PreferredSizeWidget _buildAppBar(bool isFullScreen) { final color = Theme.of(context).colorScheme.onSurfaceVariant; return AppBar( - primary: !plPlayerController.removeSafeArea, toolbarHeight: isFullScreen ? 0 : null, backgroundColor: Colors.transparent, foregroundColor: Colors.white, @@ -652,21 +628,6 @@ class _LiveRoomPageState extends State ], ), ), - PopupMenuItem( - onTap: () => PageUtils.inAppWebview(liveUrl, off: true), - child: Row( - spacing: 10, - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - Icons.open_in_browser, - size: 19, - color: color, - ), - const Text('浏览器打开'), - ], - ), - ), if (_liveRoomController.roomInfoH5.value != null) PopupMenuItem( onTap: () { @@ -718,7 +679,7 @@ class _LiveRoomPageState extends State final videoHeight = maxHeight - padding.top - kToolbarHeight; final width = isFullScreen ? maxWidth : videoWidth; final height = isFullScreen - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) + ? maxHeight - (!isPortrait ? 0 : padding.top) : videoHeight; return Padding( padding: isFullScreen @@ -777,24 +738,21 @@ class _LiveRoomPageState extends State ); return Padding( padding: EdgeInsets.only(bottom: 12, top: isPortrait ? 12 : 0), - child: _liveRoomController.showSuperChat - ? PageView( - key: pageKey, - controller: _liveRoomController.pageController, - physics: clampingScrollPhysics, - onPageChanged: (value) => - _liveRoomController.pageIndex.value = value, - horizontalDragGestureRecognizer: - CustomHorizontalDragGestureRecognizer.new, - children: [ - KeepAliveWrapper(child: chat()), - SuperChatPanel( - key: scKey, - controller: _liveRoomController, - ), - ], - ) - : chat(), + child: PageView( + key: pageKey, + controller: _liveRoomController.pageController, + physics: clampingScrollPhysics, + onPageChanged: (value) => _liveRoomController.pageIndex.value = value, + horizontalDragGestureRecognizer: + CustomHorizontalDragGestureRecognizer.new, + children: [ + KeepAliveWrapper(child: chat()), + SuperChatPanel( + key: scKey, + controller: _liveRoomController, + ), + ], + ), ); } @@ -836,12 +794,10 @@ class _LiveRoomPageState extends State onPressed: () { final newVal = !enableShowLiveDanmaku; plPlayerController.enableShowDanmaku.value = newVal; - if (!plPlayerController.tempPlayerConf) { - GStorage.setting.put( - SettingBoxKey.enableShowLiveDanmaku, - newVal, - ); - } + GStorage.setting.put( + SettingBoxKey.enableShowLiveDanmaku, + newVal, + ); }, icon: enableShowLiveDanmaku ? const Icon( @@ -941,25 +897,22 @@ class _LiveRoomPageState extends State ), ), ); - if (_liveRoomController.showSuperChat) { - return Stack( - children: [ - child, - Positioned( - left: 0, - top: 0, - right: 0, - child: Obx( - () => _BorderIndicator( - radius: const Radius.circular(20), - isLeft: _liveRoomController.pageIndex.value == 0, - ), + return Stack( + children: [ + child, + Positioned( + left: 0, + top: 0, + right: 0, + child: Obx( + () => _BorderIndicator( + radius: const Radius.circular(20), + isLeft: _liveRoomController.pageIndex.value == 0, ), ), - ], - ); - } - return child; + ), + ], + ); } WidgetStateProperty? overlayColor(ColorScheme theme) => diff --git a/lib/pages/live_room/widgets/bottom_control.dart b/lib/pages/live_room/widgets/bottom_control.dart index 345792da7..487d465b8 100644 --- a/lib/pages/live_room/widgets/bottom_control.dart +++ b/lib/pages/live_room/widgets/bottom_control.dart @@ -103,12 +103,10 @@ class _BottomControlState extends State with HeaderMixin { onTap: () { final newVal = !enableShowLiveDanmaku; plPlayerController.enableShowDanmaku.value = newVal; - if (!plPlayerController.tempPlayerConf) { - GStorage.setting.put( - SettingBoxKey.enableShowLiveDanmaku, - newVal, - ); - } + GStorage.setting.put( + SettingBoxKey.enableShowLiveDanmaku, + newVal, + ); }, ); }, diff --git a/lib/pages/live_room/widgets/chat_panel.dart b/lib/pages/live_room/widgets/chat_panel.dart index 6fcbd7531..80d1a1ea7 100644 --- a/lib/pages/live_room/widgets/chat_panel.dart +++ b/lib/pages/live_room/widgets/chat_panel.dart @@ -137,7 +137,7 @@ class LiveRoomChatPanel extends StatelessWidget { }, ), ), - if (kDebugMode && liveRoomController.showSuperChat) ...[ + if (kDebugMode) ...[ Positioned( top: 50, right: 0, @@ -164,55 +164,53 @@ class LiveRoomChatPanel extends StatelessWidget { ), ), ], - if (liveRoomController.showSuperChat) - Positioned( - top: 12, - right: 12, - child: Obx(() { - final isEmpty = liveRoomController.superChatMsg.isEmpty; - return AnimatedOpacity( - opacity: isEmpty ? 0 : 1, - duration: const Duration(milliseconds: 120), - child: GestureDetector( - onTap: isEmpty - ? null - : () => liveRoomController.pageController?.animateToPage( - 1, - duration: const Duration(milliseconds: 200), - curve: Curves.easeInOut, - ), - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(8)), - color: const Color(0x2FFFFFFF), - border: Border.all(color: Colors.white24, width: 0.7), - ), - padding: const EdgeInsets.fromLTRB(10, 4, 4, 4), - child: Text.rich( - style: const TextStyle(color: Colors.white, height: 1), - strutStyle: const StrutStyle(height: 1, leading: 0), - TextSpan( - children: [ - TextSpan( - text: - 'SC(${liveRoomController.superChatMsg.length})', - ), - const WidgetSpan( - alignment: PlaceholderAlignment.middle, - child: Icon( - size: 18, - Icons.keyboard_arrow_right, - color: Colors.white, - ), - ), - ], + Positioned( + top: 12, + right: 12, + child: Obx(() { + final isEmpty = liveRoomController.superChatMsg.isEmpty; + return AnimatedOpacity( + opacity: isEmpty ? 0 : 1, + duration: const Duration(milliseconds: 120), + child: GestureDetector( + onTap: isEmpty + ? null + : () => liveRoomController.pageController.animateToPage( + 1, + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut, ), + child: Container( + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8)), + color: const Color(0x2FFFFFFF), + border: Border.all(color: Colors.white24, width: 0.7), + ), + padding: const EdgeInsets.fromLTRB(10, 4, 4, 4), + child: Text.rich( + style: const TextStyle(color: Colors.white, height: 1), + strutStyle: const StrutStyle(height: 1, leading: 0), + TextSpan( + children: [ + TextSpan( + text: 'SC(${liveRoomController.superChatMsg.length})', + ), + const WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: Icon( + size: 18, + Icons.keyboard_arrow_right, + color: Colors.white, + ), + ), + ], ), ), ), - ); - }), - ), + ), + ); + }), + ), Obx( () => liveRoomController.disableAutoScroll.value ? Positioned( diff --git a/lib/pages/live_search/view.dart b/lib/pages/live_search/view.dart index 0ff89aff1..74f7ac6f7 100644 --- a/lib/pages/live_search/view.dart +++ b/lib/pages/live_search/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/models/common/live/live_search_type.dart'; @@ -22,8 +23,7 @@ class _LiveSearchPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( actions: [ IconButton( diff --git a/lib/pages/log_table/view.dart b/lib/pages/log_table/view.dart index f1d0658d3..80b42b4d1 100644 --- a/lib/pages/log_table/view.dart +++ b/lib/pages/log_table/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/log_table/controller.dart'; import 'package:PiliPlus/utils/extension/widget_ext.dart'; @@ -19,8 +20,7 @@ class _LogPageState extends State> { @override Widget build(BuildContext context) { final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: Text(_controller.title)), body: CustomScrollView( slivers: [ diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 64090acf8..072770cbd 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -1,7 +1,5 @@ import 'dart:async'; -import 'dart:io'; -import 'package:PiliPlus/common/dial_prefix.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/radio_widget.dart'; import 'package:PiliPlus/http/init.dart'; @@ -15,18 +13,14 @@ import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:gt3_flutter_plugin/gt3_flutter_plugin.dart'; class LoginPageController extends GetxController with GetSingleTickerProviderStateMixin { - final TextEditingController telTextController = TextEditingController(); final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = TextEditingController(); - final TextEditingController smsCodeTextController = TextEditingController(); final TextEditingController cookieTextController = TextEditingController(); late final codeInfo = @@ -34,27 +28,19 @@ class LoginPageController extends GetxController late final TabController tabController; - late final Gt3FlutterPlugin captcha = Gt3FlutterPlugin(); - late final CaptchaDataModel captchaData = CaptchaDataModel(); late final RxInt qrCodeLeftTime = 180.obs; late final RxString statusQRCode = ''.obs; - late var selectedCountryCodeId = Login.dialPrefix.first; - late String captchaKey = ''; - late final RxInt smsSendCooldown = 0.obs; - late int smsSendTimestamp = 0; - // 定时器 Timer? qrCodeTimer; - Timer? smsSendCooldownTimer; bool _isReq = false; @override void onInit() { super.onInit(); - tabController = TabController(length: 4, vsync: this) + tabController = TabController(length: 3, vsync: this) ..addListener(_handleTabChange); } @@ -64,11 +50,8 @@ class LoginPageController extends GetxController ..removeListener(_handleTabChange) ..dispose(); qrCodeTimer?.cancel(); - smsSendCooldownTimer?.cancel(); - telTextController.dispose(); usernameTextController.dispose(); passwordTextController.dispose(); - smsCodeTextController.dispose(); cookieTextController.dispose(); super.onClose(); } @@ -137,103 +120,14 @@ class LoginPageController extends GetxController onSuccess(); } - if (PlatformUtils.isDesktop) { - showDialog>( - context: Get.context!, - builder: (context) => GeetestWebviewDialog(geeGt, geeChallenge), - ).then((res) { - if (res != null) { - updateCaptchaData(res); - } - }); - } else { - final registerData = Gt3RegisterData( - challenge: geeChallenge, - gt: geeGt, - success: true, - ); - - captcha - ..addEventHandler( - onShow: (Map message) {}, - onClose: (Map message) { - SmartDialog.showToast('关闭验证'); - }, - onResult: (Map message) { - if (kDebugMode) debugPrint("Captcha result: $message"); - final String code = message["code"]; - if (code == "1") { - // 发送 message["result"] 中的数据向 B 端的业务服务接口进行查询 - updateCaptchaData(message['result']); - } else { - // 终端用户完成验证失败,自动重试 If the verification fails, it will be automatically retried. - if (kDebugMode) debugPrint("Captcha result code : $code"); - } - }, - onError: (Map message) { - SmartDialog.showToast("Captcha onError: $message"); - String code = message["code"]; - // 处理验证中返回的错误 Handling errors returned in verification - if (Platform.isAndroid) { - // Android 平台 - if (code == "-2") { - // Dart 调用异常 Call exception - } else if (code == "-1") { - // Gt3RegisterData 参数不合法 Parameter is invalid - } else if (code == "201") { - // 网络无法访问 Network inaccessible - } else if (code == "202") { - // Json 解析错误 Analysis error - } else if (code == "204") { - // WebView 加载超时,请检查是否混淆极验 SDK Load timed out - } else if (code == "204_1") { - // WebView 加载前端页面错误,请查看日志 Error loading front-end page, please check the log - } else if (code == "204_2") { - // WebView 加载 SSLError - } else if (code == "206") { - // gettype 接口错误或返回为 null API error or return null - } else if (code == "207") { - // getphp 接口错误或返回为 null API error or return null - } else if (code == "208") { - // ajax 接口错误或返回为 null API error or return null - } else { - // 更多错误码参考开发文档 More error codes refer to the development document - // https://docs.geetest.com/sensebot/apirefer/errorcode/android - } - } - - if (Platform.isIOS) { - // iOS 平台 - if (code == "-1009") { - // 网络无法访问 Network inaccessible - } else if (code == "-1004") { - // 无法查找到 HOST Unable to find HOST - } else if (code == "-1002") { - // 非法的 URL Illegal URL - } else if (code == "-1001") { - // 网络超时 Network timeout - } else if (code == "-999") { - // 请求被意外中断, 一般由用户进行取消操作导致 The interrupted request was usually caused by the user cancelling the operation - } else if (code == "-21") { - // 使用了重复的 challenge Duplicate challenges are used - // 检查获取 challenge 是否进行了缓存 Check if the fetch challenge is cached - } else if (code == "-20") { - // 尝试过多, 重新引导用户触发验证即可 Try too many times, lead the user to request verification again - } else if (code == "-10") { - // 预判断时被封禁, 不会再进行图形验证 Banned during pre-judgment, and no more image captcha verification - } else if (code == "-2") { - // Dart 调用异常 Call exception - } else if (code == "-1") { - // Gt3RegisterData 参数不合法 Parameter is invalid - } else { - // 更多错误码参考开发文档 More error codes refer to the development document - // https://docs.geetest.com/sensebot/apirefer/errorcode/ios - } - } - }, - ) - ..startCaptcha(registerData); - } + showDialog>( + context: Get.context!, + builder: (context) => GeetestWebviewDialog(geeGt, geeChallenge), + ).then((res) { + if (res != null) { + updateCaptchaData(res); + } + }); } // cookie登录 @@ -536,167 +430,6 @@ class LoginPageController extends GetxController // } } - // 短信验证码登录 - Future loginBySmsCode() async { - if (telTextController.text.isEmpty) { - SmartDialog.showToast('手机号不能为空'); - return; - } - if (captchaKey.isEmpty) { - SmartDialog.showToast('请先点击获取验证码'); - return; - } - if (smsCodeTextController.text.isEmpty) { - SmartDialog.showToast('验证码不能为空'); - return; - } - if (DateTime.now().millisecondsSinceEpoch - smsSendTimestamp > - 1000 * 60 * 5) { - SmartDialog.showToast('验证码已过期,请重新获取'); - return; - } - final webKeyRes = await LoginHttp.getWebKey(); - if (!webKeyRes['status']) { - SmartDialog.showToast(webKeyRes['msg']); - return; - } - String key = webKeyRes['data']['key']; - final res = await LoginHttp.loginBySms( - tel: telTextController.text, - code: smsCodeTextController.text, - captchaKey: captchaKey, - cid: selectedCountryCodeId.countryId, - key: key, - ); - if (res['status']) { - SmartDialog.showToast('登录成功'); - final data = res['data']; - await setAccount(data['token_info'], data['cookie_info']['cookies']); - Get.back(); - } else { - SmartDialog.showToast(res['msg']); - } - } - - // app端验证码 - Future sendSmsCode() async { - if (telTextController.text.isEmpty) { - SmartDialog.showToast('手机号不能为空'); - return; - } - // String? guestId; - // final webKeyRes = await LoginHttp.getWebKey(); - // if (!webKeyRes['status']) { - // SmartDialog.showToast(webKeyRes['msg']); - // } else { - // String key = webKeyRes['data']['key']; - // final guestIdRes = await LoginHttp.getGuestId(key); - // if (!guestIdRes['status']) { - // SmartDialog.showToast(guestIdRes['msg']); - // } else { - // guestId = guestIdRes['data']['guest_id']; - // } - // } - // final preCaptureRes = await LoginHttp.preCapture(); - // if (!preCaptureRes['status']) { - // SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n" - // "(${preCaptureRes['code']}) ${preCaptureRes['msg']}"); - // return; - // } - // String geeGt = preCaptureRes['data']['gee_gt']!; - // String geeChallenge = preCaptureRes['data']['gee_challenge']; - // captchaData.token = preCaptureRes['data']['recaptcha_token']!; - - // getCaptcha(geeGt, geeChallenge, () async { - - // final safeCenterSendSmsCodeRes = - // await LoginHttp.safeCenterSmsCode( - // tmpCode: currentUri.queryParameters['tmp_token']!, - // geeChallenge: geeChallenge, - // geeSeccode: captchaData.seccode!, - // geeValidate: captchaData.validate!, - // recaptchaToken: captchaData.token!, - // refererUrl: url, - // ); - // if (!safeCenterSendSmsCodeRes['status']) { - // SmartDialog.showToast("发送短信验证码失败,请尝试其它登录方式\n" - // "(${safeCenterSendSmsCodeRes['code']}) ${safeCenterSendSmsCodeRes['msg']}"); - // return; - // } - // SmartDialog.showToast("短信验证码已发送,请查收"); - // captchaKey = safeCenterSendSmsCodeRes['data']['captcha_key']; - - final res = await LoginHttp.sendSmsCode( - tel: telTextController.text, - cid: selectedCountryCodeId.countryId, - // deviceTouristId: guestId, - geeValidate: captchaData.validate, - geeSeccode: captchaData.seccode, - geeChallenge: captchaData.geetest?.challenge, - recaptchaToken: captchaData.token, - ); - if (res['status']) { - SmartDialog.showToast('发送成功'); - smsSendTimestamp = DateTime.now().millisecondsSinceEpoch; - smsSendCooldown.value = 60; - captchaKey = res['data']['captcha_key']; - smsSendCooldownTimer = Timer.periodic(const Duration(seconds: 1), ( - timer, - ) { - smsSendCooldown.value = 60 - timer.tick; - if (smsSendCooldown <= 0) { - smsSendCooldownTimer?.cancel(); - smsSendCooldown.value = 0; - } - }); - } else { - // handle login result - switch (res['code']) { - case 0: - case -105: - String? captureUrl = res['data']?['recaptcha_url']; - String? geeGt; - String? geeChallenge; - if (captureUrl != null && captureUrl.isNotEmpty) { - Uri captureUri = Uri.parse(captureUrl); - captchaData.token = captureUri.queryParameters['recaptcha_token']; - geeGt = captureUri.queryParameters['gee_gt']; - geeChallenge = captureUri.queryParameters['gee_challenge']; - } - - if (!isGeeArgumentValid(geeGt, geeChallenge)) { - if (kDebugMode) { - debugPrint( - '验证信息错误:${res["msg"]}\n返回内容:${res["data"]},尝试另一个验证码接口', - ); - } - final preCaptureRes = await LoginHttp.preCapture(); - if (!preCaptureRes['status'] || preCaptureRes['data'] == null) { - SmartDialog.showToast( - "获取验证码失败,请尝试其它登录方式\n" - "(${preCaptureRes['code']}) ${preCaptureRes['msg']} ${preCaptureRes['data']}", - ); - return; - } - geeGt = preCaptureRes['data']['gee_gt']; - geeChallenge = preCaptureRes['data']['gee_challenge']; - captchaData.token = preCaptureRes['data']['recaptcha_token']; - } - - if (!isGeeArgumentValid(geeGt, geeChallenge)) { - SmartDialog.showToast("获取验证码失败,请尝试其它登录方式\n"); - return; - } - - getCaptcha(geeGt!, geeChallenge!, sendSmsCode); - break; - default: - SmartDialog.showToast(res['msg']); - break; - } - } - } - bool isGeeArgumentValid(String? geeGt, String? geeChallenge) { return geeGt?.isNotEmpty == true && geeChallenge?.isNotEmpty == true && diff --git a/lib/pages/login/geetest/geetest_webview_dialog.dart b/lib/pages/login/geetest/geetest_webview_dialog.dart index b78ad963e..f0b735022 100644 --- a/lib/pages/login/geetest/geetest_webview_dialog.dart +++ b/lib/pages/login/geetest/geetest_webview_dialog.dart @@ -1,44 +1,23 @@ import 'dart:convert' show jsonDecode, jsonEncode; -import 'dart:io' show Platform, Directory, File; import 'package:PiliPlus/http/browser_ua.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/main.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; -import 'package:desktop_webview_window/desktop_webview_window.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:get/get.dart'; -class GeetestWebviewDialog extends StatefulWidget { +const _geetestJsUri = 'https://static.geetest.com/static/js/fullpage.0.0.0.js'; + +class GeetestWebviewDialog extends StatelessWidget { const GeetestWebviewDialog(this.gt, this.challenge, {super.key}); final String gt; final String challenge; - @override - State createState() => _GeetestWebviewDialogState(); -} - -class _GeetestWebviewDialogState extends State { - static const _geetestJsUri = - 'https://static.geetest.com/static/js/fullpage.0.0.0.js'; - - late final Future> _future; - Webview? _linuxWebview; - late bool _linuxWebviewLoading = true; - - @override - void initState() { - super.initState(); - _future = _getConfig(widget.gt, widget.challenge); - if (Platform.isLinux) { - _initLinuxWebview(); - } - } - static Future> _getConfig( String gt, String challenge, @@ -82,126 +61,9 @@ class _GeetestWebviewDialogState extends State { return Error(res.data['message']); } - Future _initLinuxWebview() async { - final config = await _future; - - if (!mounted) { - return; - } - - if (config is Error) { - config.toast(); - Get.back(); - return; - } - - final response = (config as Success).response; - - _linuxWebview = await WebviewWindow.create( - configuration: const CreateConfiguration( - windowWidth: 300, - windowHeight: 400, - title: "验证码", - ), - ); - - if (!mounted) { - _closeLinuxWebview(); - return; - } - - _linuxWebview!.addOnWebMessageReceivedCallback((msg) { - final msgStr = msg.toString(); - if (msgStr.startsWith("success:")) { - final dataStr = msgStr.substring("success:".length); - try { - final data = jsonDecode(dataStr); - Get.back(result: data); - } catch (e) { - debugPrint('geetest decode error: $e'); - } - } else if (msgStr.startsWith("error:")) { - debugPrint('geetest error: $msgStr'); - } - }); - - _linuxWebview!.onClose.whenComplete(() { - if (mounted) { - Get.back(); - } - }); - - final html = - ''' - - - - -'''; - - final tempDir = Directory.systemTemp; - final file = File( - '${tempDir.path}/geetest_${DateTime.now().millisecondsSinceEpoch}.html', - ); - await file.writeAsString(html); - - if (!mounted) { - _closeLinuxWebview(); - return; - } - - _linuxWebview!.launch('file://${file.path}'); - - if (mounted) { - setState(() { - _linuxWebviewLoading = false; - }); - } - } - - void _closeLinuxWebview() { - _linuxWebview?.close(); - _linuxWebview = null; - } - - @override - void dispose() { - _closeLinuxWebview(); - super.dispose(); - } - @override Widget build(BuildContext context) { - if (Platform.isLinux) { - return AlertDialog( - title: const Text('验证码'), - content: SizedBox( - width: 300, - height: 400, - child: Center( - child: _linuxWebviewLoading - ? const CircularProgressIndicator() - : const Text('请在弹出的新窗口中完成验证'), - ), - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - ], - ); - } - + final future = _getConfig(gt, challenge); return AlertDialog( title: const Text('验证码'), content: SizedBox( @@ -245,8 +107,8 @@ class _GeetestWebviewDialogState extends State { ); }, onLoadStop: (ctr, _) async { - final config = await _future; - if (!mounted) return; + final config = await future; + if (!context.mounted) return; if (config case Success(:final response)) { ctr.evaluateJavascript( source: diff --git a/lib/pages/login/view.dart b/lib/pages/login/view.dart index 61d9f368a..b616646e8 100644 --- a/lib/pages/login/view.dart +++ b/lib/pages/login/view.dart @@ -1,12 +1,12 @@ import 'dart:ui'; import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/dial_prefix.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/login/controller.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; @@ -34,11 +34,15 @@ class _LoginPageState extends State { // 二维码生成时间 bool showPassword = false; GlobalKey globalKey = GlobalKey(); + late EdgeInsets padding; @override void didChangeDependencies() { super.didChangeDependencies(); _loginPageCtr.didChangeDependencies(context); + padding = + MediaQuery.viewPaddingOf(context).copyWith(top: 0) + + const EdgeInsets.only(bottom: 25); } Widget loginByQRCode(ThemeData theme) { @@ -293,17 +297,10 @@ class _LoginPageState extends State { 'https://passport.bilibili.com/h5-app/passport/login/findPassword', ), dense: false, - onTap: () => Get - ..back() - ..toNamed( - '/webview', - parameters: { - 'url': - 'https://passport.bilibili.com/h5-app/passport/login/findPassword', - 'type': 'url', - 'pageTitle': '忘记密码', - }, - ), + onTap: () => WebViewPage.toWebView( + 'https://passport.bilibili.com/h5-app/passport/login/findPassword', + getBack: true, + ), ), ListTile( title: const Text( @@ -314,18 +311,11 @@ class _LoginPageState extends State { 'https://passport.bilibili.com/pc/passport/findPassword', ), dense: false, - onTap: () => Get - ..back() - ..toNamed( - '/webview', - parameters: { - 'url': - 'https://passport.bilibili.com/pc/passport/findPassword', - 'type': 'url', - 'pageTitle': '忘记密码', - 'uaType': 'pc', - }, - ), + onTap: () => WebViewPage.toWebView( + 'https://passport.bilibili.com/pc/passport/findPassword', + uaType: 'pc', + getBack: true, + ), ), ], ), @@ -359,245 +349,87 @@ class _LoginPageState extends State { ); } - Widget loginBySmS(ThemeData theme) { - return Column( - children: [ - const SizedBox(height: 20), - const Text('使用手机短信验证码登录'), - const SizedBox(height: 10), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), - child: DecoratedBox( - decoration: UnderlineTabIndicator( - borderSide: BorderSide( - color: theme.colorScheme.outline.withValues(alpha: 0.4), - ), - ), - child: Row( - children: [ - const SizedBox(width: 12), - Builder( - builder: (context) { - return PopupMenuButton( - padding: EdgeInsets.zero, - tooltip: - '选择国际冠码,' - '当前为${_loginPageCtr.selectedCountryCodeId.cname},' - '+${_loginPageCtr.selectedCountryCodeId.countryId}', - onSelected: (item) { - _loginPageCtr.selectedCountryCodeId = item; - (context as Element).markNeedsBuild(); - }, - initialValue: _loginPageCtr.selectedCountryCodeId, - itemBuilder: (_) => Login.dialPrefix.map((item) { - return PopupMenuItem( - value: item, - child: Row( - children: [ - Text(item.cname), - const Spacer(), - Text("+${item.countryId}"), - ], - ), - ); - }).toList(), - child: Row( - children: [ - Icon( - Icons.phone, - color: theme.colorScheme.onSurfaceVariant, - ), - const SizedBox(width: 12), - Text( - "+${_loginPageCtr.selectedCountryCodeId.countryId}", - ), - ], - ), - ); - }, - ), - const SizedBox(width: 6), - SizedBox( - height: 24, - child: VerticalDivider( - color: theme.colorScheme.outline.withValues(alpha: 0.5), - ), - ), - const SizedBox(width: 6), - Expanded( - child: TextField( - controller: _loginPageCtr.telTextController, - keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - ], - decoration: InputDecoration( - border: InputBorder.none, - labelText: '手机号', - suffixIcon: IconButton( - onPressed: _loginPageCtr.telTextController.clear, - icon: const Icon(Icons.clear), - ), - ), - ), - ), - ], - ), - ), - ), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), - child: DecoratedBox( - decoration: UnderlineTabIndicator( - borderSide: BorderSide( - color: theme.colorScheme.outline.withValues(alpha: 0.4), - ), - ), - child: Row( - children: [ - Expanded( - child: TextField( - controller: _loginPageCtr.smsCodeTextController, - decoration: const InputDecoration( - prefixIcon: Icon(Icons.sms_outlined), - border: InputBorder.none, - labelText: '验证码', - ), - keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly, - ], - ), - ), - Obx( - () => TextButton.icon( - onPressed: _loginPageCtr.smsSendCooldown > 0 - ? null - : _loginPageCtr.sendSmsCode, - icon: const Icon(Icons.send), - label: Text( - _loginPageCtr.smsSendCooldown > 0 - ? '等待${_loginPageCtr.smsSendCooldown}秒' - : '获取验证码', - ), - ), - ), - ], - ), - ), - ), - const SizedBox(height: 20), - OutlinedButton.icon( - onPressed: _loginPageCtr.loginBySmsCode, - icon: const Icon(Icons.login), - label: const Text('登录'), - ), - const SizedBox(height: 20), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: Text( - '手机号仅用于 bilibili 官方发送验证码与登录接口,不予保存;\n' - '本地仅存储登录凭证。\n' - '请务必在 ${Constants.appName} 开源仓库等可信渠道下载安装。', - textAlign: TextAlign.center, - style: theme.textTheme.labelSmall!.copyWith( - color: theme.colorScheme.onSurface.withValues(alpha: 0.4), - ), - ), - ), - ], - ); - } - - late EdgeInsets padding; - @override Widget build(BuildContext context) { final theme = Theme.of(context); - padding = - MediaQuery.viewPaddingOf(context).copyWith(top: 0) + - const EdgeInsets.only(bottom: 25); - final isLandscape = !MediaQuery.sizeOf(context).isPortrait; - return Scaffold( - appBar: AppBar( - leading: IconButton( - tooltip: '关闭', - icon: const Icon(Icons.close_outlined), - onPressed: Get.back, - ), - title: Row( - children: [ - const Text('登录'), - if (isLandscape) - Expanded( - child: Align( - alignment: Alignment.centerRight, - child: TabBar( - isScrollable: true, - dividerHeight: 0, - tabs: const [ - Tab( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [Icon(Icons.password), Text(' 密码')], - ), + final isPortrait = MediaQuery.sizeOf(context).isPortrait; + return Material( + child: Column( + children: [ + AppBar( + leading: IconButton( + tooltip: '关闭', + icon: const Icon(Icons.close_outlined), + onPressed: Get.back, + ), + title: Row( + children: [ + const Text('登录'), + if (!isPortrait) + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: TabBar( + isScrollable: true, + dividerHeight: 0, + tabs: const [ + Tab( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [Icon(Icons.password), Text(' 密码')], + ), + ), + Tab( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [Icon(Icons.qr_code), Text(' 扫码')], + ), + ), + Tab( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.cookie_outlined), + Text(' Cookie'), + ], + ), + ), + ], + controller: _loginPageCtr.tabController, ), - Tab( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [Icon(Icons.sms_outlined), Text(' 短信')], - ), - ), - Tab( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [Icon(Icons.qr_code), Text(' 扫码')], - ), - ), - Tab( - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.cookie_outlined), - Text(' Cookie'), - ], - ), - ), - ], - controller: _loginPageCtr.tabController, + ), ), - ), - ), - ], - ), - bottom: !isLandscape - ? TabBar( - tabs: const [ - Tab(icon: Icon(Icons.password), text: '密码'), - Tab(icon: Icon(Icons.sms_outlined), text: '短信'), - Tab(icon: Icon(Icons.qr_code), text: '扫码'), - Tab(icon: Icon(Icons.cookie_outlined), text: 'Cookie'), - ], + ], + ), + ), + if (isPortrait) + TabBar( + tabs: const [ + Tab(icon: Icon(Icons.password), text: '密码'), + Tab(icon: Icon(Icons.qr_code), text: '扫码'), + Tab(icon: Icon(Icons.cookie_outlined), text: 'Cookie'), + ], + controller: _loginPageCtr.tabController, + ), + Expanded( + child: NotificationListener( + onNotification: (notification) { + if (notification.metrics.axis == Axis.horizontal) { + FocusScope.of(context).unfocus(); + } + return false; + }, + child: tabBarView( controller: _loginPageCtr.tabController, - ) - : null, - ), - body: NotificationListener( - onNotification: (notification) { - if (notification.metrics.axis == Axis.horizontal) { - FocusScope.of(context).unfocus(); - } - return false; - }, - child: tabBarView( - controller: _loginPageCtr.tabController, - children: [ - tabViewOuter(loginByPassword(theme)), - tabViewOuter(loginBySmS(theme)), - tabViewOuter(loginByQRCode(theme)), - tabViewOuter(loginByCookie(theme)), - ], - ), + children: [ + tabViewOuter(loginByPassword(theme)), + tabViewOuter(loginByQRCode(theme)), + tabViewOuter(loginByCookie(theme)), + ], + ), + ), + ), + ], ), ); } diff --git a/lib/pages/login_devices/view.dart b/lib/pages/login_devices/view.dart index 1c130f119..1715c176e 100644 --- a/lib/pages/login_devices/view.dart +++ b/lib/pages/login_devices/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/login_devices/device.dart'; @@ -22,8 +23,7 @@ class LoginDevicesPageState extends State { @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('登录设备')), body: refreshIndicator( onRefresh: _controller.onRefresh, diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 2ee38b617..0fc98efab 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/dyn.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; @@ -9,12 +8,8 @@ import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/home/controller.dart'; -import 'package:PiliPlus/pages/mine/view.dart'; import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; -import 'package:PiliPlus/utils/extension/iterable_ext.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; @@ -25,25 +20,15 @@ class MainController extends GetxController @override final AccountService accountService = Get.find(); - List navigationBars = []; - - RxDouble? barOffset; - RxBool? showBottomBar; - late final bool hideBottomBar; - late final barHideType = Pref.barHideType; bool useBottomNav = false; late PageController controller; final RxInt selectedIndex = 0.obs; final RxInt dynCount = 0.obs; late DynamicBadgeMode dynamicBadgeMode; - late bool checkDynamic = Pref.checkDynamic; - late int dynamicPeriod = Pref.dynamicPeriod * 60 * 1000; late int _lastCheckDynamicAt = 0; - late bool hasDyn = false; late final dynamicController = Get.putOrFind(DynamicsController.new); - late bool hasHome = false; late final homeController = Get.putOrFind(HomeController.new); late DynamicBadgeMode msgBadgeMode = Pref.msgBadgeMode; @@ -53,92 +38,58 @@ class MainController extends GetxController final floatingNavBar = Pref.floatingNavBar; - late bool directExitOnBack = Pref.directExitOnBack; - late bool showTrayIcon = Pref.showTrayIcon; - late bool minimizeOnExit = Pref.minimizeOnExit; - late bool pauseOnMinimize = Pref.pauseOnMinimize; - late bool isPlaying = false; - - static const _period = 5 * 60 * 1000; + static const _dynamicPeriod = 5 * 60 * 1000; late int _lastSelectTime = 0; @override void onInit() { super.onInit(); - setNavBarConfig(); controller = PageController(initialPage: selectedIndex.value); - hideBottomBar = navigationBars.length > 1 && Pref.hideBottomBar; - if (hideBottomBar) { - switch (barHideType) { - case .instant: - showBottomBar = RxBool(true); - case .sync: - barOffset ??= RxDouble(0.0); - } - } - dynamicBadgeMode = Pref.dynamicBadgeMode; - hasDyn = navigationBars.contains(NavigationBarType.dynamics); - if (dynamicBadgeMode != DynamicBadgeMode.hidden) { - if (hasDyn) { - if (checkDynamic) { - _lastCheckDynamicAt = DateTime.now().millisecondsSinceEpoch; - } - getUnreadDynamic(); - } + if (dynamicBadgeMode != .hidden) { + _lastCheckDynamicAt = DateTime.now().millisecondsSinceEpoch; + getUnreadDynamic(); } - hasHome = navigationBars.contains(NavigationBarType.home); - if (msgBadgeMode != DynamicBadgeMode.hidden) { - if (hasHome) { - lastCheckUnreadAt = DateTime.now().millisecondsSinceEpoch; - queryUnreadMsg(); - } + if (msgBadgeMode != .hidden) { + lastCheckUnreadAt = DateTime.now().millisecondsSinceEpoch; + queryUnreadMsg(); } } Future _msgUnread() async { - if (msgUnReadTypes.contains(MsgUnReadType.pm)) { - final res = await MsgHttp.msgUnread(); - if (res case Success(:final response)) { - return response.followUnread + - response.unfollowUnread + - response.bizMsgFollowUnread + - response.bizMsgUnfollowUnread + - response.unfollowPushMsg + - response.customUnread; - } + final res = await MsgHttp.msgUnread(); + if (res case Success(:final response)) { + return response.followUnread + + response.unfollowUnread + + response.bizMsgFollowUnread + + response.bizMsgUnfollowUnread + + response.unfollowPushMsg + + response.customUnread; } return 0; } Future _msgFeedUnread() async { int count = 0; - final remainTypes = Set.from(msgUnReadTypes) - ..remove(MsgUnReadType.pm); - if (remainTypes.isNotEmpty) { - final res = await MsgHttp.msgFeedUnread(); - if (res case Success(:final response)) { - for (final item in remainTypes) { - switch (item) { - case MsgUnReadType.pm: - break; - case MsgUnReadType.reply: - count += response.reply; - break; - case MsgUnReadType.at: - count += response.at; - break; - case MsgUnReadType.like: - count += response.like; - break; - case MsgUnReadType.sysMsg: - count += response.sysMsg; - break; - } + final res = await MsgHttp.msgFeedUnread(); + if (res case Success(:final response)) { + for (final item in msgUnReadTypes) { + switch (item) { + case .pm: + continue; + case .reply: + count += response.reply; + case .at: + count += response.at; + case .like: + count += response.like; + break; + case .sysMsg: + count += response.sysMsg; } } } @@ -147,17 +98,18 @@ class MainController extends GetxController Future queryUnreadMsg([bool isChangeType = false]) async { if (!accountService.isLogin.value || - !hasHome || msgUnReadTypes.isEmpty || - msgBadgeMode == DynamicBadgeMode.hidden) { + msgBadgeMode == .hidden) { msgUnReadCount.value = ''; return; } - final res = await Future.wait([_msgUnread(), _msgFeedUnread()]); - + final hasPm = msgUnReadTypes.contains(MsgUnReadType.pm); + final res = await Future.wait([ + if (hasPm) _msgUnread(), + if (!(hasPm && msgUnReadTypes.length == 1)) _msgFeedUnread(), + ]); final count = res.sum; - final countStr = count == 0 ? '' : count > 99 @@ -173,7 +125,7 @@ class MainController extends GetxController } void getUnreadDynamic() { - if (!accountService.isLogin.value || !hasDyn) { + if (!accountService.isLogin.value) { return; } DynGrpc.dynRed().then((res) { @@ -184,74 +136,36 @@ class MainController extends GetxController } void setDynCount([int count = 0]) { - if (!hasDyn) return; dynCount.value = count; } void checkUnreadDynamic() { - if (!hasDyn || - !accountService.isLogin.value || - dynamicBadgeMode == DynamicBadgeMode.hidden || - !checkDynamic) { + if (!accountService.isLogin.value || dynamicBadgeMode == .hidden) { return; } int now = DateTime.now().millisecondsSinceEpoch; - if (now - _lastCheckDynamicAt >= dynamicPeriod) { + if (now - _lastCheckDynamicAt >= _dynamicPeriod) { _lastCheckDynamicAt = now; getUnreadDynamic(); } } - void setNavBarConfig() { - List? navBarSort = - (GStorage.setting.get(SettingBoxKey.navBarSort) as List?)?.fromCast(); - late final List navigationBars; - if (navBarSort == null || navBarSort.isEmpty) { - navigationBars = NavigationBarType.values; - } else { - navigationBars = navBarSort - .map((i) => NavigationBarType.values[i]) - .toList(); - } - this.navigationBars = navigationBars; - selectedIndex.value = Pref.defaultHomePageIndex; - } - - void checkUnread([bool shouldCheck = false]) { - if (accountService.isLogin.value && - hasHome && - msgBadgeMode != DynamicBadgeMode.hidden) { - if (shouldCheck && - navigationBars[selectedIndex.value] != NavigationBarType.home) { - return; - } + void checkUnread() { + if (accountService.isLogin.value && msgBadgeMode != .hidden) { int now = DateTime.now().millisecondsSinceEpoch; - if (now - lastCheckUnreadAt >= _period) { + if (now - lastCheckUnreadAt >= _dynamicPeriod) { lastCheckUnreadAt = now; queryUnreadMsg(); } } } - int? _mineIndex; void toMinePage() { - _mineIndex ??= navigationBars.indexOf(NavigationBarType.mine); - if (_mineIndex != -1) { - setIndex(_mineIndex!); - } else { - Get.to( - const Material( - child: ViewSafeArea( - top: true, - child: MinePage(showBackBtn: true), - ), - ), - ); - } + setIndex(NavigationBarType.mine.index); } void setIndex(int value) { - final currentNav = navigationBars[value]; + final currentNav = NavigationBarType.values[value]; if (value != selectedIndex.value) { selectedIndex.value = value; controller.jumpToPage(value); @@ -279,15 +193,8 @@ class MainController extends GetxController } } - void setSearchBar() { - if (hasHome) { - homeController.showTopBar?.value = true; - } - } - @override void onClose() { - barOffset?.close(); controller.dispose(); super.onClose(); } diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 05d8e2ebf..a6aad4fb3 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -2,15 +2,14 @@ import 'dart:io'; import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/floating_navigation_bar.dart'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/route_aware_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/pages/home/view.dart'; import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; -import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; @@ -56,10 +55,8 @@ class _MainAppState extends PopScopeState windowManager ..addListener(this) ..setPreventClose(true); - if (_mainController.showTrayIcon) { - trayManager.addListener(this); - _handleTray(); - } + trayManager.addListener(this); + _handleTray(); } else { // FlutterSmartDialog throws PiliScheme.init(); @@ -82,7 +79,7 @@ class _MainAppState extends PopScopeState addObserverMobile(this); _mainController ..checkUnreadDynamic() - ..checkUnread(_mainController.useBottomNav); + ..checkUnread(); super.didPopNext(); } @@ -97,7 +94,7 @@ class _MainAppState extends PopScopeState if (state == .resumed) { _mainController ..checkUnreadDynamic() - ..checkUnread(_mainController.useBottomNav); + ..checkUnread(); } } @@ -146,12 +143,7 @@ class _MainAppState extends PopScopeState @override void onWindowClose() { - if (_mainController.showTrayIcon && _mainController.minimizeOnExit) { - windowManager.hide(); - _onHideWindow(); - } else { - _onClose(); - } + windowManager.hide(); } Future _onClose() async { @@ -165,41 +157,11 @@ class _MainAppState extends PopScopeState } } - @override - void onWindowMinimize() { - _onHideWindow(); - } - - @override - void onWindowRestore() { - _onShowWindow(); - } - - void _onHideWindow() { - if (_mainController.pauseOnMinimize) { - if (PlPlayerController.instance case final player?) { - if (_mainController.isPlaying = player.playerStatus.isPlaying) { - player.pause(); - } - } else { - _mainController.isPlaying = false; - } - } - } - - void _onShowWindow() { - if (_mainController.pauseOnMinimize && _mainController.isPlaying) { - PlPlayerController.instance?.play(); - } - } - @override Future onTrayIconMouseDown() async { if (await windowManager.isVisible()) { - _onHideWindow(); windowManager.hide(); } else { - _onShowWindow(); windowManager.show(); } } @@ -248,151 +210,107 @@ class _MainAppState extends PopScopeState @override void onPopInvokedWithResult(bool didPop, Object? result) { - if (_mainController.directExitOnBack) { - _onBack(); + if (_mainController.selectedIndex.value != 0) { + _mainController.setIndex(0); } else { - if (_mainController.selectedIndex.value != 0) { - _mainController - ..setIndex(0) - ..barOffset?.value = 0.0 - ..showBottomBar?.value = true - ..setSearchBar(); - } else { - _onBack(); - } + _onBack(); } } Widget? get _bottomNav { - Widget? bottomNav; - if (_mainController.navigationBars.length > 1) { - if (_mainController.floatingNavBar) { - bottomNav = Obx( - () => FloatingNavigationBar( - onDestinationSelected: _mainController.setIndex, - selectedIndex: _mainController.selectedIndex.value, - destinations: _mainController.navigationBars - .map( - (e) => FloatingNavigationDestination( - label: e.label, - icon: _buildIcon(type: e), - selectedIcon: _buildIcon(type: e, selected: true), - ), - ) - .toList(), - ), - ); - } else { - bottomNav = Obx( - () => NavigationBar( - maintainBottomViewPadding: true, - onDestinationSelected: _mainController.setIndex, - selectedIndex: _mainController.selectedIndex.value, - destinations: _mainController.navigationBars - .map( - (e) => NavigationDestination( - label: e.label, - icon: _buildIcon(type: e), - selectedIcon: _buildIcon(type: e, selected: true), - ), - ) - .toList(), - ), - ); - } - - if (_mainController.hideBottomBar) { - if (_mainController.barOffset case final barOffset?) { - return Obx( - () => FractionalTranslation( - translation: Offset( - 0.0, - barOffset.value / Style.topBarHeight, - ), - child: bottomNav, - ), - ); - } - if (_mainController.showBottomBar case final showBottomBar?) { - return Obx( - () => AnimatedSlide( - curve: Curves.easeInOutCubicEmphasized, - duration: const Duration(milliseconds: 500), - offset: Offset(0, showBottomBar.value ? 0 : 1), - child: bottomNav, - ), - ); - } - } + if (_mainController.floatingNavBar) { + return Obx( + () => FloatingNavigationBar( + onDestinationSelected: _mainController.setIndex, + selectedIndex: _mainController.selectedIndex.value, + destinations: NavigationBarType.values + .map( + (e) => FloatingNavigationDestination( + label: e.label, + icon: _buildIcon(type: e), + selectedIcon: _buildIcon(type: e, selected: true), + ), + ) + .toList(), + ), + ); } - - return bottomNav; + return Obx( + () => NavigationBar( + maintainBottomViewPadding: true, + onDestinationSelected: _mainController.setIndex, + selectedIndex: _mainController.selectedIndex.value, + destinations: NavigationBarType.values + .map( + (e) => NavigationDestination( + label: e.label, + icon: _buildIcon(type: e), + selectedIcon: _buildIcon(type: e, selected: true), + ), + ) + .toList(), + ), + ); } Widget _sideBar(ThemeData theme) { - return _mainController.navigationBars.length > 1 - ? context.isTablet - ? Column( - children: [ - const SizedBox(height: 25), - userAndSearchVertical(theme), - const Spacer(flex: 2), - Expanded( - flex: 5, - child: SizedBox( - width: 130, - child: Obx( - () => NavigationDrawer( - backgroundColor: Colors.transparent, - tilePadding: const .symmetric( - vertical: 5, - horizontal: 12, - ), - indicatorShape: const RoundedRectangleBorder( - borderRadius: .all(.circular(16)), - ), - onDestinationSelected: _mainController.setIndex, - selectedIndex: _mainController.selectedIndex.value, - children: _mainController.navigationBars - .map( - (e) => NavigationDrawerDestination( - label: Text(e.label), - icon: _buildIcon(type: e), - selectedIcon: _buildIcon( - type: e, - selected: true, - ), - ), - ) - .toList(), - ), - ), + return context.isTablet + ? Column( + children: [ + const SizedBox(height: 25), + userAndSearchVertical(theme), + const Spacer(flex: 2), + Expanded( + flex: 5, + child: SizedBox( + width: 130, + child: Obx( + () => NavigationDrawer( + backgroundColor: Colors.transparent, + tilePadding: const .symmetric( + vertical: 5, + horizontal: 12, ), + indicatorShape: const RoundedRectangleBorder( + borderRadius: .all(.circular(16)), + ), + onDestinationSelected: _mainController.setIndex, + selectedIndex: _mainController.selectedIndex.value, + children: NavigationBarType.values + .map( + (e) => NavigationDrawerDestination( + label: Text(e.label), + icon: _buildIcon(type: e), + selectedIcon: _buildIcon( + type: e, + selected: true, + ), + ), + ) + .toList(), ), - ], - ) - : Obx( - () => NavigationRail( - groupAlignment: 0.5, - selectedIndex: _mainController.selectedIndex.value, - onDestinationSelected: _mainController.setIndex, - labelType: .selected, - leading: userAndSearchVertical(theme), - destinations: _mainController.navigationBars - .map( - (e) => NavigationRailDestination( - label: Text(e.label), - icon: _buildIcon(type: e), - selectedIcon: _buildIcon(type: e, selected: true), - ), - ) - .toList(), ), - ) - : Container( - width: 80, - padding: const .only(top: 10), - child: userAndSearchVertical(theme), + ), + ), + ], + ) + : Obx( + () => NavigationRail( + groupAlignment: 0.5, + selectedIndex: _mainController.selectedIndex.value, + onDestinationSelected: _mainController.setIndex, + labelType: .selected, + leading: userAndSearchVertical(theme), + destinations: NavigationBarType.values + .map( + (e) => NavigationRailDestination( + label: Text(e.label), + icon: _buildIcon(type: e), + selectedIcon: _buildIcon(type: e, selected: true), + ), + ) + .toList(), + ), ); } @@ -401,7 +319,7 @@ class _MainAppState extends PopScopeState Widget child = PageView( physics: const NeverScrollableScrollPhysics(), controller: _mainController.controller, - children: _mainController.navigationBars.map((i) => i.page).toList(), + children: NavigationBarType.values.map((i) => i.page).toList(), ); Widget? bottomNav; @@ -422,18 +340,36 @@ class _MainAppState extends PopScopeState ); } - child = Scaffold( - extendBody: true, - resizeToAvoidBottomInset: false, - appBar: AppBar(toolbarHeight: 0), - body: Padding( - padding: .only( - left: _mainController.useBottomNav ? _padding.left : 0.0, - right: _padding.right, - ), - child: child, + child = Padding( + padding: .only( + left: _mainController.useBottomNav ? _padding.left : 0.0, + right: _padding.right, ), - bottomNavigationBar: bottomNav, + child: child, + ); + + child = scaffold( + appBar: AppBar(toolbarHeight: 0), + body: _mainController.floatingNavBar + ? Stack( + clipBehavior: .none, + children: [ + child, + if (bottomNav != null) + Positioned( + left: 0, + right: 0, + bottom: 0, + child: bottomNav, + ), + ], + ) + : Column( + children: [ + Expanded(child: child), + ?bottomNav, + ], + ), ); if (PlatformUtils.isMobile) { diff --git a/lib/pages/main_reply/controller.dart b/lib/pages/main_reply/controller.dart index b12ac75ce..a98658459 100644 --- a/lib/pages/main_reply/controller.dart +++ b/lib/pages/main_reply/controller.dart @@ -9,9 +9,6 @@ class MainReplyController extends ReplyController { late final int oid; late final int replyType; - @override - int get sourceId => oid; - @override void onInit() { super.onInit(); @@ -26,7 +23,7 @@ class MainReplyController extends ReplyController { Future> customGetData() => ReplyGrpc.mainList( type: replyType, oid: oid, - mode: mode.value, + mode: mode, cursorNext: cursorNext, offset: paginationReply?.nextOffset, ); diff --git a/lib/pages/main_reply/view.dart b/lib/pages/main_reply/view.dart index 0056b5c62..b819eff6a 100644 --- a/lib/pages/main_reply/view.dart +++ b/lib/pages/main_reply/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_reply.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_floating_header.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' @@ -56,58 +57,71 @@ class _MainReplyPageState extends State @override Widget build(BuildContext context) { final colorScheme = ColorScheme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('查看评论')), - body: NotificationListener( - onNotification: (notification) { - final direction = notification.direction; - if (direction == .forward) { - showFab(); - } else if (direction == .reverse) { - hideFab(); - } - return false; - }, - child: refreshIndicator( - onRefresh: _controller.onRefresh, - child: Padding( - padding: EdgeInsets.only( - left: padding.left, - right: padding.right, - ), - child: CustomScrollView( - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - buildReplyHeader(colorScheme), - Obx( - () => _buildBody(colorScheme, _controller.loadingState.value), - ), - ], - ), - ), - ).constraintWidth(), - ), - floatingActionButtonLocation: const NoBottomPaddingFabLocation(), - floatingActionButton: SlideTransition( - position: fabAnimation, - child: Padding( - padding: .only(bottom: padding.bottom + kFloatingActionButtonMargin), - child: FloatingActionButton( - heroTag: null, - onPressed: () { - try { - _controller.onReply( - null, - oid: _controller.oid, - replyType: _controller.replyType, - ); - } catch (_) {} + body: Stack( + clipBehavior: .none, + children: [ + NotificationListener( + onNotification: (notification) { + final direction = notification.direction; + if (direction == .forward) { + showFab(); + } else if (direction == .reverse) { + hideFab(); + } + return false; }, - tooltip: '评论', - child: const Icon(Icons.reply), + child: refreshIndicator( + onRefresh: _controller.onRefresh, + child: Padding( + padding: EdgeInsets.only( + left: padding.left, + right: padding.right, + ), + child: CustomScrollView( + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + buildReplyHeader(colorScheme), + Obx( + () => _buildBody( + colorScheme, + _controller.loadingState.value, + ), + ), + ], + ), + ), + ).constraintWidth(), ), - ), + Positioned( + right: 0, + bottom: 0, + child: SlideTransition( + position: fabAnimation, + child: Padding( + padding: .only( + right: kFloatingActionButtonMargin, + bottom: padding.bottom + kFloatingActionButtonMargin, + ), + child: FloatingActionButton( + heroTag: null, + onPressed: () { + try { + _controller.onReply( + null, + oid: _controller.oid, + replyType: _controller.replyType, + ); + } catch (_) {} + }, + tooltip: '评论', + child: const Icon(Icons.reply), + ), + ), + ), + ), + ], ), ); } @@ -218,8 +232,7 @@ class _MainReplyPageState extends State int oid = replyItem.oid.toInt(); int rpid = replyItem.id.toInt(); Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar( title: const Text('评论详情'), shape: Border( diff --git a/lib/pages/match_info/controller.dart b/lib/pages/match_info/controller.dart index 327220c2b..c836465ef 100644 --- a/lib/pages/match_info/controller.dart +++ b/lib/pages/match_info/controller.dart @@ -10,9 +10,6 @@ class MatchInfoController extends CommonDynController { @override final int replyType = 27; - @override - dynamic get sourceId => oid.toString(); - final Rx> infoState = LoadingState.loading().obs; diff --git a/lib/pages/match_info/view.dart b/lib/pages/match_info/view.dart index c903a4456..25ccfd4e0 100644 --- a/lib/pages/match_info/view.dart +++ b/lib/pages/match_info/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; @@ -8,8 +9,6 @@ import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/match/match_info/contest.dart'; import 'package:PiliPlus/models_new/match/match_info/team.dart'; import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; -import 'package:PiliPlus/pages/common/fab_mixin.dart' - show NoBottomPaddingFabLocation; import 'package:PiliPlus/pages/match_info/controller.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; @@ -41,27 +40,40 @@ class _MatchInfoPageState extends CommonDynPageState { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('比赛详情')), - body: ViewSafeArea( - child: refreshIndicator( - onRefresh: controller.onRefresh, - child: CustomScrollView( - controller: scrollController, - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - Obx(() => _buildInfo(theme, controller.infoState.value)), - buildReplyHeader(theme), - Obx(() => replyList(theme, controller.loadingState.value)), - ], + body: Stack( + clipBehavior: .none, + children: [ + ViewSafeArea( + child: refreshIndicator( + onRefresh: controller.onRefresh, + child: CustomScrollView( + controller: scrollController, + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + Obx(() => _buildInfo(theme, controller.infoState.value)), + buildReplyHeader(theme), + Obx(() => replyList(theme, controller.loadingState.value)), + ], + ), + ), + ).constraintWidth(), + Positioned( + right: 0, + bottom: 0, + child: SlideTransition( + position: fabAnimation, + child: Padding( + padding: .only( + right: kFloatingActionButtonMargin, + bottom: padding.bottom + kFloatingActionButtonMargin, + ), + child: replyButton, + ), + ), ), - ), - ).constraintWidth(), - floatingActionButtonLocation: const NoBottomPaddingFabLocation(), - floatingActionButton: SlideTransition( - position: fabAnimation, - child: fabButton, + ], ), ); } @@ -198,8 +210,7 @@ class _MatchInfoPageState extends CommonDynPageState { int oid = replyItem.oid.toInt(); int rpid = replyItem.id.toInt(); Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar( title: const Text('评论详情'), shape: Border( diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index 18d3c4b24..6e7a7cdc7 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -16,7 +16,6 @@ import 'package:PiliPlus/pages/common/common_data_controller.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart' show ExtendedNestedScrollViewState; import 'package:flutter/material.dart'; @@ -110,21 +109,12 @@ class MemberController extends CommonDataController tab2!.removeAt(0); } if (tab2!.isNotEmpty) { - int initialIndex = -1; - MemberTabType memberTab = Pref.memberTab; - if (memberTab != MemberTabType.def) { - initialIndex = tab2!.indexWhere((item) { - return item.param == memberTab.name; - }); - } - if (initialIndex == -1) { - if (data.defaultTab == 'video') { - data.defaultTab = 'contribute'; - } - initialIndex = tab2!.indexWhere((item) { - return item.param == data.defaultTab; - }); + if (data.defaultTab == 'video') { + data.defaultTab = 'contribute'; } + final initialIndex = tab2!.indexWhere( + (item) => item.param == data.defaultTab, + ); tabs = tab2!.map((item) => Tab(text: item.title ?? '')).toList(); tabController?.dispose(); tabController = TabController( diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 63ae22380..5359b9d34 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -32,6 +32,7 @@ import 'package:PiliPlus/pages/member_pgc/view.dart'; import 'package:PiliPlus/pages/member_shop/view.dart'; import 'package:PiliPlus/pages/member_video_web/archive/view.dart'; import 'package:PiliPlus/pages/member_video_web/season_series/view.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; @@ -303,11 +304,8 @@ class _MemberPageState extends State { recognizer: lottery.jumpUrl?.isNotEmpty == true ? (NoDeadlineTapGestureRecognizer() - ..onTap = () => Get.toNamed( - '/webview', - parameters: { - 'url': lottery.jumpUrl!, - }, + ..onTap = () => WebViewPage.toWebView( + lottery.jumpUrl!, )) : null, ), diff --git a/lib/pages/member/widget/user_info_card.dart b/lib/pages/member/widget/user_info_card.dart index 5638a166e..ff20ce376 100644 --- a/lib/pages/member/widget/user_info_card.dart +++ b/lib/pages/member/widget/user_info_card.dart @@ -595,6 +595,7 @@ class UserInfoCard extends StatelessWidget { initialPage: controller.page?.round() ?? 0, imgList: imgUrls.map((e) => SourceModel(url: e.fullCover)).toList(), onPageChanged: controller.jumpToPage, + tag: hashCode.toString(), ), child: Stack( children: [ @@ -608,7 +609,7 @@ class UserInfoCard extends StatelessWidget { itemBuilder: (context, index) { final img = imgUrls[index]; return fromHero( - tag: img.fullCover, + tag: '${img.fullCover}$hashCode', child: CachedNetworkImage( fit: .cover, alignment: Alignment(0.0, img.dy), @@ -681,9 +682,12 @@ class UserInfoCard extends StatelessWidget { final img = fullCover ?? imgUrl; return GestureDetector( behavior: .opaque, - onTap: () => PageUtils.imageView(imgList: [SourceModel(url: img)]), + onTap: () => PageUtils.imageView( + imgList: [SourceModel(url: img)], + tag: hashCode.toString(), + ), child: fromHero( - tag: img, + tag: '$img$hashCode', child: CachedNetworkImage( fit: .cover, alignment: alignment, @@ -762,7 +766,7 @@ class UserInfoCard extends StatelessWidget { ); if (prInfo.url?.isNotEmpty ?? false) { return GestureDetector( - onTap: () => PageUtils.handleWebview(prInfo.url!), + onTap: () => PiliScheme.routePushFromUrl(prInfo.url!), child: child, ); } diff --git a/lib/pages/member_coin_arc/view.dart b/lib/pages/member_coin_arc/view.dart index 43de1ecab..d7ccd5263 100644 --- a/lib/pages/member_coin_arc/view.dart +++ b/lib/pages/member_coin_arc/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/controller.dart'; @@ -42,12 +43,9 @@ class _MemberCoinArcPageState extends State { @override Widget build(BuildContext context) { final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( - title: Text( - '${widget.mid == mid ? '我' : '${widget.name}'}的最近投币', - ), + title: Text('${widget.mid == mid ? '我' : '${widget.name}'}的最近投币'), ), body: refreshIndicator( onRefresh: _ctr.onRefresh, diff --git a/lib/pages/member_comic/widgets/item.dart b/lib/pages/member_comic/widgets/item.dart index c1e456440..e22a094a8 100644 --- a/lib/pages/member_comic/widgets/item.dart +++ b/lib/pages/member_comic/widgets/item.dart @@ -3,9 +3,9 @@ import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models_new/space/space_archive/item.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart' hide LayoutBuilder; -import 'package:get/get.dart'; class MemberComicItem extends StatelessWidget { const MemberComicItem({super.key, required this.item}); @@ -21,16 +21,11 @@ class MemberComicItem extends StatelessWidget { ); void onLongPress() => imageSaveDialog(title: item.title, cover: item.cover); return Material( - type: MaterialType.transparency, + type: .transparency, child: InkWell( - onTap: () { - Get.toNamed( - '/webview', - parameters: { - 'url': 'https://manga.bilibili.com/detail/mc${item.param}', - }, - ); - }, + onTap: () => WebViewPage.toWebView( + 'https://manga.bilibili.com/detail/mc${item.param}', + ), onLongPress: onLongPress, onSecondaryTap: PlatformUtils.isMobile ? null : onLongPress, child: Padding( diff --git a/lib/pages/member_dynamics/view.dart b/lib/pages/member_dynamics/view.dart index a24619ddd..1a5e09538 100644 --- a/lib/pages/member_dynamics/view.dart +++ b/lib/pages/member_dynamics/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/pages/dynamics/widgets/dynamic_panel.dart'; @@ -45,8 +46,7 @@ class _MemberDynamicsPageState extends State super.build(context); final padding = MediaQuery.viewPaddingOf(context); return widget.mid == null - ? Scaffold( - resizeToAvoidBottomInset: false, + ? scaffold( appBar: AppBar(title: const Text('我的动态')), body: Padding( padding: EdgeInsets.only( diff --git a/lib/pages/member_guard/view.dart b/lib/pages/member_guard/view.dart index f3c49db11..9d415f659 100644 --- a/lib/pages/member_guard/view.dart +++ b/lib/pages/member_guard/view.dart @@ -3,6 +3,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member_guard/guard_top_list.dart'; @@ -53,8 +54,7 @@ class _MemberGuardState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text('$_userName的舰队${_count == null ? '' : '($_count)'}'), ), diff --git a/lib/pages/member_like_arc/view.dart b/lib/pages/member_like_arc/view.dart index 48ae86c2c..d5752be6b 100644 --- a/lib/pages/member_like_arc/view.dart +++ b/lib/pages/member_like_arc/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/video_card_v.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/member/coin_like_arc/item.dart'; import 'package:PiliPlus/pages/member_coin_arc/widgets/item.dart'; @@ -42,8 +43,7 @@ class _MemberLikeArcPageState extends State { @override Widget build(BuildContext context) { final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text( '${widget.mid == mid ? '我' : '${widget.name}'}的推荐', diff --git a/lib/pages/member_profile/view.dart b/lib/pages/member_profile/view.dart index d8d8282e9..88967bf30 100644 --- a/lib/pages/member_profile/view.dart +++ b/lib/pages/member_profile/view.dart @@ -3,6 +3,7 @@ import 'dart:io' show File; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -10,13 +11,13 @@ import 'package:PiliPlus/models/common/member/profile_type.dart'; import 'package:PiliPlus/models/user/info.dart'; import 'package:PiliPlus/models_new/account_myinfo/data.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/services/account_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/app_sign.dart'; import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/file_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -61,8 +62,7 @@ class _EditProfilePageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('账号资料')), body: _buildBody(theme, _loadingState), ); @@ -129,7 +129,7 @@ class _EditProfilePageState extends State { return switch (loadingState) { Loading() => m3eLoading, Success(:final response) => ListView( - padding: EdgeInsets.only( + padding: .only( bottom: MediaQuery.viewPaddingOf(context).bottom + 25, ), children: [ @@ -216,7 +216,7 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '头像挂件', - onTap: () => PageUtils.inAppWebview( + onTap: () => WebViewPage.toWebView( 'https://www.bilibili.com/h5/mall/pendant/home', ), ), @@ -232,7 +232,7 @@ class _EditProfilePageState extends State { _item( theme: theme, title: '哔哩哔哩认证', - onTap: () => PageUtils.inAppWebview( + onTap: () => WebViewPage.toWebView( 'https://account.bilibili.com/official/mobile/home', ), ), diff --git a/lib/pages/member_search/view.dart b/lib/pages/member_search/view.dart index c3467e4c4..f8ce78ef9 100644 --- a/lib/pages/member_search/view.dart +++ b/lib/pages/member_search/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/models/common/member/search_type.dart'; @@ -22,8 +23,7 @@ class _MemberSearchPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( actions: [ IconButton( diff --git a/lib/pages/member_season_series/view.dart b/lib/pages/member_season_series/view.dart index 9e3439fae..9c87fd138 100644 --- a/lib/pages/member_season_series/view.dart +++ b/lib/pages/member_season_series/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/member/contribute_type.dart'; @@ -78,8 +79,7 @@ class _SeasonSeriesPageState extends State ? item.meta!.seasonId : item.meta!.seriesId; Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar(title: Text(item.meta!.name!)), body: ViewSafeArea( child: MemberVideo( diff --git a/lib/pages/member_shop/view.dart b/lib/pages/member_shop/view.dart index 8d8120f93..488600b5a 100644 --- a/lib/pages/member_shop/view.dart +++ b/lib/pages/member_shop/view.dart @@ -6,6 +6,7 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; import 'package:PiliPlus/pages/member_shop/controller.dart'; import 'package:PiliPlus/pages/member_shop/widgets/item.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/waterfall.dart'; import 'package:flutter/material.dart'; @@ -109,10 +110,7 @@ class _MemberShopState extends State clickUrl, ).queryParameters['url']; if (url case final url?) { - Get.toNamed( - '/webview', - parameters: {'url': url}, - ); + WebViewPage.toWebView(url); } } }, diff --git a/lib/pages/member_shop/widgets/item.dart b/lib/pages/member_shop/widgets/item.dart index b386653e2..1ff212de2 100644 --- a/lib/pages/member_shop/widgets/item.dart +++ b/lib/pages/member_shop/widgets/item.dart @@ -3,9 +3,9 @@ import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models_new/space/space_shop/item.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:flutter/material.dart' hide LayoutBuilder; -import 'package:get/get.dart'; class MemberShopItem extends StatelessWidget { const MemberShopItem({ @@ -27,7 +27,7 @@ class MemberShopItem extends StatelessWidget { child: InkWell( onTap: () { if (item.cardUrl case final cardUrl?) { - Get.toNamed('/webview', parameters: {'url': cardUrl}); + WebViewPage.toWebView(cardUrl); } }, child: Column( diff --git a/lib/pages/member_upower_rank/view.dart b/lib/pages/member_upower_rank/view.dart index a10f2e2fd..3b89a34ef 100644 --- a/lib/pages/member_upower_rank/view.dart +++ b/lib/pages/member_upower_rank/view.dart @@ -4,11 +4,13 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/upower_rank/rank_info.dart'; import 'package:PiliPlus/pages/member_upower_rank/controller.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/widget_ext.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; @@ -86,18 +88,13 @@ class _UpowerRankPageState extends State ), ); if (widget.privilegeType == null) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text('$_name的充电排行榜${_count == null ? '' : '($_count)'}'), actions: [ TextButton( - onPressed: () => Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://member.bilibili.com/mall/upower-pay?mid=$_upMid&oid=$_upMid', - }, + onPressed: () => WebViewPage.toWebView( + 'https://member.bilibili.com/mall/upower-pay?mid=$_upMid&oid=$_upMid', ), style: TextButton.styleFrom(visualDensity: VisualDensity.compact), child: const Text('充电'), diff --git a/lib/pages/member_video_web/base/view.dart b/lib/pages/member_video_web/base/view.dart index 24552e1ae..0469e2d6e 100644 --- a/lib/pages/member_video_web/base/view.dart +++ b/lib/pages/member_video_web/base/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; @@ -39,8 +40,7 @@ abstract class BaseVideoWebState< @override Widget build(BuildContext context) { final colorScheme = ColorScheme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text(name), actions: [ diff --git a/lib/pages/mine/view.dart b/lib/pages/mine/view.dart index 38169fdea..a310bbb44 100644 --- a/lib/pages/mine/view.dart +++ b/lib/pages/mine/view.dart @@ -6,12 +6,8 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/models_new/fav/fav_folder/list.dart'; -import 'package:PiliPlus/pages/common/common_page.dart'; -import 'package:PiliPlus/pages/home/view.dart'; import 'package:PiliPlus/pages/login/controller.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/mine/controller.dart'; import 'package:PiliPlus/pages/mine/widgets/item.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; @@ -19,49 +15,25 @@ import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class MinePage extends StatefulWidget { - const MinePage({super.key, this.showBackBtn = false}); - - final bool showBackBtn; + const MinePage({super.key}); @override State createState() => _MediaPageState(); } -class _MediaPageState extends CommonPageState +class _MediaPageState extends State with AutomaticKeepAliveClientMixin { final MineController controller = Get.putOrFind(MineController.new); - late final MainController _mainController = Get.find(); @override bool get wantKeepAlive => true; - bool get checkPage => - _mainController.navigationBars[0] != NavigationBarType.mine && - _mainController.selectedIndex.value == 0; - - @override - bool onNotificationType1(UserScrollNotification notification) { - if (checkPage) { - return false; - } - return super.onNotificationType1(notification); - } - - @override - bool onNotificationType2(ScrollNotification notification) { - if (checkPage) { - return false; - } - return super.onNotificationType2(notification); - } - @override Widget build(BuildContext context) { super.build(context); @@ -78,20 +50,18 @@ class _MediaPageState extends CommonPageState type: .transparency, child: refreshIndicator( onRefresh: controller.onRefresh, - child: onBuild( - ListView( - padding: const .only(bottom: 100), - physics: const AlwaysScrollableScrollPhysics(), - children: [ - _buildUserInfo(theme, secondary), - _buildActions(secondary), - Obx( - () => controller.loadingState.value is Loading - ? const SizedBox.shrink() - : _buildFav(theme, secondary), - ), - ], - ), + child: ListView( + padding: const .only(bottom: 100), + physics: const AlwaysScrollableScrollPhysics(), + children: [ + _buildUserInfo(theme, secondary), + _buildActions(secondary), + Obx( + () => controller.loadingState.value is Loading + ? const SizedBox.shrink() + : _buildFav(theme, secondary), + ), + ], ), ), ), @@ -142,36 +112,6 @@ class _MediaPageState extends CommonPageState spacing: 5, mainAxisAlignment: .end, children: [ - if (widget.showBackBtn) - const Expanded( - child: Align( - alignment: Alignment.centerLeft, - child: Padding( - padding: EdgeInsets.only(left: 8), - child: BackButton(), - ), - ), - ), - if (!_mainController.hasHome) ...[ - IconButton( - iconSize: iconSize, - padding: padding, - style: style, - tooltip: '搜索', - onPressed: () => Get.toNamed('/search'), - icon: const Icon(Icons.search), - ), - msgBadge(_mainController), - ], - if (GStorage.reply != null) - IconButton( - iconSize: iconSize, - padding: padding, - style: style, - tooltip: '评论记录', - onPressed: () => Get.toNamed('/myReply'), - icon: const Icon(Icons.message_outlined), - ), Obx( () { final anonymity = MineController.anonymity.value; diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index 554888ee6..d66b66836 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; @@ -30,8 +31,7 @@ class _AtMePageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('@我的'), actions: [ diff --git a/lib/pages/msg_feed_top/like_detail/view.dart b/lib/pages/msg_feed_top/like_detail/view.dart index c4f55fc2a..591dcd6a0 100644 --- a/lib/pages/msg_feed_top/like_detail/view.dart +++ b/lib/pages/msg_feed_top/like_detail/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/skeleton/msg_feed_top.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models_new/msg/msg_like_detail/card.dart'; @@ -29,8 +30,7 @@ class _LikeDetailPageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('点赞详情')), body: refreshIndicator( onRefresh: _controller.onRefresh, diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index c5164002c..e72285e09 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; @@ -27,12 +28,18 @@ class LikeMePage extends StatefulWidget { class _LikeMePageState extends State { final LikeMeController _likeMeController = Get.put(LikeMeController()); + late EdgeInsets padding; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + padding = MediaQuery.viewPaddingOf(context); + } @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('收到的赞'), actions: [ @@ -57,9 +64,7 @@ class _LikeMePageState extends State { physics: const AlwaysScrollableScrollPhysics(), slivers: [ SliverPadding( - padding: EdgeInsets.only( - bottom: MediaQuery.viewPaddingOf(context).bottom + 100, - ), + padding: .only(bottom: padding.bottom + 100), sliver: Obx( () => _buildBody(theme, _likeMeController.loadingState.value), ), @@ -142,17 +147,13 @@ class _LikeMePageState extends State { } Widget _buildHeader(ThemeData theme, String title) { - return SliverSafeArea( - top: false, - bottom: false, - sliver: SliverToBoxAdapter( - child: Padding( - padding: const EdgeInsets.only(left: 16), - child: Text( - title, - style: theme.textTheme.labelLarge!.copyWith( - color: theme.colorScheme.secondary, - ), + return SliverToBoxAdapter( + child: Padding( + padding: EdgeInsets.only(left: padding.left + 16, right: padding.right), + child: Text( + title, + style: theme.textTheme.labelLarge!.copyWith( + color: theme.colorScheme.secondary, ), ), ), diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index ed941d6db..d7be6622b 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pbenum.dart' show IMSettingType; import 'package:PiliPlus/http/loading_state.dart'; @@ -30,8 +31,7 @@ class _ReplyMePageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('回复我的'), actions: [ diff --git a/lib/pages/msg_feed_top/sys_msg/view.dart b/lib/pages/msg_feed_top/sys_msg/view.dart index e33e34a42..64fd00815 100644 --- a/lib/pages/msg_feed_top/sys_msg/view.dart +++ b/lib/pages/msg_feed_top/sys_msg/view.dart @@ -4,6 +4,8 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; +import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/msg/msg_sys/data.dart'; import 'package:PiliPlus/pages/msg_feed_top/sys_msg/controller.dart'; @@ -32,8 +34,7 @@ class _SysMsgPageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('系统通知')), body: refreshIndicator( onRefresh: _sysMsgController.onRefresh, @@ -65,7 +66,7 @@ class _SysMsgPageState extends State { color: Colors.grey.withValues(alpha: 0.1), ); return switch (loadingState) { - Loading() => SliverSafeArea( + Loading() => ViewSliverSafeArea( sliver: SliverList.builder( itemCount: 12, itemBuilder: (context, index) => const MsgFeedSysMsgSkeleton(), diff --git a/lib/pages/music/controller.dart b/lib/pages/music/controller.dart index ac95011e9..a2568387d 100644 --- a/lib/pages/music/controller.dart +++ b/lib/pages/music/controller.dart @@ -10,9 +10,6 @@ class MusicDetailController extends CommonDynController { @override late final int replyType; - @override - dynamic get sourceId => oid.toString(); - final infoState = LoadingState.loading().obs; late final String musicId; diff --git a/lib/pages/music/view.dart b/lib/pages/music/view.dart index d41674f04..4521edf2e 100644 --- a/lib/pages/music/view.dart +++ b/lib/pages/music/view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image_viewer/hero.dart'; import 'package:PiliPlus/common/widgets/marquee.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/music.dart'; import 'package:PiliPlus/models/common/badge_type.dart'; @@ -17,7 +18,6 @@ import 'package:PiliPlus/pages/common/dyn/common_dyn_page.dart'; import 'package:PiliPlus/pages/music/controller.dart'; import 'package:PiliPlus/pages/music/video/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; @@ -27,7 +27,6 @@ import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -53,8 +52,7 @@ class _MusicDetailPageState extends CommonDynPageState { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: _buildAppBar(), body: Padding( padding: EdgeInsets.only(left: padding.left, right: padding.right), @@ -101,10 +99,7 @@ class _MusicDetailPageState extends CommonDynPageState { ), actions: isPortrait ? null - : [ - ratioWidget(maxWidth), - const SizedBox(width: 16), - ], + : [ratioWidget(maxWidth), const SizedBox(width: 16)], ); Widget _buildBody(ThemeData theme) => Obx(() { @@ -122,9 +117,6 @@ class _MusicDetailPageState extends CommonDynPageState { SliverToBoxAdapter( child: _buildCard(theme, response, maxWidth), ), - SliverToBoxAdapter( - child: _buildChart(theme, response, maxWidth), - ), buildReplyHeader(theme), Obx(() => replyList(theme, controller.loadingState.value)), ], @@ -153,15 +145,6 @@ class _MusicDetailPageState extends CommonDynPageState { child: _buildCard(theme, response, leftWidth), ), ), - SliverPadding( - padding: EdgeInsets.only( - left: padding, - bottom: this.padding.bottom + 100, - ), - sliver: SliverToBoxAdapter( - child: _buildChart(theme, response, leftWidth), - ), - ), ], ), ), @@ -205,17 +188,6 @@ class _MusicDetailPageState extends CommonDynPageState { }); Widget _buildBottom(ThemeData theme, MusicDetail item) { - if (!controller.showDynActionBar) { - return Positioned( - right: kFloatingActionButtonMargin, - bottom: 0, - child: SlideTransition( - position: fabAnimation, - child: fabButton, - ), - ); - } - final primary = theme.colorScheme.primary; final outline = theme.colorScheme.outline; final style = TextButton.styleFrom( @@ -589,108 +561,6 @@ class _MusicDetailPageState extends CommonDynPageState { ); } - Widget? _buildChart(ThemeData theme, MusicDetail item, double maxWidth) { - final heat = item.hotSongHeat?.songHeat; - if (heat == null || heat.isEmpty) return null; - final colorScheme = theme.colorScheme; - int maxHeat = heat.first.heat; - int minHeat = heat.first.heat; - for (int i = 1; i < heat.length; i++) { - final h = heat[i].heat; - if (h > maxHeat) maxHeat = h; - if (h < minHeat) minHeat = h; - } - return Padding( - padding: const EdgeInsets.only(top: 8), - child: Column( - spacing: 8, - children: [ - Text('近${heat.length}日热度趋势', style: theme.textTheme.titleMedium), - SizedBox( - width: maxWidth, - height: maxWidth * 0.5, - child: Padding( - padding: const EdgeInsetsGeometry.only(top: 4, right: 22), - child: LineChart( - LineChartData( - lineTouchData: const LineTouchData(enabled: false), - titlesData: FlTitlesData( - show: true, - rightTitles: const AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - topTitles: const AxisTitles( - sideTitles: SideTitles(showTitles: false), - ), - leftTitles: const AxisTitles( - sideTitles: SideTitles( - reservedSize: 55, - showTitles: true, - ), - ), - bottomTitles: AxisTitles( - sideTitles: SideTitles( - showTitles: true, - reservedSize: 30 * sqrt2, - getTitlesWidget: (index, meta) { - return SideTitleWidget( - angle: -pi / 4, - space: 8 * sqrt2, - meta: meta, - child: Text( - DateFormatUtils.shortFormat.format( - DateTime.fromMillisecondsSinceEpoch( - heat[index.toInt()].date * 1000, - ), - ), - ), - ); - }, - ), - ), - ), - borderData: FlBorderData( - show: true, - border: Border.all(color: colorScheme.onSurface), - ), - minX: 0, - maxX: (heat.length - 1).toDouble(), - minY: minHeat.toDouble(), - maxY: maxHeat.toDouble(), - lineBarsData: [ - LineChartBarData( - spots: List.generate( - heat.length, - (index) => FlSpot( - index.toDouble(), - heat[index].heat.toDouble(), - ), - ), - color: colorScheme.primary, - barWidth: 1, - dotData: const FlDotData(show: false), - belowBarData: BarAreaData( - show: true, - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - colorScheme.primary.withValues(alpha: 0.5), - colorScheme.onPrimary.withValues(alpha: 0.5), - ], - ), - ), - ), - ], - ), - ), - ), - ), - ], - ), - ); - } - Future _searchMusic(MusicDetail item) async { final res = Platform.isAndroid && diff --git a/lib/pages/my_reply/view.dart b/lib/pages/my_reply/view.dart deleted file mode 100644 index a10553dc7..000000000 --- a/lib/pages/my_reply/view.dart +++ /dev/null @@ -1,230 +0,0 @@ -import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; -import 'package:PiliPlus/common/widgets/dialog/export_import.dart'; -import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; -import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; -import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' - show ReplyInfo; -import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; -import 'package:PiliPlus/utils/app_scheme.dart'; -import 'package:PiliPlus/utils/id_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/reply_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/utils.dart'; -import 'package:PiliPlus/utils/waterfall.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; -import 'package:flutter/material.dart'; -import 'package:get/get_core/src/get_main.dart'; -import 'package:get/get_navigation/src/extension_navigation.dart'; -import 'package:get/get_rx/get_rx.dart'; -import 'package:waterfall_flow/waterfall_flow.dart'; - -class MyReply extends StatefulWidget { - const MyReply({super.key}); - - @override - State createState() => _MyReplyState(); -} - -class _MyReplyState extends State with DynMixin { - final List _replies = []; - - @override - void initState() { - super.initState(); - _initReply(); - } - - void _initReply() { - _replies - ..assignAll(GStorage.reply!.values.map(ReplyInfo.fromBuffer)) - ..sort((a, b) => b.ctime.compareTo(a.ctime)); // rpid not aligned; - } - - @override - Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: const Text('我的评论'), - actions: [ - if (kDebugMode) - IconButton( - tooltip: 'Clear', - onPressed: () => showConfirmDialog( - context: context, - title: const Text('Clear Local Storage?'), - onConfirm: () { - GStorage.reply!.clear(); - _replies.clear(); - setState(() {}); - }, - ), - icon: const Icon(Icons.clear_all), - ), - IconButton( - tooltip: '导出', - onPressed: _showExportDialog, - icon: const Icon(Icons.file_upload_outlined), - ), - IconButton( - tooltip: '导入', - onPressed: _showImportDialog, - icon: const Icon(Icons.file_download_outlined), - ), - const SizedBox(width: 6), - ], - ), - body: CustomScrollView( - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - _replies.isNotEmpty - ? ViewSliverSafeArea( - sliver: SliverWaterfallFlow( - gridDelegate: dynGridDelegate, - delegate: SliverChildBuilderDelegate( - childCount: _replies.length, - (context, index) => ReplyItemGrpc( - replyLevel: 0, - needDivider: false, - replyItem: _replies[index], - replyReply: _replyReply, - onDelete: (_, _) => _onDelete(index), - onCheckReply: _onCheckReply, - ), - ), - ), - ) - : const HttpError(), - ], - ), - ); - } - - void _replyReply(ReplyInfo replyInfo, int? rpid) { - switch (replyInfo.type.toInt()) { - case 1: - PiliScheme.videoPush( - replyInfo.oid.toInt(), - null, - ); - case 12: - PageUtils.toDupNamed( - '/articlePage', - parameters: { - 'id': replyInfo.oid.toString(), - 'type': 'read', - }, - ); - case _: - PageUtils.pushDynFromId( - rid: replyInfo.oid.toString(), - type: replyInfo.type, - ); - } - } - - void _onDelete(int index) { - _replies.removeAt(index); - setState(() {}); - } - - void _onCheckReply(ReplyInfo replyInfo) { - final oid = replyInfo.oid.toInt(); - ReplyUtils.onCheckReply( - replyInfo: replyInfo, - biliSendCommAntifraud: Pref.biliSendCommAntifraud, - sourceId: switch (oid) { - 1 => IdUtils.av2bv(oid), - _ => oid.toString(), - }, - isManual: true, - ); - } - - String _onExport() { - return Utils.jsonEncoder.convert( - _replies.map((e) => e.toProto3Json()).toList(), - ); - } - - void _showExportDialog() { - const style = TextStyle(fontSize: 14); - showDialog( - context: context, - builder: (context) => SimpleDialog( - clipBehavior: .hardEdge, - contentPadding: const .symmetric(vertical: 12), - children: [ - ListTile( - dense: true, - title: const Text('导出至剪贴板', style: style), - onTap: () { - Get.back(); - exportToClipBoard(onExport: _onExport); - }, - ), - ListTile( - dense: true, - title: const Text('导出文件至本地', style: style), - onTap: () { - Get.back(); - exportToLocalFile( - onExport: _onExport, - localFileName: () => 'reply', - ); - }, - ), - ], - ), - ); - } - - Future _onImport(List list) async { - await GStorage.reply!.putAll({ - for (var e in list) - e['id'].toString(): (ReplyInfo.create()..mergeFromProto3Json(e)) - .writeToBuffer(), - }); - if (mounted) { - _initReply(); - setState(() {}); - } - } - - void _showImportDialog() { - const style = TextStyle(fontSize: 14); - showDialog( - context: context, - builder: (context) => SimpleDialog( - clipBehavior: .hardEdge, - contentPadding: const .symmetric(vertical: 12), - children: [ - ListTile( - dense: true, - title: const Text('从剪贴板导入', style: style), - onTap: () { - Get.back(); - importFromClipBoard>( - context, - title: '评论', - onExport: _onExport, - onImport: _onImport, - showConfirmDialog: false, - ); - }, - ), - ListTile( - dense: true, - title: const Text('从本地文件导入', style: style), - onTap: () { - Get.back(); - importFromLocalFile>(onImport: _onImport); - }, - ), - ], - ), - ); - } -} diff --git a/lib/pages/pgc/view.dart b/lib/pages/pgc/view.dart index d56e5fc4f..d9bdec055 100644 --- a/lib/pages/pgc/view.dart +++ b/lib/pages/pgc/view.dart @@ -5,6 +5,7 @@ import 'package:PiliPlus/common/widgets/button/more_btn.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -248,8 +249,7 @@ class _PgcPageState extends State with AutomaticKeepAliveClientMixin { ]; List types = const [102, 2, 5, 3, 7]; Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar(title: const Text('索引')), body: DefaultTabController( length: types.length, diff --git a/lib/pages/pgc_index/view.dart b/lib/pages/pgc_index/view.dart index 4da07b810..4b64e70ab 100644 --- a/lib/pages/pgc_index/view.dart +++ b/lib/pages/pgc_index/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/self_sized_horizontal_list.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/pgc/pgc_index_condition/data.dart'; @@ -44,8 +45,7 @@ class _PgcIndexPageState extends State super.build(context); final theme = Theme.of(context); return widget.indexType == null - ? Scaffold( - resizeToAvoidBottomInset: false, + ? scaffold( appBar: AppBar(title: const Text('索引')), body: Obx(() => _buildBody(theme, _ctr.conditionState.value)), ) diff --git a/lib/pages/pgc_review/child/view.dart b/lib/pages/pgc_review/child/view.dart index abe13db42..4adf3c585 100644 --- a/lib/pages/pgc_review/child/view.dart +++ b/lib/pages/pgc_review/child/view.dart @@ -12,6 +12,7 @@ import 'package:PiliPlus/models/common/pgc_review_type.dart'; import 'package:PiliPlus/models_new/pgc/pgc_review/list.dart'; import 'package:PiliPlus/pages/pgc_review/child/controller.dart'; import 'package:PiliPlus/pages/pgc_review/post/view.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/bili_utils.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; @@ -174,15 +175,10 @@ class _PgcReviewChildPageState extends State '举报', style: TextStyle(fontSize: 14), ), - onTap: () => Get - ..back() - ..toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/appeal/?reviewId=${item.reviewId}&type=shortComment&mediaId=${widget.mediaId}', - }, - ), + onTap: () => WebViewPage.toWebView( + 'https://www.bilibili.com/appeal/?reviewId=${item.reviewId}&type=shortComment&mediaId=${widget.mediaId}', + getBack: true, + ), ), ], ), diff --git a/lib/pages/pgc_review/view.dart b/lib/pages/pgc_review/view.dart index 3d23873d2..7bea6a189 100644 --- a/lib/pages/pgc_review/view.dart +++ b/lib/pages/pgc_review/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/models/common/pgc_review_type.dart'; import 'package:PiliPlus/pages/pgc_review/child/controller.dart'; import 'package:PiliPlus/pages/pgc_review/child/view.dart'; import 'package:PiliPlus/pages/pgc_review/post/view.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:flutter/material.dart'; @@ -148,15 +149,10 @@ class _PgcReviewPageState extends State '写长评', style: TextStyle(fontSize: 14), ), - onTap: () => Get - ..back() - ..toNamed( - '/webview', - parameters: { - 'url': - 'https://member.bilibili.com/article-text/mobile?theme=${theme.isDark ? 1 : 0}&media_id=${widget.mediaId}', - }, - ), + onTap: () => WebViewPage.toWebView( + 'https://member.bilibili.com/article-text/mobile?theme=${theme.isDark ? 1 : 0}&media_id=${widget.mediaId}', + getBack: true, + ), ), ], ), diff --git a/lib/pages/popular_precious/view.dart b/lib/pages/popular_precious/view.dart index 9ae434881..ad61bb5bc 100644 --- a/lib/pages/popular_precious/view.dart +++ b/lib/pages/popular_precious/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; @@ -24,8 +25,7 @@ class _PopularPreciousPageState extends State @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('入站必刷')), body: refreshIndicator( onRefresh: _controller.onRefresh, diff --git a/lib/pages/popular_series/view.dart b/lib/pages/popular_series/view.dart index 937e9aa1b..e7db49798 100644 --- a/lib/pages/popular_series/view.dart +++ b/lib/pages/popular_series/view.dart @@ -2,6 +2,7 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_floating_header.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_h.dart'; @@ -28,8 +29,7 @@ class _PopularSeriesPageState extends State with GridMixin { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Obx(() { final config = _controller.config.value; diff --git a/lib/pages/rcmd/controller.dart b/lib/pages/rcmd/controller.dart index 061e6d69c..32b35e3ab 100644 --- a/lib/pages/rcmd/controller.dart +++ b/lib/pages/rcmd/controller.dart @@ -1,14 +1,15 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/home/rcmd/result.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; - -class RcmdController extends CommonListController { - late bool enableSaveLastData = Pref.enableSaveLastData; - final bool appRcmd = Pref.appRcmd; +class RcmdController + extends + CommonListController< + List, + RcmdVideoItemAppModel + > { int? lastRefreshAt; - late bool savedRcmdTip = Pref.savedRcmdTip; @override void onInit() { @@ -18,20 +19,15 @@ class RcmdController extends CommonListController { } @override - Future customGetData() { - return appRcmd - ? VideoHttp.rcmdVideoListApp(freshIdx: page) - : VideoHttp.rcmdVideoList(freshIdx: page, ps: 20); - } + Future>> customGetData() => + VideoHttp.rcmdVideoListApp(freshIdx: page); @override - void handleListResponse(List dataList) { - if (enableSaveLastData && page == 0) { + void handleListResponse(List dataList) { + if (page == 0) { if (loadingState.value case Success(:final response)) { if (response != null && response.isNotEmpty) { - if (savedRcmdTip) { - lastRefreshAt = dataList.length; - } + lastRefreshAt = dataList.length; if (response.length > 200) { dataList.addAll(response.take(50)); } else { diff --git a/lib/pages/rcmd/view.dart b/lib/pages/rcmd/view.dart index cae5cd4b1..a31633691 100644 --- a/lib/pages/rcmd/view.dart +++ b/lib/pages/rcmd/view.dart @@ -4,6 +4,7 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; import 'package:PiliPlus/common/widgets/video_card/video_card_v.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/models/home/rcmd/result.dart'; import 'package:PiliPlus/pages/rcmd/controller.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -60,7 +61,7 @@ class _RcmdPageState extends State Widget _buildBody( ColorScheme colorScheme, - LoadingState?> loadingState, + LoadingState?> loadingState, ) { return switch (loadingState) { Loading() => _buildSkeleton, diff --git a/lib/pages/search/controller.dart b/lib/pages/search/controller.dart index 729e445c7..577456922 100644 --- a/lib/pages/search/controller.dart +++ b/lib/pages/search/controller.dart @@ -4,14 +4,12 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/models/search/suggest.dart'; -import 'package:PiliPlus/models_new/search/search_rcmd/data.dart'; import 'package:PiliPlus/models_new/search/search_trending/data.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:get/get.dart'; @@ -59,19 +57,12 @@ class BaseSearchController extends GetxController { late final Rx> trendingState; - final recordSearchHistory = Pref.recordSearchHistory.obs; - final searchSuggestion = Pref.searchSuggestion; - final enableTrending = Pref.enableTrending; - final enableSearchRcmd = Pref.enableSearchRcmd; - @override void onInit() { super.onInit(); - if (enableTrending) { - trendingState = LoadingState.loading().obs; - queryTrendingList(); - } + trendingState = LoadingState.loading().obs; + queryTrendingList(); } // 获取热搜关键词 @@ -97,22 +88,15 @@ class SSearchController extends GetxController final RxBool showUidBtn = false.obs; // history - RxBool get recordSearchHistory => _baseCtr.recordSearchHistory; RxList get historyList => _baseCtr.historyList; // suggestion - bool get searchSuggestion => _baseCtr.searchSuggestion; late final RxList searchSuggestList; // trending - bool get enableTrending => _baseCtr.enableTrending; Rx> get trendingState => _baseCtr.trendingState; - // rcmd - bool get enableSearchRcmd => _baseCtr.enableSearchRcmd; - late final Rx> recommendData; - Future Function() get queryTrendingList => _baseCtr.queryTrendingList; @override @@ -125,15 +109,8 @@ class SSearchController extends GetxController controller.text = text; } - if (searchSuggestion) { - subInit(); - searchSuggestList = [].obs; - } - - if (enableSearchRcmd) { - recommendData = LoadingState.loading().obs; - queryRecommendList(); - } + subInit(); + searchSuggestList = [].obs; } void validateUid() { @@ -142,19 +119,17 @@ class SSearchController extends GetxController void onChange(String value) { validateUid(); - if (searchSuggestion) { - if (value.isEmpty) { - searchSuggestList.clear(); - } else { - ctr!.add(value); - } + if (value.isEmpty) { + searchSuggestList.clear(); + } else { + ctr!.add(value); } } void onClear() { if (controller.value.text != '') { controller.clear(); - if (searchSuggestion) searchSuggestList.clear(); + searchSuggestList.clear(); searchFocusNode.requestFocus(); showUidBtn.value = false; } else { @@ -172,12 +147,10 @@ class SSearchController extends GetxController validateUid(); } - if (recordSearchHistory.value) { - historyList - ..remove(controller.text) - ..insert(0, controller.text); - GStorage.historyWord.put('cacheList', historyList); - } + historyList + ..remove(controller.text) + ..insert(0, controller.text); + GStorage.historyWord.put('cacheList', historyList); searchFocusNode.unfocus(); await Get.toNamed( @@ -201,15 +174,11 @@ class SSearchController extends GetxController } } - Future queryRecommendList() async { - recommendData.value = await SearchHttp.searchRecommend(); - } - void onClickKeyword(String keyword) { controller.text = keyword; validateUid(); - if (searchSuggestion) searchSuggestList.clear(); + searchSuggestList.clear(); submit(); } diff --git a/lib/pages/search/view.dart b/lib/pages/search/view.dart index 7f7500dee..d641a81b3 100644 --- a/lib/pages/search/view.dart +++ b/lib/pages/search/view.dart @@ -1,8 +1,5 @@ -import 'dart:convert'; - -import 'package:PiliPlus/common/widgets/dialog/export_import.dart'; -import 'package:PiliPlus/common/widgets/disabled_icon.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/sliver_wrap.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/search/search_rcmd/data.dart'; @@ -11,8 +8,6 @@ import 'package:PiliPlus/pages/search/widgets/hot_keyword.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/utils/em.dart' show Em; import 'package:PiliPlus/utils/extension/size_ext.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide LayoutBuilder; import 'package:get/get.dart'; @@ -50,34 +45,21 @@ class _SearchPageState extends State { @override Widget build(BuildContext context) { - final trending = _searchController.enableTrending - ? _buildHotSearch() - : null; - final rcmd = _searchController.enableSearchRcmd - ? _buildHotSearch(isTrending: false) - : null; - - return Scaffold( + final trending = _buildHotSearch(); + return scaffold( appBar: _buildAppBar, body: Padding( padding: .only(left: padding.left, right: padding.right), child: CustomScrollView( slivers: [ - if (_searchController.searchSuggestion) _buildSearchSuggest(), + _buildSearchSuggest(), if (isPortrait) ...[ - ?trending, + trending, _buildHistory, - ?rcmd, - ] else if (_searchController.enableTrending || - _searchController.enableSearchRcmd) + ] else SliverCrossAxisGroup( - slivers: [ - SliverMainAxisGroup(slivers: [?trending, ?rcmd]), - _buildHistory, - ], - ) - else - _buildHistory, + slivers: [trending, _buildHistory], + ), SliverPadding(padding: .only(bottom: padding.bottom)), ], ), @@ -173,11 +155,9 @@ class _SearchPageState extends State { }); } - Widget _buildHotSearch({ - bool isTrending = true, - }) { + Widget _buildHotSearch() { final text = Text( - isTrending ? '大家都在搜' : '搜索发现', + '大家都在搜', strutStyle: const StrutStyle(leading: 0, height: 1), style: theme.textTheme.titleMedium!.copyWith( height: 1, @@ -194,9 +174,7 @@ class _SearchPageState extends State { return SliverPadding( padding: EdgeInsets.fromLTRB( 10, - !isTrending && (isPortrait || _searchController.enableTrending) - ? 4 - : 25, + isPortrait ? 4 : 25, 4, 25, ), @@ -208,42 +186,40 @@ class _SearchPageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - isTrending - ? Row( - mainAxisSize: MainAxisSize.min, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + text, + const SizedBox(width: 14), + TextButton( + style: const ButtonStyle( + visualDensity: .compact, + tapTargetSize: .shrinkWrap, + padding: WidgetStatePropertyAll( + .symmetric(horizontal: 10), + ), + ), + onPressed: () => Get.toNamed('/searchTrending'), + child: Row( children: [ - text, - const SizedBox(width: 14), - TextButton( - style: const ButtonStyle( - visualDensity: .compact, - tapTargetSize: .shrinkWrap, - padding: WidgetStatePropertyAll( - .symmetric(horizontal: 10), - ), - ), - onPressed: () => Get.toNamed('/searchTrending'), - child: Row( - children: [ - Text( - '完整榜单', - strutStyle: const StrutStyle( - leading: 0, - height: 1, - ), - style: style, - ), - Icon( - size: 18, - Icons.keyboard_arrow_right, - color: outline, - ), - ], + Text( + '完整榜单', + strutStyle: const StrutStyle( + leading: 0, + height: 1, ), + style: style, + ), + Icon( + size: 18, + Icons.keyboard_arrow_right, + color: outline, ), ], - ) - : text, + ), + ), + ], + ), TextButton.icon( style: const ButtonStyle( visualDensity: .compact, @@ -252,9 +228,7 @@ class _SearchPageState extends State { .symmetric(horizontal: 10), ), ), - onPressed: isTrending - ? _searchController.queryTrendingList - : _searchController.queryRecommendList, + onPressed: _searchController.queryTrendingList, icon: Icon( Icons.refresh_outlined, size: 18, @@ -274,12 +248,7 @@ class _SearchPageState extends State { ), ), Obx( - () => _buildHotKey( - isTrending - ? _searchController.trendingState.value - : _searchController.recommendData.value, - isTrending, - ), + () => _buildHotKey(_searchController.trendingState.value), ), ], ), @@ -298,11 +267,7 @@ class _SearchPageState extends State { return SliverPadding( padding: EdgeInsets.fromLTRB( 10, - !isPortrait - ? 25 - : _searchController.enableTrending - ? 0 - : 6, + !isPortrait ? 25 : 0, 6, 25, ), @@ -312,6 +277,7 @@ class _SearchPageState extends State { padding: const EdgeInsets.fromLTRB(6, 0, 6, 6), sliver: SliverToBoxAdapter( child: Row( + mainAxisAlignment: .spaceBetween, children: [ Text( '搜索历史', @@ -321,10 +287,6 @@ class _SearchPageState extends State { fontWeight: FontWeight.bold, ), ), - const SizedBox(width: 12), - _recordBtn, - _exportBtn, - const Spacer(), TextButton.icon( style: const ButtonStyle( visualDensity: .compact, @@ -379,64 +341,8 @@ class _SearchPageState extends State { ); } - Widget get _recordBtn => Obx( - () { - bool enable = _searchController.recordSearchHistory.value; - return IconButton( - iconSize: 22, - tooltip: enable ? '记录搜索' : '无痕搜索', - icon: DisabledIcon( - disable: !enable, - child: Icon( - Icons.history, - color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.8), - ), - ), - style: const ButtonStyle( - visualDensity: .comfortable, - tapTargetSize: .shrinkWrap, - padding: WidgetStatePropertyAll(.zero), - ), - onPressed: () { - enable = !enable; - _searchController.recordSearchHistory.value = enable; - GStorage.setting.put( - SettingBoxKey.recordSearchHistory, - enable, - ); - }, - ); - }, - ); - - Widget get _exportBtn => IconButton( - iconSize: 22, - tooltip: '导入/导出历史记录', - icon: Icon( - Icons.import_export_outlined, - color: theme.colorScheme.onSurfaceVariant.withValues(alpha: 0.8), - ), - style: const ButtonStyle( - visualDensity: .comfortable, - tapTargetSize: .shrinkWrap, - padding: WidgetStatePropertyAll(.zero), - ), - onPressed: () => showImportExportDialog( - context, - title: '历史记录', - localFileName: () => 'search', - onExport: () => jsonEncode(_searchController.historyList), - onImport: (json) { - final list = List.from(json); - _searchController.historyList.value = list; - GStorage.historyWord.put('cacheList', list); - }, - ), - ); - Widget _buildHotKey( LoadingState loadingState, - bool isTrending, ) { return switch (loadingState) { Success(:final response) when (response.list?.isNotEmpty ?? false) => @@ -447,9 +353,7 @@ class _SearchPageState extends State { Error(:final errMsg) => HttpError( safeArea: false, errMsg: errMsg, - onReload: isTrending - ? _searchController.queryTrendingList - : _searchController.queryRecommendList, + onReload: _searchController.queryTrendingList, ), _ => const SliverToBoxAdapter(), }; diff --git a/lib/pages/search_result/view.dart b/lib/pages/search_result/view.dart index a5b3fff93..20497a820 100644 --- a/lib/pages/search_result/view.dart +++ b/lib/pages/search_result/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/models/common/search/search_type.dart'; @@ -65,8 +66,7 @@ class _SearchResultPageState extends State @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( shape: Border( bottom: BorderSide( diff --git a/lib/pages/search_trending/view.dart b/lib/pages/search_trending/view.dart index c58e474b0..63f7165e3 100644 --- a/lib/pages/search_trending/view.dart +++ b/lib/pages/search_trending/view.dart @@ -65,83 +65,87 @@ class _SearchTrendingPageState extends State { final height = width * 528 / 1125; _offset = height - 56 - padding.top; listener(); - return Scaffold( - extendBody: true, - extendBodyBehindAppBar: true, - resizeToAvoidBottomInset: false, - appBar: PreferredSize( - preferredSize: const Size.fromHeight(56), - child: Obx( - () { - final scrollRatio = _scrollRatio.value; - final flag = maxWidth > width || scrollRatio >= 0.5; - return AppBar( - title: Opacity( - opacity: scrollRatio, - child: Text( - 'bilibili热搜', - style: TextStyle( - color: flag ? null : Colors.white, + return Material( + child: Stack( + children: [ + Padding( + padding: EdgeInsets.only( + left: padding.left, + right: padding.right, + ), + child: Center( + child: SizedBox( + width: width, + child: refreshIndicator( + onRefresh: _controller.onRefresh, + child: CustomScrollView( + controller: _controller.scrollController, + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + SliverToBoxAdapter( + child: Image.asset( + width: width, + height: height, + cacheWidth: width.cacheSize(context), + Assets.trendingBanner, + filterQuality: FilterQuality.low, + ), + ), + SliverPadding( + padding: EdgeInsets.only(bottom: padding.bottom + 100), + sliver: Obx( + () => + _buildBody(theme, _controller.loadingState.value), + ), + ), + ], ), ), ), - backgroundColor: theme.colorScheme.surface.withValues( - alpha: scrollRatio, - ), - foregroundColor: flag ? null : Colors.white, - systemOverlayStyle: flag - ? null - : const SystemUiOverlayStyle( - statusBarBrightness: Brightness.dark, - statusBarIconBrightness: Brightness.light, - ), - shape: scrollRatio == 1 - ? Border( - bottom: BorderSide( - color: theme.colorScheme.outline.withValues( - alpha: 0.1, - ), - ), - ) - : null, - ); - }, - ), - ), - body: Padding( - padding: EdgeInsets.only( - left: padding.left, - right: padding.right, - ), - child: Center( - child: SizedBox( - width: width, - child: refreshIndicator( - onRefresh: _controller.onRefresh, - child: CustomScrollView( - controller: _controller.scrollController, - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - SliverToBoxAdapter( - child: Image.asset( - width: width, - height: height, - cacheWidth: width.cacheSize(context), - Assets.trendingBanner, - filterQuality: FilterQuality.low, - ), - ), - SliverPadding( - padding: EdgeInsets.only(bottom: padding.bottom + 100), - sliver: Obx( - () => _buildBody(theme, _controller.loadingState.value), - ), - ), - ], - ), ), ), - ), + Positioned( + left: 0, + top: 0, + right: 0, + child: Obx( + () { + final scrollRatio = _scrollRatio.value; + final flag = maxWidth > width || scrollRatio >= 0.5; + return AppBar( + title: Opacity( + opacity: scrollRatio, + child: Text( + 'bilibili热搜', + style: TextStyle( + color: flag ? null : Colors.white, + ), + ), + ), + backgroundColor: theme.colorScheme.surface.withValues( + alpha: scrollRatio, + ), + foregroundColor: flag ? null : Colors.white, + systemOverlayStyle: flag + ? null + : const SystemUiOverlayStyle( + statusBarBrightness: Brightness.dark, + statusBarIconBrightness: Brightness.light, + ), + shape: scrollRatio == 1 + ? Border( + bottom: BorderSide( + color: theme.colorScheme.outline.withValues( + alpha: 0.1, + ), + ), + ) + : null, + ); + }, + ), + ), + ], ), ); } diff --git a/lib/pages/setting/extra_setting.dart b/lib/pages/setting/extra_setting.dart index 0c6343e0c..a817f6bd3 100644 --- a/lib/pages/setting/extra_setting.dart +++ b/lib/pages/setting/extra_setting.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/setting/models/extra_settings.dart'; import 'package:flutter/material.dart'; @@ -17,8 +18,7 @@ class _ExtraSettingState extends State { Widget build(BuildContext context) { final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: showAppBar ? AppBar(title: const Text('其它设置')) : null, body: ListView.builder( padding: EdgeInsets.only( diff --git a/lib/pages/setting/models/extra_settings.dart b/lib/pages/setting/models/extra_settings.dart index 657c39af9..264244167 100644 --- a/lib/pages/setting/models/extra_settings.dart +++ b/lib/pages/setting/models/extra_settings.dart @@ -1,36 +1,21 @@ import 'dart:io'; -import 'dart:math' show max; import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/gesture/horizontal_drag_gesture_recognizer.dart' show touchSlopH; import 'package:PiliPlus/common/widgets/image_grid/image_grid_view.dart' - show ImageGridView, ImageModel; -import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; -import 'package:PiliPlus/grpc/reply.dart'; + show ImageGridView; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; -import 'package:PiliPlus/models/common/audio_normalization.dart'; -import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; -import 'package:PiliPlus/models/common/member/tab_type.dart'; -import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; -import 'package:PiliPlus/models/common/super_resolution_type.dart'; -import 'package:PiliPlus/models/dynamics/result.dart' - show DynamicsDataModel, ItemModulesModel; +import 'package:PiliPlus/models/dynamics/result.dart' show DynamicsDataModel; import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/setting/models/model.dart'; -import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/slider_dialog.dart'; -import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/services/download/download_service.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/cache_manager.dart'; -import 'package:PiliPlus/utils/extension/num_ext.dart'; -import 'package:PiliPlus/utils/global_data.dart'; -import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -38,34 +23,20 @@ import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:file_picker/file_picker.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart' hide RefreshIndicator; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; List get extraSettings => [ - if (PlatformUtils.isDesktop) ...[ - SwitchModel( - title: '退出时最小化', - leading: const Icon(Icons.exit_to_app), - setKey: SettingBoxKey.minimizeOnExit, - defaultVal: true, - onChanged: (value) { - try { - Get.find().minimizeOnExit = value; - } catch (_) {} - }, - ), + if (PlatformUtils.isDesktop) NormalModel( title: '缓存路径', getSubtitle: () => downloadPath, leading: const Icon(Icons.storage), onTap: _showDownPathDialog, ), - ], SplitModel( normalModel: const NormalModel.split( title: '空降助手', @@ -87,55 +58,6 @@ List get extraSettings => [ .put(SettingBoxKey.pgcSkipType, value.index) .whenComplete(setState), ), - SplitModel( - normalModel: const NormalModel.split( - title: '检查未读动态', - subtitle: '点击设置检查周期(min)', - leading: Icon(Icons.notifications_none), - ), - switchModel: SwitchModel.split( - defaultVal: true, - setKey: SettingBoxKey.checkDynamic, - onChanged: (value) => Get.find().checkDynamic = value, - onTap: _showDynDialog, - ), - ), - const SwitchModel( - title: '显示视频分段信息', - leading: Icon(CustomIcons.view_headline_rotate_90), - setKey: SettingBoxKey.showViewPoints, - defaultVal: true, - ), - const SwitchModel( - title: '视频页显示相关视频', - leading: Icon(MdiIcons.motionPlayOutline), - setKey: SettingBoxKey.showRelatedVideo, - defaultVal: true, - ), - const SwitchModel( - title: '显示视频评论', - leading: Icon(MdiIcons.commentTextOutline), - setKey: SettingBoxKey.showVideoReply, - defaultVal: true, - ), - const SwitchModel( - title: '显示番剧评论', - leading: Icon(MdiIcons.commentTextOutline), - setKey: SettingBoxKey.showBangumiReply, - defaultVal: true, - ), - const SwitchModel( - title: '默认展开视频简介', - leading: Icon(Icons.expand_more), - setKey: SettingBoxKey.alwaysExpandIntroPanel, - defaultVal: false, - ), - const SwitchModel( - title: '横屏自动展开视频简介', - leading: Icon(Icons.expand_more), - setKey: SettingBoxKey.expandIntroPanelH, - defaultVal: false, - ), SwitchModel( title: '横屏分P/合集列表显示在Tab栏', leading: const Icon(Icons.format_list_numbered_rtl_sharp), @@ -155,36 +77,6 @@ List get extraSettings => [ defaultVal: false, onChanged: (value) => ImageGridView.horizontalPreview = value, ), - NormalModel( - title: '弹幕行高', - subtitle: '默认1.6', - leading: const Icon(CustomIcons.dm_settings), - getTrailing: (theme) => Text( - Pref.danmakuLineHeight.toString(), - style: theme.textTheme.titleSmall, - ), - onTap: _showDmHeightDialog, - ), - const SwitchModel( - title: '显示视频警告/争议信息', - leading: Icon(Icons.warning_amber_rounded), - setKey: SettingBoxKey.showArgueMsg, - defaultVal: true, - ), - SwitchModel( - title: '显示动态警告/争议信息', - leading: const Icon(Icons.warning_amber_rounded), - setKey: SettingBoxKey.showDynDispute, - defaultVal: false, - onChanged: (val) => ItemModulesModel.showDynDispute = val, - ), - const SwitchModel( - title: '分P/合集:倒序播放从首集开始播放', - subtitle: '开启则自动切换为倒序首集,否则保持当前集', - leading: Icon(MdiIcons.sort), - setKey: SettingBoxKey.reverseFromFirst, - defaultVal: true, - ), const SwitchModel( title: '禁用 SSL 证书验证', subtitle: '谨慎开启,禁用容易受到中间人攻击', @@ -192,20 +84,6 @@ List get extraSettings => [ needReboot: true, setKey: SettingBoxKey.badCertificateCallback, ), - const SwitchModel( - title: '显示继续播放分P提示', - leading: Icon(Icons.local_parking), - setKey: SettingBoxKey.continuePlayingPart, - defaultVal: true, - ), - getBanWordModel( - title: '评论关键词过滤', - key: SettingBoxKey.banWordForReply, - onChanged: (value) { - ReplyGrpc.replyRegExp = value; - ReplyGrpc.enableFilter = value.pattern.isNotEmpty; - }, - ), getBanWordModel( title: '动态关键词过滤', key: SettingBoxKey.banWordForDyn, @@ -214,12 +92,6 @@ List get extraSettings => [ DynamicsDataModel.enableFilter = value.pattern.isNotEmpty; }, ), - const SwitchModel( - title: '使用外部浏览器打开链接', - leading: Icon(Icons.open_in_browser), - setKey: SettingBoxKey.openInBrowser, - defaultVal: false, - ), NormalModel( title: '横向滑动阈值', getSubtitle: () => '当前:「${Pref.touchSlopH}」', @@ -238,152 +110,6 @@ List get extraSettings => [ getSubtitle: () => '当前指示器高度: ${Pref.refreshDisplacement}', onTap: _showRefreshDialog, ), - const SwitchModel( - title: '显示会员彩色弹幕', - leading: Icon(MdiIcons.gradientHorizontal), - setKey: SettingBoxKey.showVipDanmaku, - defaultVal: true, - ), - const SwitchModel( - title: '合并弹幕', - subtitle: '合并一段时间内获取到的相同弹幕', - leading: Icon(Icons.merge), - setKey: SettingBoxKey.mergeDanmaku, - defaultVal: false, - ), - const SwitchModel( - title: '显示热门推荐', - subtitle: '热门页面显示每周必看等推荐内容入口', - leading: Icon(Icons.local_fire_department_outlined), - setKey: SettingBoxKey.showHotRcmd, - defaultVal: false, - needReboot: true, - ), - if (kDebugMode || Platform.isAndroid) - NormalModel( - title: '音量均衡', - leading: const Icon(Icons.multitrack_audio), - getSubtitle: () { - final audioNormalization = AudioNormalization.getTitleFromConfig( - Pref.audioNormalization, - ); - String fallback = Pref.fallbackNormalization; - if (fallback == '0') { - fallback = ''; - } else { - fallback = - ',无参数时:「${AudioNormalization.getTitleFromConfig(fallback)}」'; - } - return '当前:「$audioNormalization」$fallback'; - }, - onTap: audioNormalization, - ), - NormalModel( - title: '超分辨率', - leading: const Icon(Icons.stay_current_landscape_outlined), - getSubtitle: () => - '当前:「${Pref.superResolutionType.label}」\n默认设置对番剧生效, 其他视频默认关闭\n超分辨率需要启用硬件解码, 若启用硬件解码后仍然不生效, 尝试切换硬件解码器为 auto-copy', - onTap: _showSuperResolutionDialog, - ), - const SwitchModel( - title: '提前初始化播放器', - subtitle: '相对减少手动播放加载时间', - leading: Icon(Icons.play_circle_outlined), - setKey: SettingBoxKey.preInitPlayer, - defaultVal: false, - ), - const SwitchModel( - title: '搜索建议', - leading: Icon(Icons.search), - setKey: SettingBoxKey.searchSuggestion, - defaultVal: true, - ), - const SwitchModel( - title: '记录搜索历史', - leading: Icon(Icons.history), - setKey: SettingBoxKey.recordSearchHistory, - defaultVal: true, - ), - SwitchModel( - title: '展示头像/评论/动态装饰', - leading: const Icon(MdiIcons.stickerCircleOutline), - setKey: SettingBoxKey.showDecorate, - defaultVal: true, - onChanged: (value) => PendantAvatar.showDecorate = value, - ), - SwitchModel( - title: '显示粉丝勋章', - leading: const Icon(MdiIcons.medalOutline), - setKey: SettingBoxKey.showMedal, - defaultVal: true, - onChanged: (value) => GlobalData().showMedal = value, - ), - SwitchModel( - title: '预览 Live Photo', - subtitle: '开启则以视频形式预览 Live Photo,否则预览静态图片', - leading: const Icon(Icons.image_outlined), - setKey: SettingBoxKey.enableLivePhoto, - defaultVal: true, - onChanged: (value) => ImageModel.enableLivePhoto = value, - ), - const SwitchModel( - title: '滑动跳转预览视频缩略图', - leading: Icon(Icons.preview_outlined), - setKey: SettingBoxKey.showSeekPreview, - defaultVal: true, - ), - const SwitchModel( - title: '显示高能进度条', - subtitle: '高能进度条反应了在时域上,单位时间内弹幕发送量的变化趋势', - leading: Icon(Icons.show_chart), - setKey: SettingBoxKey.showDmChart, - defaultVal: false, - ), - const SwitchModel( - title: '记录评论', - leading: Icon(Icons.message_outlined), - setKey: SettingBoxKey.saveReply, - defaultVal: true, - needReboot: true, - ), - const SwitchModel( - title: '发评反诈', - subtitle: '发送评论后检查评论是否可见', - leading: Icon(CustomIcons.shield_reply), - setKey: SettingBoxKey.enableCommAntifraud, - defaultVal: false, - ), - if (Platform.isAndroid) - const SwitchModel( - title: '使用「哔哩发评反诈」检查评论', - leading: Icon( - FontAwesomeIcons.b, - size: 22, - ), - setKey: SettingBoxKey.biliSendCommAntifraud, - defaultVal: false, - ), - const SwitchModel( - title: '发布/转发动态反诈', - subtitle: '发布/转发动态后检查动态是否可见', - leading: Icon(CustomIcons.shield_published), - setKey: SettingBoxKey.enableCreateDynAntifraud, - defaultVal: false, - ), - SwitchModel( - title: '屏蔽带货动态', - leading: const Icon(CustomIcons.shopping_bag_not_interested), - setKey: SettingBoxKey.antiGoodsDyn, - defaultVal: false, - onChanged: (value) => DynamicsDataModel.antiGoodsDyn = value, - ), - SwitchModel( - title: '屏蔽带货评论', - leading: const Icon(CustomIcons.shopping_bag_not_interested), - setKey: SettingBoxKey.antiGoodsReply, - defaultVal: false, - onChanged: (value) => ReplyGrpc.antiGoodsReply = value, - ), SwitchModel( title: '侧滑关闭二级页面', leading: const Icon(CustomIcons.touch_app_rotate_270), @@ -391,18 +117,6 @@ List get extraSettings => [ defaultVal: Platform.isIOS, onChanged: (value) => CommonSlideMixin.slideDismissReplyPage = value, ), - const SwitchModel( - title: '动态/专栏详情页展示底部操作栏', - leading: Icon(Icons.more_horiz), - setKey: SettingBoxKey.showDynActionBar, - defaultVal: true, - ), - const SwitchModel( - title: '启用拖拽字幕调整底部边距', - leading: Icon(MdiIcons.dragVariant), - setKey: SettingBoxKey.enableDragSubtitle, - defaultVal: false, - ), const SwitchModel( title: '展示追番时间表', leading: Icon(MdiIcons.chartTimelineVariantShimmer), @@ -410,14 +124,6 @@ List get extraSettings => [ defaultVal: true, needReboot: true, ), - SwitchModel( - title: '静默下载图片', - subtitle: '不显示下载 Loading 弹窗', - leading: const Icon(Icons.download_for_offline_outlined), - setKey: SettingBoxKey.silentDownImg, - defaultVal: false, - onChanged: (value) => ImageUtils.silentDownImg = value, - ), SwitchModel( title: '长按/右键显示图片菜单', leading: const Icon(Icons.menu), @@ -425,20 +131,6 @@ List get extraSettings => [ defaultVal: false, onChanged: (value) => ImageGridView.enableImgMenu = value, ), - const SwitchModel( - title: '大家都在搜', - subtitle: '是否展示「大家都在搜」', - leading: Icon(Icons.data_thresholding_outlined), - setKey: SettingBoxKey.enableHotKey, - defaultVal: true, - ), - const SwitchModel( - title: '搜索发现', - subtitle: '是否展示「搜索发现」', - leading: Icon(Icons.search_outlined), - setKey: SettingBoxKey.enableSearchRcmd, - defaultVal: true, - ), const SwitchModel( title: '快速收藏', subtitle: '点击设置默认收藏夹\n点按收藏至默认,长按选择文件夹', @@ -447,20 +139,6 @@ List get extraSettings => [ onTap: _showFavDialog, defaultVal: false, ), - const SwitchModel( - title: '启用AI总结', - subtitle: '视频详情页开启AI总结', - leading: Icon(Icons.engineering_outlined), - setKey: SettingBoxKey.enableAi, - defaultVal: false, - ), - const SwitchModel( - title: '默认展示评论区', - subtitle: '在视频详情页默认切换至评论区页(仅Tab型布局)', - leading: Icon(Icons.mode_comment_outlined), - setKey: SettingBoxKey.defaultShowComment, - defaultVal: false, - ), const SwitchModel( title: '启用HTTP/2', leading: Icon(Icons.swap_horizontal_circle_outlined), @@ -480,58 +158,6 @@ List get extraSettings => [ leading: Icon(Icons.more_time_outlined), onTap: _showReplyDelayDialog, ), - NormalModel( - title: '评论展示', - leading: const Icon(Icons.whatshot_outlined), - getSubtitle: () => '当前优先展示「${Pref.replySortType.title}」', - onTap: _showReplySortDialog, - ), - NormalModel( - title: '动态展示', - leading: const Icon(Icons.dynamic_feed_rounded), - getSubtitle: () => '当前优先展示「${Pref.defaultDynamicType.label}」', - onTap: _showDefDynDialog, - ), - SwitchModel( - title: '显示动态互动内容', - subtitle: '开启后则在动态卡片底部显示互动内容(如关注的人点赞、热评等)', - leading: const Icon(Icons.quickreply_outlined), - setKey: SettingBoxKey.showDynInteraction, - defaultVal: true, - onChanged: (val) => ItemModulesModel.showDynInteraction = val, - ), - NormalModel( - title: '用户页默认展示TAB', - leading: const Icon(Icons.tab), - getSubtitle: () => '当前优先展示「${Pref.memberTab.title}」', - onTap: _showMemberTabDialog, - ), - SwitchModel( - title: '显示UP主页小店TAB', - leading: const Icon(Icons.shop_outlined), - setKey: SettingBoxKey.showMemberShop, - defaultVal: false, - onChanged: (value) => MemberTabType.showMemberShop = value, - ), - const SplitModel( - normalModel: NormalModel.split( - title: '设置代理', - subtitle: '设置代理 host:port', - leading: Icon(Icons.airplane_ticket_outlined), - ), - switchModel: SwitchModel.split( - defaultVal: false, - setKey: SettingBoxKey.enableSystemProxy, - onTap: _showProxyDialog, - ), - ), - const SwitchModel( - title: '自动清除缓存', - subtitle: '每次启动时清除缓存', - leading: Icon(Icons.auto_delete_outlined), - setKey: SettingBoxKey.autoClearCache, - defaultVal: false, - ), NormalModel( title: '最大缓存大小', getSubtitle: () { @@ -543,99 +169,6 @@ List get extraSettings => [ ), ]; -Future audioNormalization( - BuildContext context, - VoidCallback setState, { - bool fallback = false, -}) async { - final key = fallback - ? SettingBoxKey.fallbackNormalization - : SettingBoxKey.audioNormalization; - final res = await showDialog( - context: context, - builder: (context) { - String audioNormalization = fallback - ? Pref.fallbackNormalization - : Pref.audioNormalization; - Set values = { - '0', - '1', - if (!fallback) '2', - audioNormalization, - '3', - }; - return SelectDialog( - title: fallback ? '服务器无loudnorm配置时使用' : '音量均衡', - toggleable: true, - value: audioNormalization, - values: values - .map( - (e) => ( - e, - switch (e) { - '0' => AudioNormalization.disable.title, - '1' => AudioNormalization.dynaudnorm.title, - '2' => AudioNormalization.loudnorm.title, - '3' => AudioNormalization.custom.title, - _ => e, - }, - ), - ) - .toList(), - ); - }, - ); - if (res != null && context.mounted) { - if (res == '3') { - String param = ''; - await showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('自定义参数'), - content: Column( - mainAxisSize: MainAxisSize.min, - spacing: 16, - children: [ - const Text('等同于 --lavfi-complex="[aid1] 参数 [ao]"'), - TextField( - autofocus: true, - onChanged: (value) => param = value, - ), - ], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () { - Get.back(); - GStorage.setting.put(key, param); - if (!fallback && - PlPlayerController.loudnormRegExp.hasMatch(param)) { - audioNormalization(context, setState, fallback: true); - } - setState(); - }, - child: const Text('确定'), - ), - ], - ), - ); - } else { - GStorage.setting.put(key, res); - if (res == '2') { - audioNormalization(context, setState, fallback: true); - } - setState(); - } - } -} - void _showDownPathDialog(BuildContext context, VoidCallback setState) { showDialog( context: context, @@ -685,90 +218,6 @@ void _showDownPathDialog(BuildContext context, VoidCallback setState) { ); } -void _showDynDialog(BuildContext context) { - String dynamicPeriod = Pref.dynamicPeriod.toString(); - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('检查周期'), - content: TextFormField( - autofocus: true, - initialValue: dynamicPeriod, - keyboardType: TextInputType.number, - onChanged: (value) => dynamicPeriod = value, - inputFormatters: [FilteringTextInputFormatter.digitsOnly], - decoration: const InputDecoration(suffixText: 'min'), - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () { - try { - final val = int.parse(dynamicPeriod); - Get.back(); - GStorage.setting.put(SettingBoxKey.dynamicPeriod, val); - Get.find().dynamicPeriod = val * 60 * 1000; - } catch (e) { - SmartDialog.showToast(e.toString()); - } - }, - child: const Text('确定'), - ), - ], - ), - ); -} - -void _showDmHeightDialog(BuildContext context, VoidCallback setState) { - String danmakuLineHeight = Pref.danmakuLineHeight.toString(); - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('弹幕行高'), - content: TextFormField( - autofocus: true, - initialValue: danmakuLineHeight, - keyboardType: const .numberWithOptions(decimal: true), - onChanged: (value) => danmakuLineHeight = value, - inputFormatters: [ - FilteringTextInputFormatter.allow(RegExp(r'[\d\.]+')), - ], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () async { - try { - final val = max( - 1.0, - double.parse(danmakuLineHeight).toPrecision(1), - ); - Get.back(); - await GStorage.setting.put(SettingBoxKey.danmakuLineHeight, val); - setState(); - } catch (e) { - SmartDialog.showToast(e.toString()); - } - }, - child: const Text('确定'), - ), - ], - ), - ); -} - void _showTouchSlopDialog(BuildContext context, VoidCallback setState) { String initialValue = Pref.touchSlopH.toString(); showDialog( @@ -867,27 +316,6 @@ void _visitor(Element context) { } } -Future _showSuperResolutionDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '超分辨率', - value: Pref.superResolutionType, - values: SuperResolutionType.values.map((e) => (e, e.label)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put( - SettingBoxKey.superResolutionType, - res.index, - ); - setState(); - } -} - Future _showFavDialog(BuildContext context) async { if (Accounts.main.isLogin) { final res = await FavHttp.allFavFolders(Accounts.main.mid); @@ -979,129 +407,6 @@ Future _showReplyDelayDialog( } } -Future _showReplySortDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '评论展示', - value: Pref.replySortType, - values: ReplySortType.values.take(2).map((e) => (e, e.title)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.replySortType, res.index); - setState(); - } -} - -Future _showDefDynDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '动态展示', - value: Pref.defaultDynamicType, - values: DynamicsTabType.values.take(4).map((e) => (e, e.label)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put( - SettingBoxKey.defaultDynamicType, - res.index, - ); - setState(); - } -} - -Future _showMemberTabDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '用户页默认展示TAB', - value: Pref.memberTab, - values: MemberTabType.values.map((e) => (e, e.title)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.memberTab, res.index); - setState(); - } -} - -void _showProxyDialog(BuildContext context) { - String systemProxyHost = Pref.systemProxyHost; - String systemProxyPort = Pref.systemProxyPort; - - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('设置代理'), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - const SizedBox(height: 6), - TextFormField( - initialValue: systemProxyHost, - decoration: const InputDecoration( - isDense: true, - labelText: '请输入Host,使用 . 分割', - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(6)), - ), - ), - onChanged: (e) => systemProxyHost = e, - ), - const SizedBox(height: 10), - TextFormField( - initialValue: systemProxyPort, - keyboardType: TextInputType.number, - decoration: const InputDecoration( - isDense: true, - labelText: '请输入Port', - border: OutlineInputBorder( - borderRadius: BorderRadius.all(Radius.circular(6)), - ), - ), - inputFormatters: [FilteringTextInputFormatter.digitsOnly], - onChanged: (e) => systemProxyPort = e, - ), - ], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () { - Get.back(); - GStorage.setting.put( - SettingBoxKey.systemProxyHost, - systemProxyHost, - ); - GStorage.setting.put( - SettingBoxKey.systemProxyPort, - systemProxyPort, - ); - }, - child: const Text('确认'), - ), - ], - ), - ); -} - void _showCacheDialog(BuildContext context, VoidCallback setState) { String valueStr = ''; showDialog( diff --git a/lib/pages/setting/models/play_settings.dart b/lib/pages/setting/models/play_settings.dart index 62bd07bc3..06c07c9fd 100644 --- a/lib/pages/setting/models/play_settings.dart +++ b/lib/pages/setting/models/play_settings.dart @@ -1,24 +1,12 @@ -import 'dart:io'; - import 'package:PiliPlus/common/widgets/custom_icon.dart'; -import 'package:PiliPlus/models/common/super_chat_type.dart'; -import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; -import 'package:PiliPlus/pages/main/controller.dart'; import 'package:PiliPlus/pages/setting/models/model.dart'; -import 'package:PiliPlus/pages/setting/pages/fullscreen_sc_size.dart'; -import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; -import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; -import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; -import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; List get playSettings => [ const SwitchModel( @@ -28,71 +16,18 @@ List get playSettings => [ setKey: SettingBoxKey.enableShowDanmaku, defaultVal: true, ), - if (PlatformUtils.isMobile) - const SwitchModel( - title: '启用点击弹幕', - subtitle: '点击弹幕悬停,支持点赞、复制、举报操作', - leading: Icon(Icons.touch_app_outlined), - setKey: SettingBoxKey.enableTapDm, - defaultVal: true, - ), NormalModel( onTap: (context, setState) => Get.toNamed('/playSpeedSet'), leading: const Icon(Icons.speed_outlined), title: '倍速设置', subtitle: '设置视频播放速度', ), - const SwitchModel( - title: '自动播放', - subtitle: '进入详情页自动播放', - leading: Icon(Icons.motion_photos_auto_outlined), - setKey: SettingBoxKey.autoPlayEnable, - defaultVal: false, - ), - const SwitchModel( - title: '全屏显示锁定按钮', - leading: Icon(Icons.lock_outline), - setKey: SettingBoxKey.showFsLockBtn, - defaultVal: true, - ), - const SwitchModel( - title: '全屏显示截图按钮', - leading: Icon(Icons.photo_camera_outlined), - setKey: SettingBoxKey.showFsScreenshotBtn, - defaultVal: true, - ), SwitchModel( title: '全屏显示电池电量', leading: const Icon(Icons.battery_3_bar), setKey: SettingBoxKey.showBatteryLevel, defaultVal: PlatformUtils.isMobile, ), - const SwitchModel( - title: '双击快退/快进', - subtitle: '左侧双击快退/右侧双击快进,关闭则双击均为暂停/播放', - leading: Icon(Icons.touch_app_outlined), - setKey: SettingBoxKey.enableQuickDouble, - defaultVal: true, - ), - const SwitchModel( - title: '左右侧滑动调节亮度/音量', - leading: Icon(MdiIcons.tuneVerticalVariant), - setKey: SettingBoxKey.enableSlideVolumeBrightness, - defaultVal: true, - ), - if (Platform.isAndroid) - const SwitchModel( - title: '调节系统亮度', - leading: Icon(Icons.brightness_6_outlined), - setKey: SettingBoxKey.setSystemBrightness, - defaultVal: false, - ), - const SwitchModel( - title: '中间滑动进入/退出全屏', - leading: Icon(MdiIcons.panVertical), - setKey: SettingBoxKey.enableSlideFS, - defaultVal: true, - ), getVideoFilterSelectModel( title: '双击快进/快退时长', suffix: 's', @@ -101,78 +36,21 @@ List get playSettings => [ defaultValue: 10, isFilter: false, ), - const SwitchModel( - title: '滑动快进/快退使用相对时长', - leading: Icon(Icons.swap_horiz_outlined), - setKey: SettingBoxKey.useRelativeSlide, - defaultVal: false, - ), getVideoFilterSelectModel( title: '滑动快进/快退时长', subtitle: '从播放器一端滑到另一端的快进/快退时长', - suffix: Pref.useRelativeSlide ? '%' : 's', + suffix: 's', key: SettingBoxKey.sliderDuration, values: [25, 50, 90, 100], defaultValue: 90, isFilter: false, ), - NormalModel( - title: '自动启用字幕', - leading: const Icon(Icons.closed_caption_outlined), - getSubtitle: () => '当前选择偏好:${Pref.subtitlePreferenceV2.desc}', - onTap: _showSubtitleDialog, - ), - if (PlatformUtils.isDesktop) - SwitchModel( - title: '最小化时暂停/还原时播放', - leading: const Icon(Icons.pause_circle_outline), - setKey: SettingBoxKey.pauseOnMinimize, - defaultVal: false, - onChanged: (value) { - try { - Get.find().pauseOnMinimize = value; - } catch (_) {} - }, - ), SwitchModel( title: '启用键盘控制', leading: const Icon(Icons.keyboard_alt_outlined), setKey: SettingBoxKey.keyboardControl, defaultVal: PlatformUtils.isDesktop, ), - NormalModel( - title: 'SuperChat (醒目留言) 显示类型', - leading: const Icon(Icons.live_tv), - getSubtitle: () => '当前:「${Pref.superChatType.title}」', - onTap: _showSuperChatDialog, - ), - NormalModel( - title: '全屏 SC 大小', - subtitle: 'SuperChat (醒目留言) 大小设置', - leading: const Icon(Icons.open_in_full), - onTap: (_, _) => Get.to(const FullScreenScSize()), - ), - const SwitchModel( - title: '竖屏扩大展示', - subtitle: '小屏竖屏视频宽高比由16:9扩大至1:1(不支持收起);横屏适配时,扩大至9:16', - leading: Icon(Icons.expand_outlined), - setKey: SettingBoxKey.enableVerticalExpand, - defaultVal: false, - ), - const SwitchModel( - title: '自动全屏', - subtitle: '视频开始播放时进入全屏', - leading: Icon(Icons.fullscreen_outlined), - setKey: SettingBoxKey.enableAutoEnter, - defaultVal: false, - ), - const SwitchModel( - title: '自动退出全屏', - subtitle: '视频结束播放时退出全屏', - leading: Icon(Icons.fullscreen_exit_outlined), - setKey: SettingBoxKey.enableAutoExit, - defaultVal: true, - ), if (PlatformUtils.isMobile) const SwitchModel( title: '后台播放', @@ -181,40 +59,6 @@ List get playSettings => [ setKey: SettingBoxKey.continuePlayInBackground, defaultVal: false, ), - if (Platform.isAndroid) ...[ - SwitchModel( - title: '后台画中画', - subtitle: '进入后台时以小窗形式(PiP)播放', - leading: const Icon(Icons.picture_in_picture_outlined), - setKey: SettingBoxKey.autoPiP, - defaultVal: false, - onChanged: (val) { - if (val && !videoPlayerServiceHandler!.enableBackgroundPlay) { - SmartDialog.showToast('建议开启后台音频服务'); - } - }, - ), - const SwitchModel( - title: '画中画不加载弹幕', - subtitle: '当弹幕开关开启时,小窗屏蔽弹幕以获得较好的体验', - leading: Icon(CustomIcons.dm_off), - setKey: SettingBoxKey.pipNoDanmaku, - defaultVal: false, - ), - ], - const SwitchModel( - title: '全屏手势反向', - subtitle: '默认播放器中部向上滑动进入全屏,向下退出\n开启后向下全屏,向上退出', - leading: Icon(Icons.swap_vert), - setKey: SettingBoxKey.fullScreenGestureReverse, - defaultVal: false, - ), - const SwitchModel( - title: '全屏展示点赞/投币/收藏等操作按钮', - leading: Icon(MdiIcons.dotsHorizontalCircleOutline), - setKey: SettingBoxKey.showFSActionItem, - defaultVal: true, - ), const SwitchModel( title: '观看人数', subtitle: '展示同时在看人数', @@ -222,28 +66,6 @@ List get playSettings => [ setKey: SettingBoxKey.enableOnlineTotal, defaultVal: false, ), - NormalModel( - title: '默认全屏方向', - leading: const Icon(Icons.open_with_outlined), - getSubtitle: () => '当前全屏方向:${Pref.fullScreenMode.desc}', - onTap: _showFullScreenModeDialog, - ), - NormalModel( - title: '底部进度条展示', - leading: const Icon(Icons.border_bottom_outlined), - getSubtitle: () => '当前展示方式:${Pref.btmProgressBehavior.desc}', - onTap: _showProgressBehaviorDialog, - ), - if (PlatformUtils.isMobile) - SwitchModel( - title: '后台音频服务', - subtitle: '避免画中画没有播放暂停功能', - leading: const Icon(Icons.volume_up_outlined), - setKey: SettingBoxKey.enableBackgroundPlay, - defaultVal: true, - onChanged: (value) => - videoPlayerServiceHandler!.enableBackgroundPlay = value, - ), PopupModel( title: '播放顺序', leading: const Icon(Icons.repeat), @@ -253,89 +75,4 @@ List get playSettings => [ .put(VideoBoxKey.playRepeat, value.index) .whenComplete(setState), ), - const SwitchModel( - title: '播放器设置仅对当前生效', - subtitle: '弹幕、字幕及部分设置中没有的设置除外', - leading: Icon(Icons.video_settings_outlined), - setKey: SettingBoxKey.tempPlayerConf, - defaultVal: false, - ), ]; - -Future _showSubtitleDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '字幕选择偏好', - value: Pref.subtitlePreferenceV2, - values: SubtitlePrefType.values.map((e) => (e, e.desc)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put( - SettingBoxKey.subtitlePreferenceV2, - res.index, - ); - setState(); - } -} - -Future _showSuperChatDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: 'SuperChat (醒目留言) 显示类型', - value: Pref.superChatType, - values: SuperChatType.values.map((e) => (e, e.title)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.superChatType, res.index); - setState(); - } -} - -Future _showFullScreenModeDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '默认全屏方向', - value: Pref.fullScreenMode, - values: FullScreenMode.values.map((e) => (e, e.desc)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.fullScreenMode, res.index); - setState(); - } -} - -Future _showProgressBehaviorDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '底部进度条展示', - value: Pref.btmProgressBehavior, - values: BtmProgressBehavior.values.map((e) => (e, e.desc)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put( - SettingBoxKey.btmProgressBehavior, - res.index, - ); - setState(); - } -} diff --git a/lib/pages/setting/models/recommend_settings.dart b/lib/pages/setting/models/recommend_settings.dart deleted file mode 100644 index e32f117cb..000000000 --- a/lib/pages/setting/models/recommend_settings.dart +++ /dev/null @@ -1,103 +0,0 @@ -import 'package:PiliPlus/http/video.dart'; -import 'package:PiliPlus/pages/rcmd/controller.dart'; -import 'package:PiliPlus/pages/setting/models/model.dart'; -import 'package:PiliPlus/utils/recommend_filter.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -List get recommendSettings => [ - const SwitchModel( - title: '首页使用app端推荐', - subtitle: '若web端推荐不太符合预期,可尝试切换至app端推荐', - leading: Icon(Icons.model_training_outlined), - setKey: SettingBoxKey.appRcmd, - defaultVal: true, - needReboot: true, - ), - SwitchModel( - title: '保留首页推荐刷新', - subtitle: '下拉刷新时保留上次内容', - leading: const Icon(Icons.refresh), - setKey: SettingBoxKey.enableSaveLastData, - defaultVal: true, - onChanged: (value) { - try { - Get.find() - ..enableSaveLastData = value - ..lastRefreshAt = null; - } catch (e) { - if (kDebugMode) debugPrint('$e'); - } - }, - ), - SwitchModel( - title: '显示上次看到位置提示', - subtitle: '保留上次推荐时,在上次刷新位置显示提示', - leading: const Icon(Icons.tips_and_updates_outlined), - setKey: SettingBoxKey.savedRcmdTip, - defaultVal: true, - onChanged: (value) { - try { - Get.find() - ..savedRcmdTip = value - ..lastRefreshAt = null; - } catch (e) { - if (kDebugMode) debugPrint('$e'); - } - }, - ), - getVideoFilterSelectModel( - title: '点赞率', - suffix: '%', - key: SettingBoxKey.minLikeRatioForRecommend, - values: [0, 1, 2, 3, 4], - onChanged: (value) => RecommendFilter.minLikeRatioForRecommend = value, - ), - getBanWordModel( - title: '标题关键词过滤', - key: SettingBoxKey.banWordForRecommend, - onChanged: (value) { - RecommendFilter.rcmdRegExp = value; - RecommendFilter.enableFilter = value.pattern.isNotEmpty; - }, - ), - getBanWordModel( - title: 'App推荐/热门/排行榜: 视频分区关键词过滤', - key: SettingBoxKey.banWordForZone, - onChanged: (value) { - VideoHttp.zoneRegExp = value; - VideoHttp.enableFilter = value.pattern.isNotEmpty; - }, - ), - getVideoFilterSelectModel( - title: '视频时长', - suffix: 's', - key: SettingBoxKey.minDurationForRcmd, - values: [0, 30, 60, 90, 120], - onChanged: (value) => RecommendFilter.minDurationForRcmd = value, - ), - getVideoFilterSelectModel( - title: '播放量', - key: SettingBoxKey.minPlayForRcmd, - values: [0, 50, 100, 500, 1000], - onChanged: (value) => RecommendFilter.minPlayForRcmd = value, - ), - SwitchModel( - title: '已关注UP豁免推荐过滤', - subtitle: '推荐中已关注用户发布的内容不会被过滤', - leading: const Icon(Icons.favorite_border_outlined), - setKey: SettingBoxKey.exemptFilterForFollowed, - defaultVal: true, - onChanged: (value) => RecommendFilter.exemptFilterForFollowed = value, - ), - SwitchModel( - title: '过滤器也应用于相关视频', - subtitle: '视频详情页的相关视频也进行过滤¹', - leading: const Icon(Icons.explore_outlined), - setKey: SettingBoxKey.applyFilterToRelatedVideos, - defaultVal: true, - onChanged: (value) => RecommendFilter.applyFilterToRelatedVideos = value, - ), -]; diff --git a/lib/pages/setting/models/style_settings.dart b/lib/pages/setting/models/style_settings.dart index 51830e990..371299416 100644 --- a/lib/pages/setting/models/style_settings.dart +++ b/lib/pages/setting/models/style_settings.dart @@ -1,15 +1,9 @@ -import 'dart:io'; import 'dart:math' as math; import 'package:PiliPlus/common/widgets/color_palette.dart'; -import 'package:PiliPlus/common/widgets/scale_app.dart'; -import 'package:PiliPlus/common/widgets/stateful_builder.dart'; -import 'package:PiliPlus/models/common/bar_hide_type.dart'; import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; -import 'package:PiliPlus/models/common/home_tab_type.dart'; import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; -import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/models/common/theme/theme_color_type.dart'; import 'package:PiliPlus/models/common/theme/theme_type.dart'; import 'package:PiliPlus/pages/main/controller.dart'; @@ -20,13 +14,9 @@ import 'package:PiliPlus/pages/setting/widgets/multi_select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart'; import 'package:PiliPlus/pages/setting/widgets/slider_dialog.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; -import 'package:PiliPlus/utils/extension/file_ext.dart'; -import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; -import 'package:PiliPlus/utils/path_utils.dart'; -import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -36,26 +26,8 @@ import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; -import 'package:path/path.dart' as path; List get styleSettings => [ - if (PlatformUtils.isDesktop) ...[ - const SwitchModel( - title: '显示窗口标题栏', - leading: Icon(Icons.window), - setKey: SettingBoxKey.showWindowTitleBar, - defaultVal: true, - needReboot: true, - ), - const SwitchModel( - title: '显示托盘图标', - leading: Icon(Icons.donut_large_rounded), - setKey: SettingBoxKey.showTrayIcon, - defaultVal: true, - needReboot: true, - ), - ], - if (Platform.isLinux) _useSSDModel(), SwitchModel( title: '横屏适配', subtitle: '启用横屏布局与逻辑,平板、折叠屏等可开启;建议全屏方向设为【不改变当前方向】', @@ -70,12 +42,6 @@ List get styleSettings => [ } }, ), - NormalModel( - title: '界面缩放', - getSubtitle: () => '当前缩放比例:${Pref.uiScale.toStringAsFixed(2)}', - leading: const Icon(Icons.zoom_in_outlined), - onTap: _showUiScaleDialog, - ), NormalModel( title: '页面过渡动画', leading: const Icon(Icons.animation), @@ -96,18 +62,6 @@ List get styleSettings => [ '当前: 主页${Pref.recommendCardWidth.toInt()}dp 其他${Pref.smallCardWidth.toInt()}dp,屏幕宽度:${MediaQuery.widthOf(Get.context!).toPrecision(2)}dp。宽度越小列数越多。', onTap: _showCardWidthDialog, ), - const SwitchModel( - title: '播放页移除安全边距', - leading: Icon(Icons.fit_screen_outlined), - setKey: SettingBoxKey.removeSafeArea, - defaultVal: false, - ), - const SwitchModel( - title: '视频播放页使用深色主题', - leading: Icon(Icons.dark_mode_outlined), - setKey: SettingBoxKey.darkVideoPage, - defaultVal: false, - ), SwitchModel( title: '动态页启用瀑布流', subtitle: '关闭会显示为单列', @@ -122,20 +76,6 @@ List get styleSettings => [ getSubtitle: () => '当前:${Pref.upPanelPosition.label}', onTap: _showUpPosDialog, ), - const SwitchModel( - title: '动态页显示所有已关注UP主', - leading: Icon(Icons.people_alt_outlined), - setKey: SettingBoxKey.dynamicsShowAllFollowedUp, - defaultVal: false, - needReboot: true, - ), - const SwitchModel( - title: '动态页展开正在直播UP列表', - leading: Icon(Icons.live_tv), - setKey: SettingBoxKey.expandDynLivePanel, - defaultVal: false, - needReboot: true, - ), NormalModel( title: '动态未读标记', leading: const Icon(Icons.motion_photos_on_outlined), @@ -155,28 +95,6 @@ List get styleSettings => [ getSubtitle: () => '当前消息类型:${Pref.msgUnReadTypeV2.map((item) => item.title).join('、')}', ), - NormalModel( - onTap: _showBarHideTypeDialog, - title: '顶/底栏收起类型', - leading: const Icon(MdiIcons.arrowExpandVertical), - getSubtitle: () => '当前:${Pref.barHideType.label}', - ), - SwitchModel( - title: '首页顶栏收起', - subtitle: '首页列表滑动时,收起顶栏', - leading: const Icon(Icons.vertical_align_top_outlined), - setKey: SettingBoxKey.hideTopBar, - defaultVal: PlatformUtils.isMobile, - needReboot: true, - ), - SwitchModel( - title: '首页底栏收起', - subtitle: '首页列表滑动时,收起底栏', - leading: const Icon(Icons.vertical_align_bottom_outlined), - setKey: SettingBoxKey.hideBottomBar, - defaultVal: PlatformUtils.isMobile, - needReboot: true, - ), NormalModel( onTap: (context, setState) => _showQualityDialog( context: context, @@ -220,17 +138,6 @@ List get styleSettings => [ title: '主题模式', getSubtitle: () => '当前模式:${Pref.themeType.desc}', ), - SwitchModel( - leading: const Icon(Icons.invert_colors), - title: '纯黑主题', - setKey: SettingBoxKey.isPureBlackTheme, - defaultVal: false, - onChanged: (value) { - if (ThemeUtils.isDarkMode || Pref.darkVideoPage) { - Get.updateMyAppTheme(); - } - }, - ), NormalModel( onTap: (context, setState) => Get.toNamed('/colorSetting'), leading: const Icon(Icons.color_lens_outlined), @@ -248,65 +155,11 @@ List get styleSettings => [ ), ), ), - NormalModel( - leading: const Icon(Icons.home_outlined), - title: '默认启动页', - getSubtitle: () => '当前启动页:${Pref.defaultHomePage.label}', - onTap: _showDefHomeDialog, - ), const NormalModel( title: '滑动动画弹簧参数', leading: Icon(Icons.chrome_reader_mode_outlined), onTap: _showSpringDialog, ), - NormalModel( - onTap: (context, setState) async { - final res = await Get.toNamed('/fontSizeSetting'); - if (res != null) { - setState(); - } - }, - title: '字体大小', - leading: const Icon(Icons.format_size_outlined), - getSubtitle: () { - final scale = Pref.defaultTextScale; - return scale == 1.0 ? '默认' : scale.toString(); - }, - ), - NormalModel( - onTap: (context, setState) => Get.toNamed( - '/barSetting', - arguments: { - 'key': SettingBoxKey.tabBarSort, - 'defaultBars': HomeTabType.values, - 'title': '首页标签页', - }, - ), - title: '首页标签页', - subtitle: '删除或调换首页标签页', - leading: const Icon(Icons.toc_outlined), - ), - NormalModel( - onTap: (context, setState) => Get.toNamed( - '/barSetting', - arguments: { - 'key': SettingBoxKey.navBarSort, - 'defaultBars': NavigationBarType.values, - 'title': 'Navbar', - }, - ), - title: 'Navbar编辑', - subtitle: '删除或调换Navbar', - leading: const Icon(Icons.toc_outlined), - ), - SwitchModel( - title: '返回时直接退出', - subtitle: '开启后在主页任意tab按返回键都直接退出,关闭则先回到Navbar的第一个tab', - leading: const Icon(Icons.exit_to_app_outlined), - setKey: SettingBoxKey.directExitOnBack, - defaultVal: false, - onChanged: (value) => Get.find().directExitOnBack = value, - ), ]; void _showQualityDialog({ @@ -334,107 +187,6 @@ void _showQualityDialog({ }); } -void _showUiScaleDialog( - BuildContext context, - VoidCallback setState, -) { - const minUiScale = 0.5; - const maxUiScale = 2.0; - - double uiScale = Pref.uiScale; - final textController = TextEditingController( - text: uiScale.toStringAsFixed(2), - ); - - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('界面缩放'), - contentPadding: const EdgeInsets.fromLTRB(24, 20, 24, 12), - content: StatefulBuilder( - onDispose: textController.dispose, - builder: (context, setDialogState) => Column( - spacing: 20, - mainAxisSize: MainAxisSize.min, - children: [ - Slider( - padding: .zero, - value: uiScale, - min: minUiScale, - max: maxUiScale, - secondaryTrackValue: 1.0, - divisions: ((maxUiScale - minUiScale) * 20).toInt(), - label: textController.text, - onChanged: (value) => setDialogState(() { - uiScale = value.toPrecision(2); - textController.text = uiScale.toStringAsFixed(2); - }), - ), - TextFormField( - controller: textController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true, - ), - inputFormatters: [ - LengthLimitingTextInputFormatter(4), - FilteringTextInputFormatter.allow(RegExp(r'[\d.]+')), - ], - decoration: const InputDecoration( - labelText: '缩放比例', - hintText: '0.50 - 2.00', - border: OutlineInputBorder(), - ), - onChanged: (value) { - final parsed = double.tryParse(value); - if (parsed != null && - parsed >= minUiScale && - parsed <= maxUiScale) { - setDialogState(() { - uiScale = parsed; - }); - } - }, - ), - ], - ), - ), - actions: [ - TextButton( - onPressed: () { - Navigator.pop(context); - GStorage.setting.delete(SettingBoxKey.uiScale).whenComplete(() { - setState(); - Get.appUpdate(); - ScaledWidgetsFlutterBinding.instance.scaleFactor = 1.0; - }); - }, - child: const Text('重置'), - ), - TextButton( - onPressed: () => Navigator.pop(context), - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () { - Navigator.pop(context); - GStorage.setting.put(SettingBoxKey.uiScale, uiScale).whenComplete( - () { - setState(); - Get.appUpdate(); - ScaledWidgetsFlutterBinding.instance.scaleFactor = uiScale; - }, - ); - }, - child: const Text('确定'), - ), - ], - ), - ); -} - void _showSpringDialog(BuildContext context, _) { final List springDescription = Pref.springDescription .map((i) => i.toString()) @@ -729,69 +481,3 @@ Future _showThemeTypeDialog( setState(); } } - -Future _showDefHomeDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '首页启动页', - value: Pref.defaultHomePage, - values: NavigationBarType.values.map((e) => (e, e.label)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.defaultHomePage, res.index); - SmartDialog.showToast('设置成功,重启生效'); - setState(); - } -} - -Future _showBarHideTypeDialog( - BuildContext context, - VoidCallback setState, -) async { - final res = await showDialog( - context: context, - builder: (context) => SelectDialog( - title: '顶/底栏收起类型', - value: Pref.barHideType, - values: BarHideType.values.map((e) => (e, e.label)).toList(), - ), - ); - if (res != null) { - await GStorage.setting.put(SettingBoxKey.barHideType, res.index); - SmartDialog.showToast('重启生效'); - setState(); - } -} - -NormalModel _useSSDModel() { - final file = File(path.join(appSupportDirPath, 'use_ssd')); - void onChanged(BuildContext context, VoidCallback setState) { - (file.existsSync() ? file.tryDel() : file.create()).whenComplete(() { - if (context.mounted) { - setState(); - } - }); - } - - return NormalModel( - title: '使用SSD(Server-Side Decoration)', - leading: const Icon(Icons.web_asset), - onTap: onChanged, - getTrailing: (theme) => Builder( - builder: (context) => Transform.scale( - scale: 0.8, - alignment: .centerRight, - child: Switch( - value: file.existsSync(), - onChanged: (_) => - onChanged(context, (context as Element).markNeedsBuild), - ), - ), - ), - ); -} diff --git a/lib/pages/setting/models/video_settings.dart b/lib/pages/setting/models/video_settings.dart index 09dd5ddb9..897c1db7a 100644 --- a/lib/pages/setting/models/video_settings.dart +++ b/lib/pages/setting/models/video_settings.dart @@ -16,44 +16,10 @@ import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/video_utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart' show FilteringTextInputFormatter; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; List get videoSettings => [ - const SwitchModel( - title: '开启硬解', - subtitle: '以较低功耗播放视频,若异常卡死请关闭', - leading: Icon(Icons.flash_on_outlined), - setKey: SettingBoxKey.enableHA, - defaultVal: true, - ), - const SwitchModel( - title: '免登录1080P', - subtitle: '免登录查看1080P视频', - leading: Icon(Icons.hd_outlined), - setKey: SettingBoxKey.p1080, - defaultVal: true, - ), - NormalModel( - title: 'B站定向流量支持', - subtitle: '若套餐含B站定向流量,则会自动使用。可查阅运营商的流量记录确认。', - leading: const Icon(Icons.perm_data_setting_outlined), - getTrailing: (theme) => IgnorePointer( - child: Transform.scale( - scale: 0.8, - alignment: Alignment.centerRight, - child: Switch( - value: true, - onChanged: (_) {}, - thumbIcon: WidgetStateProperty.all( - const Icon(Icons.lock_outline_rounded), - ), - ), - ), - ), - ), NormalModel( title: 'CDN 设置', leading: const Icon(MdiIcons.cloudPlusOutline), @@ -74,14 +40,6 @@ List get videoSettings => [ setKey: SettingBoxKey.cdnSpeedTest, defaultVal: true, ), - SwitchModel( - title: '音频不跟随 CDN 设置', - subtitle: '直接采用备用 URL,可解决部分视频无声', - leading: const Icon(MdiIcons.musicNotePlus), - setKey: SettingBoxKey.disableAudioCDN, - defaultVal: false, - onChanged: (value) => VideoUtils.disableAudioCDN = value, - ), NormalModel( title: '默认画质', leading: const Icon(Icons.video_settings_outlined), @@ -144,19 +102,6 @@ List get videoSettings => [ getSubtitle: () => '当前:${Pref.audioOutput}', onTap: _showAudioOutputDialog, ), - const SwitchModel( - title: '扩大缓冲区', - leading: Icon(Icons.storage_outlined), - subtitle: '默认缓冲区为视频4MB/直播16MB,开启后为32MB/64MB,加载时间变长', - setKey: SettingBoxKey.expandBuffer, - defaultVal: false, - ), - NormalModel( - title: '自动同步', - leading: const Icon(Icons.sync_rounded), - getSubtitle: () => '当前:${Pref.autosync}(此项即mpv的--autosync)', - onTap: _showAutoSyncDialog, - ), NormalModel( title: '视频同步', leading: const Icon(Icons.view_timeline_outlined), @@ -454,43 +399,3 @@ Future _showHwDecDialog( setState(); } } - -void _showAutoSyncDialog(BuildContext context, VoidCallback setState) { - String autosync = Pref.autosync.toString(); - showDialog( - context: context, - builder: (context) => AlertDialog( - title: const Text('自动同步'), - content: TextFormField( - autofocus: true, - initialValue: autosync, - keyboardType: TextInputType.number, - onChanged: (value) => autosync = value, - inputFormatters: [FilteringTextInputFormatter.digitsOnly], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: ColorScheme.of(context).outline), - ), - ), - TextButton( - onPressed: () async { - try { - // validate - int.parse(autosync); - Get.back(); - await GStorage.setting.put(SettingBoxKey.autosync, autosync); - setState(); - } catch (e) { - SmartDialog.showToast(e.toString()); - } - }, - child: const Text('确定'), - ), - ], - ), - ); -} diff --git a/lib/pages/setting/pages/bar_set.dart b/lib/pages/setting/pages/bar_set.dart index e2168a497..398812740 100644 --- a/lib/pages/setting/pages/bar_set.dart +++ b/lib/pages/setting/pages/bar_set.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/common/widgets/reorder_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/models/common/enum_with_label.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:flutter/material.dart'; @@ -60,8 +61,7 @@ class _BarSetPageState extends State with ReorderMixin { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text('$title编辑'), actions: [ @@ -76,7 +76,7 @@ class _BarSetPageState extends State with ReorderMixin { footer: Padding( padding: MediaQuery.viewPaddingOf(context).copyWith(top: 0, left: 0) + - const EdgeInsets.only(right: 34, top: 10), + const .only(right: 34, top: 10), child: const Align( alignment: Alignment.centerRight, child: Text('*长按拖动排序'), diff --git a/lib/pages/setting/pages/color_select.dart b/lib/pages/setting/pages/color_select.dart index 6aa14fe3b..fbec2f178 100644 --- a/lib/pages/setting/pages/color_select.dart +++ b/lib/pages/setting/pages/color_select.dart @@ -1,6 +1,7 @@ import 'dart:io' show Platform; import 'package:PiliPlus/common/widgets/color_palette.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/main.dart' show MyApp; import 'package:PiliPlus/models/common/nav_bar_config.dart'; import 'package:PiliPlus/models/common/theme/theme_color_type.dart'; @@ -65,10 +66,10 @@ class _ColorSelectPageState extends State { final padding = MediaQuery.viewPaddingOf( context, ).copyWith(top: 0, bottom: 0); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('选择应用主题')), body: ListView( + padding: .only(bottom: MediaQuery.viewPaddingOf(context).bottom), children: [ ListTile( onTap: () async { diff --git a/lib/pages/setting/pages/font_size_select.dart b/lib/pages/setting/pages/font_size_select.dart deleted file mode 100644 index f71d5260b..000000000 --- a/lib/pages/setting/pages/font_size_select.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:PiliPlus/utils/extension/num_ext.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -class FontSizeSelectPage extends StatefulWidget { - const FontSizeSelectPage({super.key}); - - @override - State createState() => _FontSizeSelectPageState(); -} - -class _FontSizeSelectPageState extends State { - List list = List.generate(16, (index) => 0.85 + index * 0.05); - late double minSize = list.first; - late double maxSize = list.last; - double currentSize = Pref.defaultTextScale; - - void setFontSize() { - GStorage.setting.put(SettingBoxKey.defaultTextScale, currentSize); - Get - ..back(result: currentSize) - ..appUpdate(); - } - - @override - Widget build(BuildContext context) { - final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - actions: [ - TextButton( - onPressed: () { - currentSize = 1.0; - setFontSize(); - }, - child: const Text('重置'), - ), - TextButton(onPressed: setFontSize, child: const Text('确定')), - const SizedBox(width: 12), - ], - ), - body: SafeArea( - child: Column( - children: [ - Expanded( - child: Center( - child: Text( - '当前字体大小:${currentSize == 1.0 ? '默认' : currentSize}', - style: TextStyle(fontSize: 14 * currentSize), - ), - ), - ), - Container( - padding: const EdgeInsets.all(20), - decoration: BoxDecoration( - border: Border( - top: BorderSide( - color: theme.colorScheme.primary.withValues(alpha: 0.3), - ), - ), - color: theme.colorScheme.surface, - ), - child: Row( - children: [ - const Text('小'), - Expanded( - child: Slider( - min: minSize, - value: currentSize, - max: maxSize, - divisions: list.length - 1, - secondaryTrackValue: 1, - onChanged: (double val) { - currentSize = val.toPrecision(2); - setState(() {}); - }, - ), - ), - const SizedBox(width: 5), - const Text( - '大', - style: TextStyle(fontSize: 20), - ), - ], - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/pages/setting/pages/fullscreen_sc_size.dart b/lib/pages/setting/pages/fullscreen_sc_size.dart deleted file mode 100644 index 220da117e..000000000 --- a/lib/pages/setting/pages/fullscreen_sc_size.dart +++ /dev/null @@ -1,139 +0,0 @@ -import 'dart:io' show Platform; -import 'dart:math' as math; - -import 'package:PiliPlus/common/widgets/custom_icon.dart'; -import 'package:PiliPlus/common/widgets/extra_hittest_stack.dart'; -import 'package:PiliPlus/models_new/live/live_superchat/item.dart'; -import 'package:PiliPlus/pages/live_room/superchat/superchat_card.dart'; -import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; -import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/material.dart'; - -const kFullScreenSCWidth = 255.0; - -class FullScreenScSize extends StatefulWidget { - const FullScreenScSize({super.key}); - - @override - State createState() => _FullScreenScSizeState(); -} - -class _FullScreenScSizeState extends State { - double _width = Pref.fullScreenSCWidth; - final _randomSC = SuperChatItem.random; - late EdgeInsets _padding; - late ColorScheme _colorScheme; - - @override - void initState() { - super.initState(); - if (Platform.isAndroid) { - landscapeLeftMode(); - } else if (Platform.isIOS) { - landscapeRightMode(); - } - } - - @override - void dispose() { - if (PlatformUtils.isMobile) { - if (Pref.horizontalScreen) { - fullMode(); - } else { - portraitUpMode(); - } - } - super.dispose(); - } - - @override - void didChangeDependencies() { - super.didChangeDependencies(); - final padding = MediaQuery.viewPaddingOf(context); - _padding = .only( - right: padding.right + 17, - left: padding.left + 25, - bottom: padding.bottom + 25, - ); - _colorScheme = ColorScheme.of(context); - } - - void _onReset() { - _width = kFullScreenSCWidth; - GStorage.setting.delete(SettingBoxKey.fullScreenSCWidth); - setState(() {}); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: const Text('全屏 SC 大小设置'), - actions: [ - TextButton(onPressed: _onReset, child: const Text('重置')), - ], - ), - body: Padding(padding: _padding, child: _buildBody), - ); - } - - Widget get _buildBody { - return Align( - alignment: .bottomLeft, - child: ExtraHitTestStack( - clipBehavior: .none, - children: [ - SizedBox( - width: _width, - child: IgnorePointer( - child: SuperChatCard( - item: _randomSC, - persistentSC: true, - ), - ), - ), - Positioned( - top: 0, - bottom: 0, - right: -17, - width: 34, - child: MouseRegion( - cursor: SystemMouseCursors.resizeRight, - child: GestureDetector( - behavior: .opaque, - onHorizontalDragUpdate: _onHorizontalDragUpdate, - onHorizontalDragEnd: _onHorizontalDragEnd, - child: DecoratedBox( - decoration: BoxDecoration( - shape: .circle, - color: _colorScheme.secondaryContainer.withValues( - alpha: .8, - ), - ), - child: Icon( - size: 18, - CustomIcons.open_in_full_rotate_45, - color: _colorScheme.onSecondaryContainer, - ), - ), - ), - ), - ), - ], - ), - ); - } - - void _onHorizontalDragUpdate(DragUpdateDetails details) { - _width = math.max(25.0, _width + details.delta.dx); - setState(() {}); - } - - void _onHorizontalDragEnd(DragEndDetails details) { - GStorage.setting.put(SettingBoxKey.fullScreenSCWidth, _width); - } -} diff --git a/lib/pages/setting/pages/logs.dart b/lib/pages/setting/pages/logs.dart index be6e52a50..51f42af7b 100644 --- a/lib/pages/setting/pages/logs.dart +++ b/lib/pages/setting/pages/logs.dart @@ -1,12 +1,11 @@ import 'dart:async'; import 'dart:convert'; -import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/services/logger.dart'; import 'package:PiliPlus/utils/date_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; @@ -17,8 +16,6 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -const _snackBarDisplayDuration = Duration(seconds: 1); - class LogsPage extends StatefulWidget { const LogsPage({super.key}); @@ -75,29 +72,13 @@ class _LogsPageState extends State { } void copyLogs() { - Utils.copyText( - '```\n${logsContent.join('\n\n')}```', - needToast: false, - ); - if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('复制成功'), - duration: _snackBarDisplayDuration, - ), - ); - } + Utils.copyText('```\n${logsContent.join('\n\n')}```'); } Future clearLogs() async { if (await LoggerUtils.clearLogs()) { if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('已清空'), - duration: _snackBarDisplayDuration, - ), - ); + SmartDialog.showToast('已清空'); logsContent.clear(); setState(() {}); } @@ -107,8 +88,7 @@ class _LogsPageState extends State { @override Widget build(BuildContext context) { final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('日志'), actions: [ @@ -140,11 +120,6 @@ class _LogsPageState extends State { onTap: copyLogs, child: const Text('复制日志'), ), - PopupMenuItem( - onTap: () => - PageUtils.launchURL('${Constants.sourceCodeUrl}/issues'), - child: const Text('错误反馈'), - ), PopupMenuItem( onTap: () { latestLog = null; @@ -334,15 +309,7 @@ class ReportCard extends StatelessWidget { iconButton( size: 34, iconSize: 22, - onPressed: () { - Utils.copyText('```\n$report```', needToast: false); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text('已将 $dateTime 复制至剪贴板'), - duration: _snackBarDisplayDuration, - ), - ); - }, + onPressed: () => Utils.copyText('```\n$report```'), icon: const Icon( Icons.copy_outlined, size: 16, diff --git a/lib/pages/setting/pages/play_speed_set.dart b/lib/pages/setting/pages/play_speed_set.dart index aa67061b3..7eab065a2 100644 --- a/lib/pages/setting/pages/play_speed_set.dart +++ b/lib/pages/setting/pages/play_speed_set.dart @@ -1,8 +1,8 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; -import 'package:PiliPlus/pages/setting/widgets/switch_item.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; @@ -24,7 +24,6 @@ class _PlaySpeedPageState extends State { late double playSpeedDefault = Pref.playSpeedDefault; late double longPressSpeedDefault = Pref.longPressSpeedDefault; late List speedList = Pref.speedList; - late bool enableAutoLongPressSpeed = Pref.enableAutoLongPressSpeed; List<({int id, String title, Icon icon})> sheetMenu = [ ( id: 1, @@ -130,9 +129,6 @@ class _PlaySpeedPageState extends State { const SizedBox(height: 10), ...sheetMenu.map( (item) => ListTile( - enabled: enableAutoLongPressSpeed && item.id == 2 - ? false - : true, onTap: () { Get.back(); menuAction(index, item.id); @@ -183,8 +179,7 @@ class _PlaySpeedPageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('倍速设置'), actions: [ @@ -201,6 +196,7 @@ class _PlaySpeedPageState extends State { ), body: ViewSafeArea( child: ListView( + padding: .zero, children: [ Padding( padding: const EdgeInsets.only( @@ -218,19 +214,10 @@ class _PlaySpeedPageState extends State { title: const Text('默认倍速'), subtitle: Text(playSpeedDefault.toString()), ), - SetSwitchItem( - title: '动态长按倍速', - subtitle: '根据默认倍速长按时自动双倍', - setKey: SettingBoxKey.enableAutoLongPressSpeed, - defaultVal: enableAutoLongPressSpeed, - onChanged: (val) => - setState(() => enableAutoLongPressSpeed = val), + ListTile( + title: const Text('默认长按倍速'), + subtitle: Text(longPressSpeedDefault.toString()), ), - if (!enableAutoLongPressSpeed) - ListTile( - title: const Text('默认长按倍速'), - subtitle: Text(longPressSpeedDefault.toString()), - ), Padding( padding: const EdgeInsets.only( left: 14, diff --git a/lib/pages/setting/play_setting.dart b/lib/pages/setting/play_setting.dart index 6c97855a5..27f18fd0d 100644 --- a/lib/pages/setting/play_setting.dart +++ b/lib/pages/setting/play_setting.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/setting/models/play_settings.dart'; import 'package:flutter/material.dart'; @@ -17,8 +18,7 @@ class _PlaySettingState extends State { Widget build(BuildContext context) { final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: showAppBar ? AppBar(title: const Text('播放器设置')) : null, body: ListView.builder( padding: EdgeInsets.only( diff --git a/lib/pages/setting/privacy_setting.dart b/lib/pages/setting/privacy_setting.dart index f2ff30bb3..7646919ed 100644 --- a/lib/pages/setting/privacy_setting.dart +++ b/lib/pages/setting/privacy_setting.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/setting/models/privacy_settings.dart'; import 'package:flutter/material.dart'; @@ -17,11 +18,10 @@ class _PrivacySettingState extends State { Widget build(BuildContext context) { final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: showAppBar ? AppBar(title: const Text('隐私设置')) : null, body: ListView( - padding: EdgeInsets.only( + padding: .only( left: showAppBar ? padding.left : 0, right: showAppBar ? padding.right : 0, bottom: padding.bottom + 100, diff --git a/lib/pages/setting/recommend_setting.dart b/lib/pages/setting/recommend_setting.dart deleted file mode 100644 index d77315fe3..000000000 --- a/lib/pages/setting/recommend_setting.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; -import 'package:PiliPlus/pages/setting/models/recommend_settings.dart'; -import 'package:flutter/material.dart' hide ListTile; - -class RecommendSetting extends StatefulWidget { - const RecommendSetting({super.key, this.showAppBar = true}); - - final bool showAppBar; - - @override - State createState() => _RecommendSettingState(); -} - -class _RecommendSettingState extends State { - final list = recommendSettings; - - @override - Widget build(BuildContext context) { - final showAppBar = widget.showAppBar; - final padding = MediaQuery.viewPaddingOf(context); - final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: widget.showAppBar ? AppBar(title: const Text('推荐流设置')) : null, - body: ListView( - padding: EdgeInsets.only( - left: showAppBar ? padding.left : 0, - right: showAppBar ? padding.right : 0, - bottom: padding.bottom + 100, - ), - children: [ - ...list.take(4).map((item) => item.widget), - const Divider(height: 1), - ...list.skip(4).map((item) => item.widget), - ListTile( - dense: true, - subtitle: Text( - '¹ 由于接口未提供关注信息,无法豁免相关视频中的已关注Up。\n\n' - '* 其它(如热门视频、手动搜索、链接跳转等)均不受过滤器影响。\n' - '* 设定较严苛的条件可导致推荐项数锐减或多次请求,请酌情选择。\n' - '* 后续可能会增加更多过滤条件,敬请期待。', - style: theme.textTheme.labelSmall!.copyWith( - color: theme.colorScheme.outline.withValues(alpha: 0.7), - ), - ), - ), - ], - ), - ); - } -} diff --git a/lib/pages/setting/style_setting.dart b/lib/pages/setting/style_setting.dart index 1b13350d7..ad16a45af 100644 --- a/lib/pages/setting/style_setting.dart +++ b/lib/pages/setting/style_setting.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/setting/models/style_settings.dart'; import 'package:flutter/material.dart'; @@ -17,8 +18,7 @@ class _StyleSettingState extends State { Widget build(BuildContext context) { final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: showAppBar ? AppBar(title: const Text('外观设置')) : null, body: ListView.builder( padding: EdgeInsets.only( diff --git a/lib/pages/setting/video_setting.dart b/lib/pages/setting/video_setting.dart index 495720aa6..309bdbee9 100644 --- a/lib/pages/setting/video_setting.dart +++ b/lib/pages/setting/video_setting.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/setting/models/video_settings.dart'; import 'package:flutter/material.dart'; @@ -17,8 +18,7 @@ class _VideoSettingState extends State { Widget build(BuildContext context) { final showAppBar = widget.showAppBar; final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: showAppBar ? AppBar(title: const Text('音视频设置')) : null, body: ListView.builder( padding: EdgeInsets.only( diff --git a/lib/pages/setting/view.dart b/lib/pages/setting/view.dart index fb94fa9c5..eed2c3e18 100644 --- a/lib/pages/setting/view.dart +++ b/lib/pages/setting/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/flutter/list_tile.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/http/login.dart'; import 'package:PiliPlus/models/common/setting_type.dart'; @@ -7,18 +8,15 @@ import 'package:PiliPlus/pages/login/controller.dart'; import 'package:PiliPlus/pages/setting/extra_setting.dart'; import 'package:PiliPlus/pages/setting/play_setting.dart'; import 'package:PiliPlus/pages/setting/privacy_setting.dart'; -import 'package:PiliPlus/pages/setting/recommend_setting.dart'; import 'package:PiliPlus/pages/setting/style_setting.dart'; import 'package:PiliPlus/pages/setting/video_setting.dart'; import 'package:PiliPlus/pages/setting/widgets/multi_select_dialog.dart'; -import 'package:PiliPlus/pages/webdav/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:flutter/material.dart' hide ListTile; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class _SettingsModel { final SettingType type; @@ -50,11 +48,6 @@ class _SettingPageState extends State { subtitle: '黑名单、无痕模式', icon: Icon(Icons.privacy_tip_outlined), ), - _SettingsModel( - type: SettingType.recommendSetting, - subtitle: '推荐来源(web/app)、刷新保留内容、过滤器', - icon: Icon(Icons.explore_outlined), - ), _SettingsModel( type: SettingType.videoSetting, subtitle: '画质、音质、解码、缓冲、音频输出等', @@ -75,10 +68,6 @@ class _SettingPageState extends State { subtitle: '震动、搜索、收藏、ai、评论、动态、代理、更新检查等', icon: Icon(Icons.extension_outlined), ), - _SettingsModel( - type: SettingType.webdavSetting, - icon: Icon(MdiIcons.databaseCogOutline), - ), _SettingsModel( type: SettingType.about, icon: Icon(Icons.info_outline), @@ -89,11 +78,8 @@ class _SettingPageState extends State { Widget build(BuildContext context) { final theme = Theme.of(context); _isPortrait = MediaQuery.sizeOf(context).isPortrait; - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: _isPortrait ? const Text('设置') : Text(_type.title), - ), + return scaffold( + appBar: AppBar(title: _isPortrait ? const Text('设置') : Text(_type.title)), body: ViewSafeArea( child: _isPortrait ? _buildList(theme) @@ -114,9 +100,6 @@ class _SettingPageState extends State { SettingType.privacySetting => const PrivacySetting( showAppBar: false, ), - SettingType.recommendSetting => const RecommendSetting( - showAppBar: false, - ), SettingType.videoSetting => const VideoSetting( showAppBar: false, ), @@ -129,9 +112,6 @@ class _SettingPageState extends State { SettingType.extraSetting => const ExtraSetting( showAppBar: false, ), - SettingType.webdavSetting => const WebDavSettingPage( - showAppBar: false, - ), SettingType.about => const AboutPage(showAppBar: false), }, ), @@ -171,7 +151,7 @@ class _SettingPageState extends State { color: theme.colorScheme.outline, ); return ListView( - padding: EdgeInsets.only(bottom: padding.bottom + 100), + padding: .only(bottom: padding.bottom + 100), children: [ _buildSearchItem(theme), ..._items diff --git a/lib/pages/settings_search/view.dart b/lib/pages/settings_search/view.dart index ba69b26b5..5fd43c7f4 100644 --- a/lib/pages/settings_search/view.dart +++ b/lib/pages/settings_search/view.dart @@ -1,11 +1,11 @@ import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/pages/search/controller.dart' show DebounceStreamState; import 'package:PiliPlus/pages/setting/models/extra_settings.dart'; import 'package:PiliPlus/pages/setting/models/model.dart'; import 'package:PiliPlus/pages/setting/models/play_settings.dart'; import 'package:PiliPlus/pages/setting/models/privacy_settings.dart'; -import 'package:PiliPlus/pages/setting/models/recommend_settings.dart'; import 'package:PiliPlus/pages/setting/models/style_settings.dart'; import 'package:PiliPlus/pages/setting/models/video_settings.dart'; import 'package:PiliPlus/utils/grid.dart'; @@ -29,7 +29,6 @@ class _SettingsSearchPageState late final _settings = [ ...extraSettings, ...privacySettings, - ...recommendSettings, ...videoSettings, ...playSettings, ...styleSettings, @@ -59,7 +58,7 @@ class _SettingsSearchPageState @override Widget build(BuildContext context) { - return Scaffold( + return scaffold( appBar: AppBar( actions: [ IconButton( diff --git a/lib/pages/space_setting/view.dart b/lib/pages/space_setting/view.dart index 4cfb6555d..35f764e67 100644 --- a/lib/pages/space_setting/view.dart +++ b/lib/pages/space_setting/view.dart @@ -1,6 +1,7 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/space_setting/privacy.dart'; import 'package:PiliPlus/pages/space_setting/controller.dart'; @@ -20,8 +21,7 @@ class _SpaceSettingPageState extends State { @override Widget build(BuildContext context) { final theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('空间设置')), body: Obx(() => _buildBody(theme, _controller.loadingState.value)), ); diff --git a/lib/pages/sponsor_block/block_mixin.dart b/lib/pages/sponsor_block/block_mixin.dart index 907908545..945cda7d7 100644 --- a/lib/pages/sponsor_block/block_mixin.dart +++ b/lib/pages/sponsor_block/block_mixin.dart @@ -24,7 +24,6 @@ mixin BlockConfigMixin { late final enableSponsorBlock = Pref.enableSponsorBlock; late final enableBlock = enableSponsorBlock || enablePgcSkip; late final blockColor = Pref.blockColor; - late final blockLimit = Pref.blockLimit; late final blockSettings = Pref.blockSettings; late final enableList = blockSettings .where((item) => item.second != SkipType.disable) @@ -245,9 +244,6 @@ mixin BlockMixin on GetxController { if (autoPlay && Pref.blockToast) { _showBlockToast('已跳过${item.segmentType.shortTitle}片段'); } - if (isBlock && Pref.blockTrack) { - SponsorBlock.viewedVideoSponsorTime(item.uuid); - } } Future onSkip( diff --git a/lib/pages/sponsor_block/view.dart b/lib/pages/sponsor_block/view.dart index b372b532b..2bfe087b6 100644 --- a/lib/pages/sponsor_block/view.dart +++ b/lib/pages/sponsor_block/view.dart @@ -1,11 +1,10 @@ import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; -import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/sponsor_block.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; -import 'package:PiliPlus/models_new/sponsor_block/user_info.dart'; import 'package:PiliPlus/pages/setting/slide_color_picker.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; @@ -15,7 +14,6 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:crypto/crypto.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show FilteringTextInputFormatter; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:hive_ce/hive.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -30,15 +28,12 @@ class SponsorBlockPage extends StatefulWidget { class _SponsorBlockPageState extends State { final _url = 'https://github.com/hanydd/BilibiliSponsorBlock'; final _textController = TextEditingController(); - double _blockLimit = Pref.blockLimit; final _blockSettings = Pref.blockSettings; final List _blockColor = Pref.blockColor; String _userId = Pref.blockUserID; bool _blockToast = Pref.blockToast; String _blockServer = Pref.blockServer; - bool _blockTrack = Pref.blockTrack; final _serverStatus = Rxn(); - final _userInfo = LoadingState.loading().obs; Box setting = GStorage.setting; @@ -46,7 +41,6 @@ class _SponsorBlockPageState extends State { void initState() { super.initState(); _checkServerStatus(); - _getUserInfo(); } @override @@ -59,77 +53,6 @@ class _SponsorBlockPageState extends State { _serverStatus.value = (await SponsorBlock.uptimeStatus()).isSuccess; } - Future _getUserInfo() async { - _userInfo.value = await SponsorBlock.userInfo(const [ - 'viewCount', - 'minutesSaved', - 'segmentCount', - ], userId: _userId); - } - - Widget _blockLimitItem( - ThemeData theme, - TextStyle titleStyle, - TextStyle subTitleStyle, - ) => Builder( - builder: (context) { - return ListTile( - dense: true, - onTap: () { - _textController.text = _blockLimit.toString(); - showDialog( - context: context, - builder: (_) => AlertDialog( - title: Text('最短片段时长', style: titleStyle), - content: TextFormField( - keyboardType: const TextInputType.numberWithOptions( - decimal: true, - ), - controller: _textController, - autofocus: true, - decoration: const InputDecoration(suffixText: 's'), - inputFormatters: [ - FilteringTextInputFormatter.allow(RegExp(r'[\d\.]+')), - ], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle(color: theme.colorScheme.outline), - ), - ), - TextButton( - onPressed: () { - try { - _blockLimit = double.parse(_textController.text); - Get.back(); - setting.put(SettingBoxKey.blockLimit, _blockLimit); - (context as Element).markNeedsBuild(); - } catch (e) { - SmartDialog.showToast(e.toString()); - } - }, - child: const Text('确定'), - ), - ], - ), - ); - }, - title: Text('最短片段时长', style: titleStyle), - subtitle: Text( - '忽略短于此时长的片段', - style: subTitleStyle, - ), - trailing: Text( - '${_blockLimit}s', - style: const TextStyle(fontSize: 13), - ), - ); - }, - ); - Widget _aboutItem(TextStyle titleStyle, TextStyle subTitleStyle) => ListTile( dense: true, title: Text('关于空降助手', style: titleStyle), @@ -240,72 +163,6 @@ class _SponsorBlockPageState extends State { }, ); - Widget _blockTrackItem( - TextStyle titleStyle, - TextStyle subTitleStyle, - ) => Builder( - builder: (context) { - void update() { - _blockTrack = !_blockTrack; - setting.put(SettingBoxKey.blockTrack, _blockTrack); - (context as Element).markNeedsBuild(); - } - - return ListTile( - dense: true, - onTap: update, - title: Text( - '跳过次数统计跟踪', - style: titleStyle, - ), - subtitle: Text( - // from origin extension - '此功能追踪您跳过了哪些片段,让用户知道他们提交的片段帮助了多少人。同时点赞会作为依据,确保垃圾信息不会污染数据库。在您每次跳过片段时,我们都会向服务器发送一条消息。希望大家开启此项设置,以便得到更准确的统计数据。:)', - style: subTitleStyle, - ), - trailing: Transform.scale( - alignment: Alignment.centerRight, - scale: 0.8, - child: Switch( - value: _blockTrack, - onChanged: (val) => update(), - ), - ), - ); - }, - ); - - Widget _blockUserInfo( - ThemeData theme, - TextStyle titleStyle, - TextStyle subTitleStyle, - ) => Obx( - () { - return ListTile( - dense: true, - onTap: () { - _userInfo.value = LoadingState.loading(); - _getUserInfo(); - }, - title: Text( - '您的信息', - style: titleStyle, - ), - subtitle: switch (_userInfo.value) { - Loading() => const SizedBox.shrink(), - Success(:final response) => Text( - response.toString(), - style: subTitleStyle, - ), - Error(:final errMsg) => Text( - errMsg ?? '服务器错误', - style: subTitleStyle.copyWith(color: theme.colorScheme.error), - ), - }, - ); - }, - ); - Widget _blockServerItem( ThemeData theme, TextStyle titleStyle, @@ -352,7 +209,6 @@ class _SponsorBlockPageState extends State { setting.put(SettingBoxKey.blockServer, _blockServer); Request.accountManager.blockServer = _blockServer; _checkServerStatus(); - _getUserInfo(); (context as Element).markNeedsBuild(); }, child: const Text('确定'), @@ -473,57 +329,40 @@ class _SponsorBlockPageState extends State { color: theme.colorScheme.outline.withValues(alpha: 0.1), ); - final sliverDivider = SliverToBoxAdapter(child: divider); - - final dividerL = SliverToBoxAdapter( - child: Divider( - thickness: 16, - color: theme.colorScheme.outline.withValues(alpha: 0.1), - ), + final dividerLarge = Divider( + thickness: 16, + color: theme.colorScheme.outline.withValues(alpha: 0.1), ); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('空降助手')), - body: CustomScrollView( - slivers: [ - dividerL, - SliverToBoxAdapter(child: _serverStatusItem(theme, titleStyle)), - dividerL, - SliverToBoxAdapter( - child: _blockLimitItem(theme, titleStyle, subTitleStyle), - ), - sliverDivider, - SliverToBoxAdapter(child: _blockToastItem(titleStyle)), - sliverDivider, - SliverToBoxAdapter(child: _blockTrackItem(titleStyle, subTitleStyle)), - sliverDivider, - SliverToBoxAdapter( - child: _blockUserInfo(theme, titleStyle, subTitleStyle), - ), - dividerL, - SliverList.separated( - itemCount: _blockSettings.length, - itemBuilder: (context, index) => - _buildItem(theme, index, _blockSettings[index]), - separatorBuilder: (context, index) => divider, - ), - dividerL, - SliverToBoxAdapter( - child: _userIdItem(theme, titleStyle, subTitleStyle), - ), - sliverDivider, - SliverToBoxAdapter( - child: _blockServerItem(theme, titleStyle, subTitleStyle), - ), - dividerL, - SliverToBoxAdapter(child: _aboutItem(titleStyle, subTitleStyle)), - dividerL, - SliverToBoxAdapter( - child: SizedBox( - height: 55 + MediaQuery.viewPaddingOf(context).bottom, - ), - ), + body: ListView( + padding: .only(bottom: 55 + MediaQuery.viewPaddingOf(context).bottom), + children: [ + dividerLarge, + _serverStatusItem(theme, titleStyle), + dividerLarge, + divider, + _blockToastItem(titleStyle), + divider, + divider, + dividerLarge, + ...List.generate( + _blockSettings.length, + (index) => _buildItem(theme, index, _blockSettings[index]), + ) + .expand((e) sync* { + yield divider; + yield e; + }) + .skip(1), + dividerLarge, + _userIdItem(theme, titleStyle, subTitleStyle), + divider, + _blockServerItem(theme, titleStyle, subTitleStyle), + dividerLarge, + _aboutItem(titleStyle, subTitleStyle), + dividerLarge, ], ), ); diff --git a/lib/pages/subscription/view.dart b/lib/pages/subscription/view.dart index 6d9ef4d63..cc61f6dbc 100644 --- a/lib/pages/subscription/view.dart +++ b/lib/pages/subscription/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_sliver_safe_area.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/sub/sub/list.dart'; @@ -21,8 +22,7 @@ class _SubPageState extends State with GridMixin { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('我的订阅')), body: refreshIndicator( onRefresh: _subController.onRefresh, diff --git a/lib/pages/video/ai_conclusion/view.dart b/lib/pages/video/ai_conclusion/view.dart index d91ce23b9..a8850cc4a 100644 --- a/lib/pages/video/ai_conclusion/view.dart +++ b/lib/pages/video/ai_conclusion/view.dart @@ -18,119 +18,6 @@ class AiConclusionPanel extends CommonSlidePage { @override State createState() => _AiDetailState(); - - static Widget buildContent( - BuildContext context, - ThemeData theme, - AiConclusionResult res, { - Key? key, - bool tap = true, - }) { - return CustomScrollView( - key: key, - shrinkWrap: !tap, - physics: const AlwaysScrollableScrollPhysics(), - slivers: [ - if (res.summary?.isNotEmpty == true) ...[ - SliverToBoxAdapter( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 14), - child: selectableText( - res.summary!, - style: const TextStyle( - fontSize: 15, - height: 1.5, - ), - ), - ), - ), - if (res.outline?.isNotEmpty == true) - SliverToBoxAdapter( - child: Divider( - height: 20, - color: theme.dividerColor.withValues(alpha: 0.1), - thickness: 6, - ), - ), - ], - if (res.outline?.isNotEmpty == true) - SliverPadding( - padding: EdgeInsets.only( - left: 14, - right: 14, - bottom: !tap ? 0 : MediaQuery.viewPaddingOf(context).bottom + 100, - ), - sliver: SliverList.builder( - itemCount: res.outline!.length, - itemBuilder: (context, index) { - final item = res.outline![index]; - return SelectionArea( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (index != 0) const SizedBox(height: 10), - Text( - item.title!, - style: const TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - height: 1.5, - ), - ), - const SizedBox(height: 6), - ...?item.partOutline?.map( - (item) => Wrap( - children: [ - Text.rich( - TextSpan( - style: TextStyle( - fontSize: 14, - color: theme.colorScheme.onSurface, - height: 1.5, - ), - children: [ - TextSpan( - text: DurationUtils.formatDuration( - item.timestamp, - ), - style: tap - ? TextStyle( - color: theme.colorScheme.primary, - ) - : null, - recognizer: tap - ? (NoDeadlineTapGestureRecognizer() - ..onTap = () { - try { - Get.find( - tag: Get.arguments['heroTag'], - ).plPlayerController.seekTo( - Duration( - seconds: item.timestamp!, - ), - isSeek: false, - ); - } catch (_) {} - }) - : null, - ), - const TextSpan(text: ' '), - TextSpan(text: item.content!), - ], - ), - ), - ], - ), - ), - ], - ), - ); - }, - ), - ), - ], - ); - } } class _AiDetailState extends State @@ -178,12 +65,7 @@ class _AiDetailState extends State @override Widget buildList(ThemeData theme) { - final child = AiConclusionPanel.buildContent( - context, - theme, - widget.item, - key: _key, - ); + final child = _buildContent(theme, widget.item); if (_isNested) { return ExtendedVisibilityDetector( uniqueKey: const Key('ai-conclusion'), @@ -192,4 +74,107 @@ class _AiDetailState extends State } return child; } + + Widget _buildContent(ThemeData theme, AiConclusionResult res) { + return CustomScrollView( + key: _key, + physics: const AlwaysScrollableScrollPhysics(), + slivers: [ + if (res.summary?.isNotEmpty == true) ...[ + SliverToBoxAdapter( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 14), + child: selectableText( + res.summary!, + style: const TextStyle( + fontSize: 15, + height: 1.5, + ), + ), + ), + ), + if (res.outline?.isNotEmpty == true) + SliverToBoxAdapter( + child: Divider( + height: 20, + color: theme.dividerColor.withValues(alpha: 0.1), + thickness: 6, + ), + ), + ], + if (res.outline?.isNotEmpty == true) + SliverPadding( + padding: EdgeInsets.only( + left: 14, + right: 14, + bottom: MediaQuery.viewPaddingOf(context).bottom + 100, + ), + sliver: SliverList.builder( + itemCount: res.outline!.length, + itemBuilder: (context, index) { + final item = res.outline![index]; + return SelectionArea( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (index != 0) const SizedBox(height: 10), + Text( + item.title!, + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + height: 1.5, + ), + ), + const SizedBox(height: 6), + ...?item.partOutline?.map( + (item) => Wrap( + children: [ + Text.rich( + TextSpan( + style: TextStyle( + fontSize: 14, + color: theme.colorScheme.onSurface, + height: 1.5, + ), + children: [ + TextSpan( + text: DurationUtils.formatDuration( + item.timestamp, + ), + style: TextStyle( + color: theme.colorScheme.primary, + ), + recognizer: + (NoDeadlineTapGestureRecognizer() + ..onTap = () { + try { + Get.find( + tag: Get.arguments['heroTag'], + ).plPlayerController.seekTo( + Duration( + seconds: item.timestamp!, + ), + isSeek: false, + ); + } catch (_) {} + }), + ), + const TextSpan(text: ' '), + TextSpan(text: item.content!), + ], + ), + ), + ], + ), + ), + ], + ), + ); + }, + ), + ), + ], + ); + } } diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 0e9b23fa2..1fcc7ba56 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -20,7 +20,6 @@ import 'package:PiliPlus/models/common/sponsor_block/segment_model.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/video/audio_quality.dart'; import 'package:PiliPlus/models/common/video/source_type.dart'; -import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; import 'package:PiliPlus/models/common/video/video_decode_type.dart'; import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/common/video/video_type.dart'; @@ -31,7 +30,6 @@ import 'package:PiliPlus/models_new/pgc/pgc_info_model/result.dart'; import 'package:PiliPlus/models_new/video/video_detail/data.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart' as ugc; import 'package:PiliPlus/models_new/video/video_detail/page.dart'; -import 'package:PiliPlus/models_new/video/video_pbp/data.dart'; import 'package:PiliPlus/models_new/video/video_play_info/subtitle.dart'; import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/data.dart'; import 'package:PiliPlus/pages/audio/view.dart'; @@ -70,7 +68,6 @@ import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:get/get.dart'; import 'package:hive_ce/hive.dart'; import 'package:media_kit/media_kit.dart' hide Subtitle; @@ -117,15 +114,12 @@ class VideoDetailController extends GetxController late VideoDecodeFormatType currentDecodeFormats; // 是否开始自动播放 存在多p的情况下,第二p需要为true - final RxBool _autoPlay = Pref.autoPlayEnable.obs; + final RxBool _autoPlay = false.obs; final videoPlayerKey = GlobalKey(); final childKey = GlobalKey(); - final plPlayerController = PlPlayerController.getInstance() - ..brightness.value = -1; - bool get setSystemBrightness => plPlayerController.setSystemBrightness; - bool get removeSafeArea => plPlayerController.removeSafeArea; + final plPlayerController = PlPlayerController.getInstance(); late VideoItem firstVideo; String? videoUrl; @@ -137,9 +131,6 @@ class VideoDetailController extends GetxController return pos == null || pos == 0 ? '' : '?t=${pos / 1000}'; } - // 亮度 - double? brightness; - late final headerCtrKey = GlobalKey(); Box setting = GStorage.setting; @@ -148,14 +139,9 @@ class VideoDetailController extends GetxController late String cacheDecode = Pref.defaultDecode; // def avc late String cacheSecondDecode = Pref.secondDecode; // def av1 - bool get showReply => isFileSource - ? false - : isUgc - ? plPlayerController.showVideoReply - : plPlayerController.showBangumiReply; + bool get showReply => !isFileSource; - bool get showRelatedVideo => - isFileSource ? false : plPlayerController.showRelatedVideo; + bool get showRelatedVideo => !isFileSource; ScrollController? introScrollCtr; ScrollController get effectiveIntroScrollCtr => @@ -174,20 +160,11 @@ class VideoDetailController extends GetxController ScrollController get scrollCtr => _scrollCtr ??= ScrollController()..addListener(scrollListener); - late bool isExpanding = false; - late bool isCollapsing = false; - late double minVideoHeight; late double maxVideoHeight; late double videoHeight; - late double animHeight; - - AnimationController? animController; - AnimationController get animationController => - animController ??= (AnimationController( - vsync: this, - duration: const Duration(milliseconds: 200), - )..addListener(_animListener)); + double? tmpVideoHeight; + late double lastPinnedHeight = maxVideoHeight; void refreshPage() { if (scrollKey.currentState?.mounted ?? false) { @@ -195,30 +172,6 @@ class VideoDetailController extends GetxController } } - void _animListener() { - if (animationController.isForwardOrCompleted) { - _calcAnimHeight(); - refreshPage(); - } - } - - void _calcAnimHeight() { - if (isExpanding) { - animHeight = clampDouble( - videoHeight * animationController.value, - kToolbarHeight, - videoHeight, - ); - } else if (isCollapsing) { - animHeight = clampDouble( - maxVideoHeight - - (maxVideoHeight - minVideoHeight) * animationController.value, - minVideoHeight, - maxVideoHeight, - ); - } - } - void animToTop() { final outerController = scrollKey.currentState!.outerController; if (outerController.hasClients) { @@ -230,7 +183,7 @@ class VideoDetailController extends GetxController } } - bool _needAnimOnDimensionChanged(bool isVertical) { + bool _needRefreshOnDimensionChanged(bool isVertical) { if (isFullScreen) { if (PlatformUtils.isMobile) { plPlayerController.changeOrientation(isVertical: isVertical); @@ -271,56 +224,53 @@ class VideoDetailController extends GetxController } if (this.isVertical.value != isVertical) { this.isVertical.value = isVertical; - double videoHeight = isVertical ? maxVideoHeight : minVideoHeight; - if (this.videoHeight != videoHeight) { - if (videoHeight > this.videoHeight) { + final newVideoHeight = isVertical ? maxVideoHeight : minVideoHeight; + if (videoHeight != newVideoHeight) { + if (newVideoHeight > videoHeight) { // current minVideoHeight - if (_needAnimOnDimensionChanged(isVertical)) { - isExpanding = true; - animationController.forward( - from: (minVideoHeight - scrollCtr.offset) / maxVideoHeight, - ); + videoHeight = maxVideoHeight; + if (_needRefreshOnDimensionChanged(isVertical)) { + tmpVideoHeight = maxVideoHeight; + refreshPage(); } - this.videoHeight = maxVideoHeight; } else { // current maxVideoHeight final currentHeight = (maxVideoHeight - scrollCtr.offset) .toPrecision(2); double minVideoHeightPrecise = minVideoHeight.toPrecision(2); if (currentHeight == minVideoHeightPrecise) { - if (_needAnimOnDimensionChanged(isVertical)) { - isExpanding = true; - this.videoHeight = minVideoHeight; + videoHeight = minVideoHeight; + if (_needRefreshOnDimensionChanged(isVertical)) { + tmpVideoHeight = minVideoHeight; + refreshPage(); } - animationController.forward(from: 1); } else if (currentHeight < minVideoHeightPrecise) { // expand - if (_needAnimOnDimensionChanged(isVertical)) { - isExpanding = true; - animationController.forward( - from: currentHeight / minVideoHeight, - ); + videoHeight = minVideoHeight; + if (_needRefreshOnDimensionChanged(isVertical)) { + tmpVideoHeight = minVideoHeight; + refreshPage(); } - this.videoHeight = minVideoHeight; } else { // collapse - if (_needAnimOnDimensionChanged(isVertical)) { - isCollapsing = true; - animationController.forward( - from: scrollCtr.offset / (maxVideoHeight - minVideoHeight), - ); + videoHeight = minVideoHeight; + if (_needRefreshOnDimensionChanged(isVertical)) { + tmpVideoHeight = minVideoHeight; + refreshPage(); } - this.videoHeight = minVideoHeight; } } } } else { if (scrollCtr.offset != 0) { - isExpanding = true; - animationController.forward(from: 1 - scrollCtr.offset / videoHeight); + tmpVideoHeight = maxVideoHeight; + refreshPage(); } } - } catch (_) {} + } catch (_) { + } finally { + scrollRatio.value = 0; + } } void scrollListener() { @@ -408,11 +358,7 @@ class VideoDetailController extends GetxController getMediaList(); } - tabCtr = TabController( - length: 2, - vsync: this, - initialIndex: Pref.defaultShowComment ? 1 : 0, - ); + tabCtr = TabController(length: 2, vsync: this); } Future getMediaList({ @@ -526,9 +472,7 @@ class VideoDetailController extends GetxController if (plPlayerController.isFullScreen.value || showVideoSheet) { PageUtils.showVideoBottomSheet( context, - child: plPlayerController.darkVideoPage - ? Theme(data: ThemeUtils.darkTheme, child: panel()) - : panel(), + child: panel(), isFullScreen: () => plPlayerController.isFullScreen.value, ); } else { @@ -564,7 +508,7 @@ class VideoDetailController extends GetxController bool get autoPlay => _autoPlay.value; set autoPlay(bool value) => _autoPlay.value = value; @override - bool get preInitPlayer => plPlayerController.preInitPlayer; + bool get preInitPlayer => false; @override int get currPosInMilliseconds => defaultST?.inMilliseconds ?? plPlayerController.position.inMilliseconds; @@ -655,7 +599,6 @@ class VideoDetailController extends GetxController savedDanmaku = null; plPlayerController.danmakuController?.addDanmaku(danmakuModel); }, - darkVideoPage: plPlayerController.darkVideoPage, dmConfig: dmConfig, onSaveDmConfig: (dmConfig) => this.dmConfig = dmConfig, ); @@ -724,11 +667,7 @@ class VideoDetailController extends GetxController } Future? _initPlayerIfNeeded(bool autoFullScreenFlag) { - if (_autoPlay.value || - (plPlayerController.preInitPlayer && !plPlayerController.processing) && - (isFileSource - ? true - : videoPlayerKey.currentState?.mounted == true)) { + if (_autoPlay.value) { return playerInit( autoFullScreenFlag: autoFullScreenFlag && _autoPlay.value, ); @@ -783,7 +722,6 @@ class VideoDetailController extends GetxController width: firstVideo.width, height: firstVideo.height, volume: volume ?? this.volume, - autoFullScreenFlag: autoFullScreenFlag, ); if (isClosed) return; @@ -796,10 +734,6 @@ class VideoDetailController extends GetxController if (vttSubtitlesIndex.value == -1) { _queryPlayInfo(); } - - if (plPlayerController.showDmChart && dmTrend.value == null) { - _getDmTrend(); - } } defaultST = null; @@ -856,7 +790,6 @@ class VideoDetailController extends GetxController tryLook: plPlayerController.tryLook, videoType: _actualVideoType ?? videoType, language: currLang.value, - voiceBalance: plPlayerController.enableAudioNormalization, ); if (result case Success(:final response)) { @@ -1031,20 +964,11 @@ class VideoDetailController extends GetxController if (plPlayerController.isFullScreen.value || showVideoSheet) { PageUtils.showVideoBottomSheet( context, - child: plPlayerController.darkVideoPage - ? Theme( - data: ThemeUtils.darkTheme, - child: PostPanel( - enableSlide: false, - videoDetailController: this, - plPlayerController: plPlayerController, - ), - ) - : PostPanel( - enableSlide: false, - videoDetailController: this, - plPlayerController: plPlayerController, - ), + child: PostPanel( + enableSlide: false, + videoDetailController: this, + plPlayerController: plPlayerController, + ), isFullScreen: () => plPlayerController.isFullScreen.value, ); } else { @@ -1142,14 +1066,10 @@ class VideoDetailController extends GetxController } } - late bool continuePlayingPart = Pref.continuePlayingPart; - Future _queryPlayInfo() async { vttSubtitles.clear(); vttSubtitlesIndex.value = 0; - if (plPlayerController.showViewPoints) { - viewPointList.clear(); - } + viewPointList.clear(); final res = await VideoHttp.playInfo( bvid: bvid, cid: cid.value, @@ -1170,8 +1090,7 @@ class VideoDetailController extends GetxController } } - if (isUgc && continuePlayingPart) { - continuePlayingPart = false; + if (isUgc) { try { UgcIntroController ugcIntroController = Get.find( tag: heroTag, @@ -1190,8 +1109,7 @@ class VideoDetailController extends GetxController } catch (_) {} } - if (plPlayerController.showViewPoints && - response.viewPoints?.firstOrNull?.type == 2) { + if (response.viewPoints?.firstOrNull?.type == 2) { try { viewPointList.value = response.viewPoints!.map((item) { final end = (item.to! / (data.timeLength! / 1000)).clamp(0.0, 1.0); @@ -1205,25 +1123,6 @@ class VideoDetailController extends GetxController }).toList(); } catch (_) {} } - - if (response.subtitle?.subtitles?.isNotEmpty == true) { - subtitles.value = response.subtitle!.subtitles!; - - final idx = switch (Pref.subtitlePreferenceV2) { - SubtitlePrefType.off => 0, - SubtitlePrefType.on => 1, - SubtitlePrefType.withoutAi => - subtitles.first.lan.startsWith('ai') ? 0 : 1, - SubtitlePrefType.auto => - !subtitles.first.lan.startsWith('ai') || - (PlatformUtils.isMobile && - (await FlutterVolumeController.getVolume() ?? 0.0) <= - 0.0) - ? 1 - : 0, - }; - await setSubtitle(idx); - } } } @@ -1274,9 +1173,6 @@ class VideoDetailController extends GetxController _scrollCtr ?..removeListener(scrollListener) ..dispose(); - animController - ?..removeListener(_animListener) - ..dispose(); subtitles.clear(); vttSubtitles.clear(); super.onClose(); @@ -1309,15 +1205,8 @@ class VideoDetailController extends GetxController languages.value = null; currLang.value = null; - // dm trend - if (plPlayerController.showDmChart) { - dmTrend.value = null; - } - // view point - if (plPlayerController.showViewPoints) { - viewPointList.clear(); - } + viewPointList.clear(); // sponsor block if (blockConfig.enableBlock) { @@ -1337,29 +1226,6 @@ class VideoDetailController extends GetxController Rx>?>(null); late final RxBool showDmTrendChart = true.obs; - Future _getDmTrend() async { - dmTrend.value = LoadingState>.loading(); - try { - final res = await Request().get( - 'https://bvc.bilivideo.com/pbp/data', - queryParameters: { - 'bvid': bvid, - 'cid': cid.value, - }, - ); - PbpData data = PbpData.fromJson(res.data); - int stepSec = data.stepSec ?? 0; - if (stepSec != 0 && data.events?.eDefault?.isNotEmpty == true) { - dmTrend.value = Success(data.events!.eDefault!); - return; - } - dmTrend.value = const Error(null); - } catch (e) { - dmTrend.value = const Error(null); - if (kDebugMode) debugPrint('_getDmTrend: $e'); - } - } - void showNoteList(BuildContext context) { String? title; try { @@ -1370,24 +1236,13 @@ class VideoDetailController extends GetxController if (plPlayerController.isFullScreen.value || showVideoSheet) { PageUtils.showVideoBottomSheet( context, - child: plPlayerController.darkVideoPage - ? Theme( - data: ThemeUtils.darkTheme, - child: NoteListPage( - oid: aid, - enableSlide: false, - heroTag: heroTag, - isStein: graphVersion != null, - title: title, - ), - ) - : NoteListPage( - oid: aid, - enableSlide: false, - heroTag: heroTag, - isStein: graphVersion != null, - title: title, - ), + child: NoteListPage( + oid: aid, + enableSlide: false, + heroTag: heroTag, + isStein: graphVersion != null, + title: title, + ), isFullScreen: () => plPlayerController.isFullScreen.value, ); } else { diff --git a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart index a3beecb1f..6de31f31a 100644 --- a/lib/pages/video/introduction/pgc/widgets/intro_detail.dart +++ b/lib/pages/video/introduction/pgc/widgets/intro_detail.dart @@ -120,7 +120,7 @@ class _IntroDetailState extends State return ListView( controller: _controller, physics: const AlwaysScrollableScrollPhysics(), - padding: EdgeInsets.only( + padding: .only( left: 14, right: 14, top: 14, diff --git a/lib/pages/video/introduction/ugc/controller.dart b/lib/pages/video/introduction/ugc/controller.dart index 4d14d66f5..3947e6f1b 100644 --- a/lib/pages/video/introduction/ugc/controller.dart +++ b/lib/pages/video/introduction/ugc/controller.dart @@ -30,8 +30,6 @@ import 'package:PiliPlus/pages/video/reply/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/device_utils.dart'; -import 'package:PiliPlus/utils/extension/size_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; @@ -61,29 +59,14 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { // 是否点踩 final RxBool hasDislike = false.obs; - late final showArgueMsg = Pref.showArgueMsg; - late final enableAi = Pref.enableAi; late final horizontalMemberPage = Pref.horizontalMemberPage; - AiConclusionResult? aiConclusionResult; - late final Map seasonFavState = {}; @override void onInit() { super.onInit(); - bool alwaysExpandIntroPanel = Pref.alwaysExpandIntroPanel; - expandableCtr = ExpandableController( - initialExpanded: alwaysExpandIntroPanel, - ); - if (!alwaysExpandIntroPanel && Pref.expandIntroPanelH) { - WidgetsBinding.instance.addPostFrameCallback((_) { - if (!expandableCtr.expanded && !DeviceUtils.size.isPortrait) { - expandableCtr.toggle(); - } - }); - } - + expandableCtr = ExpandableController(initialExpanded: false); videoDetail.value.title = Get.arguments['title'] ?? ''; } @@ -530,20 +513,17 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { if (this.bvid != bvid) { reload = true; - aiConclusionResult = null; if (cover != null && cover.isNotEmpty) { videoDetailCtr.cover.value = cover; } // 重新请求相关视频 - if (videoDetailCtr.plPlayerController.showRelatedVideo) { - try { - Get.find(tag: heroTag) - ..bvid = bvid - ..queryData(); - } catch (_) {} - } + try { + Get.find(tag: heroTag) + ..bvid = bvid + ..queryData(); + } catch (_) {} // 重新请求评论 if (videoDetailCtr.showReply) { @@ -684,8 +664,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { videoDetailCtr.plPlayerController.play(repeat: true); return true; } - if (playRepeat == PlayRepeat.autoPlayRelated && - videoDetailCtr.plPlayerController.showRelatedVideo) { + if (playRepeat == PlayRepeat.autoPlayRelated) { return playRelated(); } return false; @@ -718,8 +697,7 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { if (playRepeat == PlayRepeat.listCycle) { nextIndex = 0; - } else if (playRepeat == PlayRepeat.autoPlayRelated && - videoDetailCtr.plPlayerController.showRelatedVideo) { + } else if (playRepeat == PlayRepeat.autoPlayRelated) { return playRelated(); } else { return false; @@ -802,12 +780,4 @@ class UgcIntroController extends CommonIntroController with ReloadMixin { } return null; } - - Future aiConclusion() async { - aiConclusionResult = await getAiConclusion( - bvid, - cid.value, - videoDetail.value.owner?.mid, - ); - } } diff --git a/lib/pages/video/introduction/ugc/view.dart b/lib/pages/video/introduction/ugc/view.dart index b2ad08c29..ec1897980 100644 --- a/lib/pages/video/introduction/ugc/view.dart +++ b/lib/pages/video/introduction/ugc/view.dart @@ -1,4 +1,3 @@ -import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; @@ -11,7 +10,6 @@ import 'package:PiliPlus/common/widgets/stat/stat.dart'; import 'package:PiliPlus/http/sponsor_block.dart'; import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/stat_type.dart'; -import 'package:PiliPlus/models_new/video/video_ai_conclusion/model_result.dart'; import 'package:PiliPlus/models_new/video/video_detail/data.dart'; import 'package:PiliPlus/models_new/video/video_detail/staff.dart'; import 'package:PiliPlus/models_new/video/video_tag/data.dart'; @@ -27,12 +25,10 @@ import 'package:PiliPlus/utils/date_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/get_ext.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; -import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/num_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/request_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; @@ -47,14 +43,12 @@ class UgcIntroPanel extends StatefulWidget { const UgcIntroPanel({ super.key, required this.heroTag, - required this.showAiBottomSheet, required this.showEpisodes, required this.onShowMemberPage, required this.isPortrait, required this.isHorizontal, }); final String heroTag; - final Function showAiBottomSheet; final Function showEpisodes; final ValueChanged onShowMemberPage; final bool isPortrait; @@ -195,15 +189,8 @@ class _UgcIntroPanelState extends State { theme: expandTheme, ), const SizedBox(height: 8), - Stack( - clipBehavior: Clip.none, - children: [ - _buildInfo(theme, videoDetail), - if (introController.enableAi) _aiBtn, - ], - ), - if (introController.showArgueMsg && - videoDetail.argueInfo?.argueMsg?.isNotEmpty == true) ...[ + _buildInfo(theme, videoDetail), + if (videoDetail.argueInfo?.argueMsg?.isNotEmpty == true) ...[ const SizedBox(height: 2), Text.rich( TextSpan( @@ -690,7 +677,7 @@ class _UgcIntroPanelState extends State { } } } - PageUtils.handleWebview(matchStr); + PiliScheme.routePushFromUrl(matchStr); }, ), ); @@ -989,37 +976,6 @@ class _UgcIntroPanelState extends State { ], ); - Widget get _aiBtn => Positioned( - right: 8, - child: Center( - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () async { - if (introController.aiConclusionResult == null) { - await introController.aiConclusion(); - } - if (introController.aiConclusionResult case AiConclusionResult( - :final summary, - :final outline, - )) { - if (summary?.isNotEmpty == true || outline?.isNotEmpty == true) { - widget.showAiBottomSheet(); - } else { - SmartDialog.showToast("当前视频不支持AI视频总结"); - } - } - }, - child: Image.asset( - semanticLabel: 'AI总结', - Assets.ai, - height: 18, - width: 18, - cacheHeight: 18.cacheSize(context), - ), - ), - ), - ); - Widget _buildTags(List tags) { return GestureDetector( onTap: () {}, diff --git a/lib/pages/video/note/view.dart b/lib/pages/video/note/view.dart index cdd3c97ca..6d1864df2 100644 --- a/lib/pages/video/note/view.dart +++ b/lib/pages/video/note/view.dart @@ -164,7 +164,7 @@ class _NoteListPageState extends State } Scaffold.of(context).showBottomSheet( constraints: const BoxConstraints(), - (context) => WebviewPage( + (context) => WebViewPage( oid: widget.oid, title: widget.title, url: diff --git a/lib/pages/video/pay_coins/view.dart b/lib/pages/video/pay_coins/view.dart index 69c79a416..0ed9aaeef 100644 --- a/lib/pages/video/pay_coins/view.dart +++ b/lib/pages/video/pay_coins/view.dart @@ -105,8 +105,8 @@ class _PayCoinsPageState extends State return index == 0 ? Assets.mario : Assets.gunSister; } - late final color = Colors.black.withValues(alpha: 0.4); - Color _getPayFilter(int index) => _canPay(index) ? Colors.transparent : color; + Color _getPayFilter(int index) => + _canPay(index) ? Colors.transparent : const Color(0x66000000); @override void initState() { diff --git a/lib/pages/video/post_panel/view.dart b/lib/pages/video/post_panel/view.dart index 5b853abda..a619baa9b 100644 --- a/lib/pages/video/post_panel/view.dart +++ b/lib/pages/video/post_panel/view.dart @@ -4,6 +4,7 @@ import 'dart:math'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/sponsor_block.dart'; import 'package:PiliPlus/models/common/sponsor_block/action_type.dart'; @@ -190,8 +191,7 @@ class _PostPanelState extends State @override Widget buildPage(ThemeData theme) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( primary: false, toolbarHeight: 45, diff --git a/lib/pages/video/reply/controller.dart b/lib/pages/video/reply/controller.dart index be234c4a4..215b6a1f3 100644 --- a/lib/pages/video/reply/controller.dart +++ b/lib/pages/video/reply/controller.dart @@ -5,7 +5,6 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models/common/video/video_type.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/pages/video/controller.dart'; -import 'package:PiliPlus/utils/id_utils.dart'; import 'package:get/get.dart'; class VideoReplyController extends ReplyController { @@ -21,9 +20,6 @@ class VideoReplyController extends ReplyController { final String heroTag; late final videoCtr = Get.find(tag: heroTag); - @override - dynamic get sourceId => IdUtils.av2bv(aid); - @override List? getDataList(MainListReply response) { return response.replies; @@ -33,7 +29,7 @@ class VideoReplyController extends ReplyController { Future> customGetData() => ReplyGrpc.mainList( oid: isPugv ? videoCtr.epId! : aid, type: videoType.replyType, - mode: mode.value, + mode: mode, cursorNext: cursorNext, offset: paginationReply?.nextOffset, ); diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 9b2918603..6e39165fb 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -33,11 +33,8 @@ import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; -import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:cached_network_image/cached_network_image.dart'; @@ -46,7 +43,6 @@ import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:protobuf/protobuf.dart'; class ReplyItemGrpc extends StatelessWidget { const ReplyItemGrpc({ @@ -188,8 +184,7 @@ class ReplyItemGrpc extends StatelessWidget { isStack: false, fontSize: 9, ) - else if (GlobalData().showMedal && - member.hasFansMedalLevel()) + else if (member.hasFansMedalLevel()) MedalWidget( medalName: member.fansMedalName, level: member.fansMedalLevel.toInt(), @@ -240,47 +235,45 @@ class ReplyItemGrpc extends StatelessWidget { ), ), ); - if (PendantAvatar.showDecorate) { - final garb = replyItem.memberV2.garb; - if (garb.hasCardImage()) { - const double height = 38.0; - return Stack( - clipBehavior: .none, - children: [ + final garb = replyItem.memberV2.garb; + if (garb.hasCardImage()) { + const double height = 38.0; + return Stack( + clipBehavior: .none, + children: [ + Positioned( + top: 0, + right: 0, + height: height, + child: CachedNetworkImage( + height: height, + memCacheHeight: height.cacheSize(context), + imageUrl: ImageUtils.safeThumbnailUrl(garb.cardImage), + placeholder: (_, _) => const SizedBox.shrink(), + ), + ), + if (garb.hasCardNumber()) Positioned( top: 0, right: 0, height: height, - child: CachedNetworkImage( - height: height, - memCacheHeight: height.cacheSize(context), - imageUrl: ImageUtils.safeThumbnailUrl(garb.cardImage), - placeholder: (_, _) => const SizedBox.shrink(), - ), - ), - if (garb.hasCardNumber()) - Positioned( - top: 0, - right: 0, - height: height, - child: Center( - child: Text( - '${garb.fanNumPrefix}\n${garb.cardNumber}', - style: TextStyle( - fontSize: 8, - fontFamily: Assets.digitalNum, - color: ColourUtils.parseColor(garb.cardFanColor), - ), + child: Center( + child: Text( + '${garb.fanNumPrefix}\n${garb.cardNumber}', + style: TextStyle( + fontSize: 8, + fontFamily: Assets.digitalNum, + color: ColourUtils.parseColor(garb.cardFanColor), ), ), ), - Padding( - padding: const .only(right: 80), - child: header, ), - ], - ); - } + Padding( + padding: const .only(right: 80), + child: header, + ), + ], + ); } return header; } @@ -669,7 +662,7 @@ class ReplyItemGrpc extends StatelessWidget { ); return; } - PageUtils.handleWebview(matchStr); + PiliScheme.routePushFromUrl(matchStr); } } else { if (url.extra.isWordSearch) { @@ -678,7 +671,7 @@ class ReplyItemGrpc extends StatelessWidget { parameters: {'keyword': url.title}, ); } else { - PageUtils.handleWebview(matchStr); + PiliScheme.routePushFromUrl(matchStr); } } }, @@ -800,7 +793,7 @@ class ReplyItemGrpc extends StatelessWidget { text: matchStr, style: TextStyle(color: theme.colorScheme.primary), recognizer: NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(matchStr), + ..onTap = () => PiliScheme.routePushFromUrl(matchStr), ), ); } else { @@ -895,55 +888,6 @@ class ReplyItemGrpc extends StatelessWidget { ), ), ), - if (kDebugMode && GStorage.reply != null) ...[ - ListTile( - onTap: () { - Get.back(); - GStorage.reply!.put( - item.id.toString(), - (item.deepCopy() - ..unknownFields.clear() - ..replies.clear() - ..clearTrackInfo()) - .writeToBuffer(), - ); - }, - title: Text( - 'save to local', - style: style.copyWith(color: theme.colorScheme.primary), - ), - ), - ListTile( - onTap: () { - Get.back(); - onDelete(); - GStorage.reply!.delete(item.id.toString()); - }, - title: Text( - 'remove from local', - style: style.copyWith(color: theme.colorScheme.primary), - ), - ), - ListTile( - onTap: () { - Get.back(); - final oid = item.oid.toInt(); - final data = - (item.deepCopy() - ..unknownFields.clear() - ..replies.clear() - ..clearTrackInfo()) - .writeToBuffer(); - GStorage.reply!.putAll({ - for (var i = oid; i < oid + 1000; i++) i.toString(): data, - }); - }, - title: Text( - 'save to local (x1000)', - style: style.copyWith(color: theme.colorScheme.primary), - ), - ), - ], if (ownerMid == upMid || ownerMid == item.member.mid) ListTile( onTap: () async { diff --git a/lib/pages/video/reply_new/view.dart b/lib/pages/video/reply_new/view.dart index 2960b8a28..b35e80f35 100644 --- a/lib/pages/video/reply_new/view.dart +++ b/lib/pages/video/reply_new/view.dart @@ -24,8 +24,6 @@ import 'package:PiliPlus/utils/duration_utils.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/path_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart' hide TextField; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -73,16 +71,14 @@ class _ReplyPageState extends CommonRichTextPubPageState { @override void didChangeDependencies() { super.didChangeDependencies(); - themeData = darkVideoPage ? ThemeUtils.darkTheme : Theme.of(context); + themeData = Theme.of(context); } - late final darkVideoPage = - Get.currentRoute == '/videoV' && Pref.darkVideoPage; late ThemeData themeData; @override Widget build(BuildContext context) { - Widget child = ViewSafeArea( + return ViewSafeArea( child: Align( alignment: Alignment.bottomCenter, child: Container( @@ -105,7 +101,6 @@ class _ReplyPageState extends CommonRichTextPubPageState { ), ), ); - return darkVideoPage ? Theme(data: themeData, child: child) : child; } @override diff --git a/lib/pages/video/reply_reply/controller.dart b/lib/pages/video/reply_reply/controller.dart index 29ebcded3..ef105b830 100644 --- a/lib/pages/video/reply_reply/controller.dart +++ b/lib/pages/video/reply_reply/controller.dart @@ -5,7 +5,6 @@ import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/publish/publish_route.dart'; import 'package:PiliPlus/pages/common/reply_controller.dart'; import 'package:PiliPlus/pages/video/reply_new/view.dart'; -import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:fixnum/fixnum.dart'; @@ -47,13 +46,10 @@ class VideoReplyReplyController extends ReplyController late final horizontalPreview = Pref.horizontalPreview; - @override - dynamic get sourceId => replyType == 1 ? IdUtils.av2bv(oid) : oid; - @override void onInit() { super.onInit(); - mode.value = Mode.MAIN_LIST_TIME; + mode = Mode.MAIN_LIST_TIME; queryData(); } @@ -132,19 +128,10 @@ class VideoReplyReplyController extends ReplyController oid: oid, root: rpid, rpid: id ?? 0, - mode: mode.value, + mode: mode, offset: paginationReply?.nextOffset, ); - @override - void queryBySort() { - if (isLoading) return; - mode.value = mode.value == Mode.MAIN_LIST_HOT - ? Mode.MAIN_LIST_TIME - : Mode.MAIN_LIST_HOT; - onReload(); - } - @override Future onReload() { if (loadingState.value.isSuccess) { @@ -202,9 +189,7 @@ class VideoReplyReplyController extends ReplyController loadingState ..value.dataOrNull?.insert(index! + 1, replyInfo) ..refresh(); - if (enableCommAntifraud) { - onCheckReply(replyInfo, isManual: false); - } + onCheckReply(replyInfo, isManual: false); } }); } diff --git a/lib/pages/video/reply_reply/view.dart b/lib/pages/video/reply_reply/view.dart index efa174847..64fb1cfb8 100644 --- a/lib/pages/video/reply_reply/view.dart +++ b/lib/pages/video/reply_reply/view.dart @@ -3,10 +3,11 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/colored_box_transition.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_header.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' - show ReplyInfo, Mode; + show ReplyInfo; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart'; @@ -65,8 +66,7 @@ class VideoReplyReplyPanel extends CommonSlidePage { 'type': type, 'enterUri': ?uri?.toString(), // save panel }, - () => Scaffold( - resizeToAvoidBottomInset: false, + () => scaffold( appBar: AppBar( title: const Text('评论详情'), actions: [ @@ -272,7 +272,7 @@ class _VideoReplyReplyPanelState extends State ), label: Obx( () => Text( - _controller.mode.value == Mode.MAIN_LIST_HOT ? '按热度' : '按时间', + _controller.sortType.value.text!, style: TextStyle( fontSize: 13, color: theme.colorScheme.secondary, diff --git a/lib/pages/video/reply_search_item/view.dart b/lib/pages/video/reply_search_item/view.dart index 7120a608e..97cb85e31 100644 --- a/lib/pages/video/reply_search_item/view.dart +++ b/lib/pages/video/reply_search_item/view.dart @@ -1,3 +1,4 @@ +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/models/common/reply/reply_search_type.dart'; @@ -35,8 +36,7 @@ class _ReplySearchPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( actions: [ IconButton( diff --git a/lib/pages/video/send_danmaku/view.dart b/lib/pages/video/send_danmaku/view.dart index d987bfe82..e234dd2b6 100644 --- a/lib/pages/video/send_danmaku/view.dart +++ b/lib/pages/video/send_danmaku/view.dart @@ -10,7 +10,6 @@ import 'package:PiliPlus/pages/danmaku/danmaku_model.dart'; import 'package:PiliPlus/pages/setting/slide_color_picker.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:canvas_danmaku/models/danmaku_content_item.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; @@ -24,7 +23,6 @@ class SendDanmakuPanel extends CommonTextPubPage { final dynamic progress; final ValueChanged> onSuccess; - final bool darkVideoPage; // config final ({int? mode, int? fontSize, Color? color})? dmConfig; @@ -38,7 +36,6 @@ class SendDanmakuPanel extends CommonTextPubPage { this.bvid, this.progress, required this.onSuccess, - required this.darkVideoPage, this.dmConfig, this.onSaveDmConfig, }); @@ -138,14 +135,14 @@ class _SendDanmakuPanelState extends CommonTextPubPageState { @override void didChangeDependencies() { super.didChangeDependencies(); - themeData = widget.darkVideoPage ? ThemeUtils.darkTheme : Theme.of(context); + themeData = Theme.of(context); } late ThemeData themeData; @override Widget build(BuildContext context) { - Widget child = ViewSafeArea( + return ViewSafeArea( child: Align( alignment: Alignment.bottomCenter, child: Container( @@ -164,7 +161,6 @@ class _SendDanmakuPanelState extends CommonTextPubPageState { ), ), ); - return widget.darkVideoPage ? Theme(data: themeData, child: child) : child; } @override diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 5b6b5b86a..1e45d4a31 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -10,6 +10,7 @@ import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/keep_alive_wrapper.dart'; import 'package:PiliPlus/common/widgets/route_aware_mixin.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/sliver/sliver_pinned_dynamic_header.dart'; import 'package:PiliPlus/models/common/episode_panel_type.dart'; @@ -21,7 +22,6 @@ import 'package:PiliPlus/models_new/video/video_tag/data.dart'; import 'package:PiliPlus/pages/common/common_intro_controller.dart'; import 'package:PiliPlus/pages/danmaku/view.dart'; import 'package:PiliPlus/pages/episode_panel/view.dart'; -import 'package:PiliPlus/pages/video/ai_conclusion/view.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/local/controller.dart'; import 'package:PiliPlus/pages/video/introduction/local/view.dart'; @@ -41,7 +41,6 @@ import 'package:PiliPlus/pages/video/view_point/view.dart'; import 'package:PiliPlus/pages/video/widgets/header_control.dart'; import 'package:PiliPlus/pages/video/widgets/player_focus.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; -import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; @@ -54,13 +53,11 @@ import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/extension/scroll_controller_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; -import 'package:PiliPlus/utils/max_screen_size.dart'; import 'package:PiliPlus/utils/mobile_observer.dart'; import 'package:PiliPlus/utils/num_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:floating/floating.dart'; import 'package:flutter/foundation.dart' show kDebugMode; @@ -69,7 +66,8 @@ import 'package:flutter/services.dart' show SystemUiOverlayStyle; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; -import 'package:screen_brightness_platform_interface/screen_brightness_platform_interface.dart'; + +const kScreenRatio = 1.2; class VideoDetailPageV extends StatefulWidget { const VideoDetailPageV({super.key}); @@ -101,18 +99,6 @@ class _VideoDetailPageVState extends State late final PgcIntroController pgcIntroController; late final LocalIntroController localIntroController; - bool get autoExitFullscreen => - videoDetailController.plPlayerController.autoExitFullscreen; - - bool get autoPlayEnable => - videoDetailController.plPlayerController.autoPlayEnable; - - bool get enableVerticalExpand => - videoDetailController.plPlayerController.enableVerticalExpand; - - bool get pipNoDanmaku => - videoDetailController.plPlayerController.pipNoDanmaku; - bool isShowing = true; bool get isFullScreen => @@ -141,10 +127,6 @@ class _VideoDetailPageVState extends State PlPlayerController.setPlayCallBack(playCallBack); videoDetailController = Get.put(VideoDetailController(), tag: heroTag); - if (videoDetailController.removeSafeArea) { - hideSystemBar(); - } - if (videoDetailController.showReply) { _videoReplyController = Get.put( VideoReplyController( @@ -205,29 +187,20 @@ class _VideoDetailPageVState extends State // 播放器状态监听 Future playerListener(PlayerStatus status) async { - final isPlaying = status.isPlaying; - try { - if (videoDetailController.scrollCtr.hasClients) { - if (isPlaying) { - if (!videoDetailController.isExpanding && - videoDetailController.scrollCtr.offset != 0 && - !videoDetailController.animationController.isAnimating) { - videoDetailController.isExpanding = true; - videoDetailController.animationController.forward( - from: - 1 - - videoDetailController.scrollCtr.offset / - videoDetailController.videoHeight, - ); - } else { - videoDetailController.refreshPage(); - } - } else { - videoDetailController.refreshPage(); - } + final positions = videoDetailController.scrollCtr.positions; + if (positions.isNotEmpty) { + if (status.isPlaying && videoDetailController.scrollCtr.offset != 0) { + (videoDetailController.scrollKey.currentState!.outerController + as ExtendedNestedScrollController) + .nestedPositions + .first + .localJumpTo(0); } - } catch (e) { - if (kDebugMode) debugPrint('handle player status: $e'); + final position = positions.single; + position.applyContentDimensions( + position.minScrollExtent, + position.maxScrollExtent + videoDetailController.lastPinnedHeight, + ); } if (status.isCompleted) { @@ -265,11 +238,9 @@ class _VideoDetailPageVState extends State if (exitFlag) { // 结束播放退出全屏 - if (autoExitFullscreen) { - plPlayerController!.triggerFullScreen(status: false); - if (plPlayerController!.controlsLock.value) { - plPlayerController!.onLockControl(false); - } + plPlayerController!.triggerFullScreen(status: false); + if (plPlayerController!.controlsLock.value) { + plPlayerController!.onLockControl(false); } // 播放完展示控制栏 if (Platform.isAndroid) { @@ -308,17 +279,10 @@ class _VideoDetailPageVState extends State plPlayerController ..addStatusLister(playerListener) ..addPositionListener(positionListener); - if (plPlayerController.preInitPlayer) { - if (plPlayerController.autoEnterFullScreen) { - plPlayerController.triggerFullScreen(); - } - return plPlayerController.play(); - } else { - return videoDetailController.playerInit( - autoplay: true, - autoFullScreenFlag: true, - ); - } + return videoDetailController.playerInit( + autoplay: true, + autoFullScreenFlag: true, + ); } @override @@ -341,9 +305,7 @@ class _VideoDetailPageVState extends State } } - if (!videoDetailController.removeSafeArea) { - showSystemBar(); - } + showSystemBar(); if (!videoDetailController.plPlayerController.isCloseAll) { videoPlayerServiceHandler?.onVideoDetailDispose(heroTag); @@ -367,17 +329,12 @@ class _VideoDetailPageVState extends State removeObserverMobile(this); - if (Platform.isAndroid && !videoDetailController.setSystemBrightness) { - ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness(); - } - introController.cancelTimer(); videoDetailController ..videoState.value = false ..cancelBlockListener() - ..playerStatus = plPlayerController?.playerStatus.value - ..brightness = plPlayerController?.brightness.value; + ..playerStatus = plPlayerController?.playerStatus.value; if (plPlayerController != null) { videoDetailController.makeHeartBeat(); plPlayerController! @@ -410,24 +367,6 @@ class _VideoDetailPageVState extends State introController.startTimer(); - if (mounted && - Platform.isAndroid && - !videoDetailController.setSystemBrightness) { - if (videoDetailController.brightness != null) { - plPlayerController?.brightness.value = - videoDetailController.brightness!; - if (videoDetailController.brightness != -1.0) { - ScreenBrightnessPlatform.instance.setApplicationScreenBrightness( - videoDetailController.brightness!, - ); - } else { - ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness(); - } - } else { - ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness(); - } - } - plPlayerController ?..addStatusLister(playerListener) ..addPositionListener(positionListener); @@ -435,29 +374,17 @@ class _VideoDetailPageVState extends State videoDetailController.playerInit( autoplay: videoDetailController.playerStatus?.isPlaying ?? false, ); - } else if (videoDetailController.plPlayerController.preInitPlayer && - !videoDetailController.isQuerying && - videoDetailController.videoUrl != null) { - videoDetailController.playerInit(); } } @override void didChangeDependencies() { super.didChangeDependencies(); - if (videoDetailController.removeSafeArea) { - padding = .zero; - } else { - padding = MediaQuery.viewPaddingOf(context); - } + padding = MediaQuery.viewPaddingOf(context); final size = MediaQuery.sizeOf(context); maxWidth = size.width; maxHeight = size.height; - isWindowMode = MaxScreenSize.isWindowMode( - width: maxWidth, - height: maxHeight, - ); videoDetailController.plPlayerController.screenRatio = maxHeight / maxWidth; final shortestSide = size.shortestSide; @@ -471,21 +398,16 @@ class _VideoDetailPageVState extends State ? maxVideoHeight : minVideoHeight; - themeData = videoDetailController.plPlayerController.darkVideoPage - ? ThemeUtils.darkTheme - : Theme.of(context); + themeData = Theme.of(context); } - bool removeAppBar(bool isFullScreen) => - videoDetailController.removeSafeArea || - (isWindowMode && isFullScreen && !isPortrait); + bool removeAppBar(bool isFullScreen) => isFullScreen && !isPortrait; Widget get childWhenDisabled { return Obx( () { final isFullScreen = this.isFullScreen; - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: removeAppBar(isFullScreen) ? null : PreferredSize( @@ -496,6 +418,7 @@ class _VideoDetailPageVState extends State videoDetailController.scrollRatio.value; final flag = isPortrait && + videoDetailController.scrollCtr.hasClients && videoDetailController.scrollCtr.offset != 0; return AppBar( backgroundColor: flag && scrollRatio > 0 @@ -525,44 +448,27 @@ class _VideoDetailPageVState extends State controller: videoDetailController.scrollCtr, onlyOneScrollInBody: true, pinnedHeaderSliverHeightBuilder: () { - double pinnedHeight = this.isFullScreen || !isPortrait - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) - : videoDetailController.isExpanding || - videoDetailController.isCollapsing - ? videoDetailController.animHeight - : videoDetailController.isCollapsing || - (plPlayerController?.playerStatus.isPlaying ?? false) + if (videoDetailController.tmpVideoHeight case final height?) { + videoDetailController.tmpVideoHeight = null; + return videoDetailController.lastPinnedHeight = height; + } + return videoDetailController.lastPinnedHeight = + this.isFullScreen || !isPortrait + ? maxHeight - (!isPortrait ? 0 : padding.top) + : (plPlayerController?.playerStatus.isPlaying ?? false) ? videoDetailController.minVideoHeight : kToolbarHeight; - if (videoDetailController.isExpanding && - videoDetailController.animationController.value == 1) { - videoDetailController.isExpanding = false; - WidgetsBinding.instance.addPostFrameCallback((_) { - videoDetailController.scrollRatio.value = 0; - videoDetailController.refreshPage(); - }); - } else if (videoDetailController.isCollapsing && - videoDetailController.animationController.value == 1) { - videoDetailController.isCollapsing = false; - WidgetsBinding.instance.addPostFrameCallback((_) { - videoDetailController.refreshPage(); - }); - } - return pinnedHeight; }, headerSliverBuilder: (context, innerBoxIsScrolled) { final height = isFullScreen || !isPortrait - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) - : videoDetailController.isExpanding || - videoDetailController.isCollapsing - ? videoDetailController.animHeight + ? maxHeight - (!isPortrait ? 0 : padding.top) : videoDetailController.videoHeight; return [ SliverPinnedDynamicHeader( minExtent: kToolbarHeight, maxExtent: height, child: Stack( - clipBehavior: Clip.none, + clipBehavior: .none, children: [ SizedBox( width: maxWidth, @@ -582,7 +488,7 @@ class _VideoDetailPageVState extends State child: SizedBox( height: kToolbarHeight, child: Stack( - clipBehavior: Clip.none, + clipBehavior: .none, children: [ Align( alignment: Alignment.centerLeft, @@ -786,8 +692,7 @@ class _VideoDetailPageVState extends State Widget get childWhenDisabledLandscape => Obx( () { final isFullScreen = this.isFullScreen; - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: removeAppBar(isFullScreen) ? null : AppBar(backgroundColor: Colors.black, toolbarHeight: 0), @@ -853,74 +758,6 @@ class _VideoDetailPageVState extends State } Widget childWhenDisabledLandscapeInner(bool isFullScreen) { - if (enableVerticalExpand) { - return Obx(() { - if (videoDetailController.isVertical.value && !isPortrait) { - final double videoHeight = maxHeight - padding.vertical; - final double width = videoHeight / Style.aspectRatio16x9; - final videoWidth = isFullScreen ? maxWidth : width; - final introWidth = (maxWidth - padding.horizontal - width) / 2; - final introHeight = maxHeight - padding.top; - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Offstage( - offstage: isFullScreen, - child: SizedBox( - width: introWidth, - height: introHeight, - child: videoIntro( - width: introWidth, - height: introHeight, - ), - ), - ), - SizedBox( - width: videoWidth, - height: videoHeight, - child: videoPlayer( - width: videoWidth, - height: videoHeight, - ), - ), - Offstage( - offstage: isFullScreen, - child: SizedBox( - width: introWidth, - height: introHeight, - child: Scaffold( - key: videoDetailController.childKey, - resizeToAvoidBottomInset: false, - backgroundColor: Colors.transparent, - body: Column( - children: [ - buildTabBar(showIntro: false), - Expanded( - child: tabBarView( - controller: videoDetailController.tabCtr, - children: [ - if (videoDetailController.showReply) - videoReplyPanel(), - if (_shouldShowSeasonPanel) seasonPanel, - ], - ), - ), - ], - ), - ), - ), - ), - ], - ); - } - - return _childWhenDisabledLandscapeInner(isFullScreen); - }); - } - return _childWhenDisabledLandscapeInner(isFullScreen); - } - - Widget _childWhenDisabledLandscapeInner(bool isFullScreen) { double width = clampDouble(maxHeight / maxWidth * 1.08, 0.5, 0.7) * maxWidth; if (maxWidth >= 560) { @@ -929,7 +766,7 @@ class _VideoDetailPageVState extends State final videoWidth = isFullScreen ? maxWidth : width; final double height = width / Style.aspectRatio16x9; final videoHeight = isFullScreen - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) + ? maxHeight - (!isPortrait ? 0 : padding.top) : height; if (height > maxHeight) { return childSplit(Style.aspectRatio16x9); @@ -1021,8 +858,7 @@ class _VideoDetailPageVState extends State Widget get childWhenDisabledAlmostSquare => Obx(() { final isFullScreen = this.isFullScreen; - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: removeAppBar(isFullScreen) ? null : AppBar(backgroundColor: Colors.black, toolbarHeight: 0), @@ -1036,26 +872,10 @@ class _VideoDetailPageVState extends State }); Widget childWhenDisabledAlmostSquareInner(bool isFullScreen) { - if (enableVerticalExpand) { - return Obx( - () { - if (videoDetailController.isVertical.value && !isPortrait) { - return childSplit(9 / 16); - } - - return _childWhenDisabledAlmostSquareInner(isFullScreen); - }, - ); - } - - return _childWhenDisabledAlmostSquareInner(isFullScreen); - } - - Widget _childWhenDisabledAlmostSquareInner(bool isFullScreen) { final shouldShowSeasonPanel = _shouldShowSeasonPanel; final double height = maxHeight / 2.5; final videoHeight = isFullScreen - ? maxHeight - (isWindowMode && !isPortrait ? 0 : padding.top) + ? maxHeight - (!isPortrait ? 0 : padding.top) : height; final bottomHeight = maxHeight - height - padding.top; return Column( @@ -1112,98 +932,6 @@ class _VideoDetailPageVState extends State ); } - Widget get manualPlayerWidget => Obx(() { - if (!videoDetailController.autoPlay) { - return Stack( - clipBehavior: Clip.none, - children: [ - Positioned( - top: 0, - left: 0, - right: 0, - child: AppBar( - primary: false, - elevation: 0, - scrolledUnderElevation: 0, - foregroundColor: Colors.white, - backgroundColor: Colors.transparent, - automaticallyImplyLeading: false, - title: Row( - children: [ - SizedBox( - width: 42, - height: 34, - child: IconButton( - tooltip: '返回', - icon: const Icon( - FontAwesomeIcons.arrowLeft, - size: 15, - color: Colors.white, - shadows: [ - Shadow( - blurRadius: 1.5, - color: Colors.black, - ), - ], - ), - onPressed: Get.back, - ), - ), - SizedBox( - width: 42, - height: 34, - child: IconButton( - tooltip: '返回主页', - icon: const Icon( - FontAwesomeIcons.house, - size: 15, - color: Colors.white, - shadows: [ - Shadow( - blurRadius: 1.5, - color: Colors.black, - ), - ], - ), - onPressed: - videoDetailController.plPlayerController.onCloseAll, - ), - ), - ], - ), - actions: [ - _moreBtn( - Colors.white, - shadows: const [ - Shadow( - blurRadius: 1.5, - color: Colors.black, - ), - ], - ), - ], - ), - ), - Positioned( - right: 12, - bottom: 10, - child: IconButton( - tooltip: '播放', - onPressed: handlePlay, - icon: Image.asset( - Assets.play, - width: 60, - height: 60, - cacheHeight: 60.cacheSize(context), - ), - ), - ), - ], - ); - } - return const SizedBox.shrink(); - }); - Widget _moreBtn(Color color, {List? shadows}) => PopupMenuButton( icon: Icon( size: 22, @@ -1271,6 +999,7 @@ class _VideoDetailPageVState extends State : PLVideoPlayer( maxWidth: width, maxHeight: height, + fill: Colors.transparent, plPlayerController: plPlayerController!, videoDetailController: videoDetailController, introController: introController, @@ -1281,19 +1010,17 @@ class _VideoDetailPageVState extends State videoDetailCtr: videoDetailController, heroTag: heroTag, ), - danmuWidget: isPipMode && pipNoDanmaku - ? null - : Obx( - () => PlDanmaku( - key: ValueKey(videoDetailController.cid.value), - isPipMode: isPipMode, - cid: videoDetailController.cid.value, - playerController: plPlayerController!, - isFullScreen: plPlayerController!.isFullScreen.value, - isFileSource: videoDetailController.isFileSource, - size: Size(width, height), - ), - ), + danmuWidget: Obx( + () => PlDanmaku( + key: ValueKey(videoDetailController.cid.value), + isPipMode: isPipMode, + cid: videoDetailController.cid.value, + playerController: plPlayerController!, + isFullScreen: plPlayerController!.isFullScreen.value, + isFileSource: videoDetailController.isFileSource, + size: Size(width, height), + ), + ), showEpisodes: showEpisodes, showViewPoints: showViewPoints, ), @@ -1304,7 +1031,6 @@ class _VideoDetailPageVState extends State late bool isPortrait; late double maxWidth; late double maxHeight; - bool isWindowMode = false; late EdgeInsets padding; @override @@ -1337,9 +1063,7 @@ class _VideoDetailPageVState extends State child: child, ); } - return videoDetailController.plPlayerController.darkVideoPage - ? Theme(data: themeData, child: child) - : child; + return child; } Widget buildTabBar({ @@ -1465,12 +1189,10 @@ class _VideoDetailPageVState extends State onPressed: () { final newVal = !enableShowDanmaku; ctr.enableShowDanmaku.value = newVal; - if (!ctr.tempPlayerConf) { - GStorage.setting.put( - SettingBoxKey.enableShowDanmaku, - newVal, - ); - } + GStorage.setting.put( + SettingBoxKey.enableShowDanmaku, + newVal, + ); }, icon: Icon( size: 22, @@ -1499,7 +1221,7 @@ class _VideoDetailPageVState extends State Widget videoPlayer({required double width, required double height}) { final isFullScreen = this.isFullScreen; return Stack( - clipBehavior: Clip.none, + clipBehavior: .none, children: [ const Positioned.fill(child: ColoredBox(color: Colors.black)), @@ -1507,33 +1229,117 @@ class _VideoDetailPageVState extends State Obx(() { if (!videoDetailController.autoPlay) { - return Positioned.fill( - bottom: -1, - child: GestureDetector( - onTap: handlePlay, - behavior: .opaque, - child: Obx( - () => NetworkImgLayer( - type: .emote, - quality: 60, - src: videoDetailController.cover.value, - width: width, - height: height, - cacheWidth: true, - getPlaceHolder: () => Center( - child: Image.asset(Assets.loading), + return Stack( + children: [ + Positioned( + left: 0, + right: 0, + top: 0, + child: GestureDetector( + onTap: handlePlay, + behavior: .opaque, + child: Obx( + () => NetworkImgLayer( + type: .emote, + quality: 60, + src: videoDetailController.cover.value, + width: width, + height: height, + cacheWidth: true, + getPlaceHolder: () => Center( + child: Image.asset(Assets.loading), + ), + ), ), ), ), - ), + Positioned( + top: 0, + left: 0, + right: 0, + child: AppBar( + primary: false, + elevation: 0, + scrolledUnderElevation: 0, + foregroundColor: Colors.white, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: Row( + children: [ + SizedBox( + width: 42, + height: 34, + child: IconButton( + tooltip: '返回', + icon: const Icon( + FontAwesomeIcons.arrowLeft, + size: 15, + color: Colors.white, + shadows: [ + Shadow( + blurRadius: 1.5, + color: Colors.black, + ), + ], + ), + onPressed: Get.back, + ), + ), + SizedBox( + width: 42, + height: 34, + child: IconButton( + tooltip: '返回主页', + icon: const Icon( + FontAwesomeIcons.house, + size: 15, + color: Colors.white, + shadows: [ + Shadow( + blurRadius: 1.5, + color: Colors.black, + ), + ], + ), + onPressed: videoDetailController + .plPlayerController + .onCloseAll, + ), + ), + ], + ), + actions: [ + _moreBtn( + Colors.white, + shadows: const [ + Shadow( + blurRadius: 1.5, + color: Colors.black, + ), + ], + ), + ], + ), + ), + Positioned( + right: 12, + top: height - 70, + child: IgnorePointer( + child: Image.asset( + Assets.play, + width: 60, + height: 60, + cacheHeight: 60.cacheSize(context), + ), + ), + ), + ], ); } return const SizedBox.shrink(); }), - manualPlayerWidget, - if (videoDetailController.plPlayerController.enableBlock || - videoDetailController.continuePlayingPart) + if (videoDetailController.plPlayerController.enableBlock) Positioned( left: 16, bottom: isFullScreen ? max(75, maxHeight * 0.25) : 75, @@ -1704,7 +1510,6 @@ class _VideoDetailPageVState extends State UgcIntroPanel( key: videoIntroKey, heroTag: heroTag, - showAiBottomSheet: showAiBottomSheet, showEpisodes: showEpisodes, onShowMemberPage: onShowMemberPage, isPortrait: isPortrait, @@ -1760,7 +1565,7 @@ class _VideoDetailPageVState extends State if (videoDetailController.isPlayAll) { return Stack( - clipBehavior: Clip.none, + clipBehavior: .none, children: [ introPanel(), Positioned( @@ -1911,16 +1716,6 @@ class _VideoDetailPageVState extends State heroTag: heroTag, ); - // ai总结 - void showAiBottomSheet() { - videoDetailController.childKey.currentState?.showBottomSheet( - backgroundColor: Colors.transparent, - constraints: const BoxConstraints(), - (context) => - AiConclusionPanel(item: ugcIntroController.aiConclusionResult!), - ); - } - void showIntroDetail( PgcInfoModel videoDetail, List? videoTags, @@ -1991,12 +1786,7 @@ class _VideoDetailPageVState extends State PageUtils.showVideoBottomSheet( context, isFullScreen: () => isFullScreen, - child: videoDetailController.plPlayerController.darkVideoPage - ? Theme( - data: themeData, - child: listSheetContent(enableSlide: false), - ) - : listSheetContent(enableSlide: false), + child: listSheetContent(enableSlide: false), ); } else { videoDetailController.childKey.currentState?.showBottomSheet( @@ -2023,45 +1813,33 @@ class _VideoDetailPageVState extends State ..isReversed = !item.isReversed ..episodes = item.episodes!.reversed.toList(); - if (!videoDetailController.plPlayerController.reverseFromFirst) { - // keep current episode + // switch to first episode + final episode = ugcIntroController + .videoDetail + .value + .ugcSeason! + .sections![videoDetailController.seasonIndex.value] + .episodes! + .first; + if (episode.cid != videoDetailController.cid.value) { + ugcIntroController.onChangeEpisode(episode); + videoDetailController.seasonCid = episode.cid; + } else { videoDetailController ..seasonIndex.refresh() ..cid.refresh(); - } else { - // switch to first episode - final episode = ugcIntroController - .videoDetail - .value - .ugcSeason! - .sections![videoDetailController.seasonIndex.value] - .episodes! - .first; - if (episode.cid != videoDetailController.cid.value) { - ugcIntroController.onChangeEpisode(episode); - videoDetailController.seasonCid = episode.cid; - } else { - videoDetailController - ..seasonIndex.refresh() - ..cid.refresh(); - } } } else { // reverse part videoDetail ..isPageReversed = !videoDetail.isPageReversed ..pages = videoDetail.pages!.reversed.toList(); - if (!videoDetailController.plPlayerController.reverseFromFirst) { - // keep current episode - videoDetailController.cid.refresh(); + // switch to first episode + final episode = videoDetail.pages!.first; + if (episode.cid != videoDetailController.cid.value) { + ugcIntroController.onChangeEpisode(episode); } else { - // switch to first episode - final episode = videoDetail.pages!.first; - if (episode.cid != videoDetailController.cid.value) { - ugcIntroController.onChangeEpisode(episode); - } else { - videoDetailController.cid.refresh(); - } + videoDetailController.cid.refresh(); } } } @@ -2071,20 +1849,11 @@ class _VideoDetailPageVState extends State PageUtils.showVideoBottomSheet( context, isFullScreen: () => isFullScreen, - child: videoDetailController.plPlayerController.darkVideoPage - ? Theme( - data: themeData, - child: ViewPointsPage( - enableSlide: false, - videoDetailController: videoDetailController, - plPlayerController: plPlayerController, - ), - ) - : ViewPointsPage( - enableSlide: false, - videoDetailController: videoDetailController, - plPlayerController: plPlayerController, - ), + child: ViewPointsPage( + enableSlide: false, + videoDetailController: videoDetailController, + plPlayerController: plPlayerController, + ), ); } else { videoDetailController.childKey.currentState?.showBottomSheet( diff --git a/lib/pages/video/view_point/view.dart b/lib/pages/video/view_point/view.dart index 26d54a555..5fdcc5c41 100644 --- a/lib/pages/video/view_point/view.dart +++ b/lib/pages/video/view_point/view.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/button/icon_button.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/pages/common/slide/common_slide_page.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; @@ -35,8 +36,7 @@ class _ViewPointsPageState extends State @override Widget buildPage(ThemeData theme) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( primary: false, automaticallyImplyLeading: false, diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 8a645007a..44c3bbc7c 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -14,7 +14,6 @@ import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/live.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; -import 'package:PiliPlus/models/common/super_resolution_type.dart'; import 'package:PiliPlus/models/common/video/audio_quality.dart'; import 'package:PiliPlus/models/common/video/cdn_type.dart'; import 'package:PiliPlus/models/common/video/video_decode_type.dart'; @@ -35,7 +34,6 @@ import 'package:PiliPlus/pages/video/widgets/header_mixin.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/data_source.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; -import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/services/shutdown_timer_service.dart' show shutdownTimerService; import 'package:PiliPlus/utils/accounts.dart'; @@ -372,7 +370,7 @@ class HeaderControlState extends State color: theme.colorScheme.surface, borderRadius: const BorderRadius.all(Radius.circular(12)), child: ListView( - padding: const EdgeInsets.symmetric(vertical: 14), + padding: const .symmetric(vertical: 14), children: [ ListTile( dense: true, @@ -456,27 +454,6 @@ class HeaderControlState extends State title: const Text('重载视频', style: titleStyle), ), ], - PopupListTile( - dense: true, - leading: const Icon( - Icons.stay_current_landscape_outlined, - size: 20, - ), - title: const Text('超分辨率'), - value: () { - final value = plPlayerController.superResolutionType.value; - return (value, value.label); - }, - itemBuilder: (_) => enumItemBuilder( - SuperResolutionType.values, - ), - onSelected: (value, setState) { - plPlayerController.setShader(value); - setState(); - }, - descFontSize: 12, - descPosType: .subtitle, - ), if (!isFileSource) ListTile( dense: true, @@ -976,14 +953,12 @@ class HeaderControlState extends State SmartDialog.showToast("画质已变为:${newQa.desc}"); // update - if (!plPlayerController.tempPlayerConf) { - setting.put( - await ConnectivityUtils.isWiFi - ? SettingBoxKey.defaultVideoQa - : SettingBoxKey.defaultVideoQaCellular, - quality, - ); - } + setting.put( + await ConnectivityUtils.isWiFi + ? SettingBoxKey.defaultVideoQa + : SettingBoxKey.defaultVideoQaCellular, + quality, + ); }, // 可能包含会员解锁画质 enabled: index >= totalQaSam - usefulQaSam, @@ -1056,14 +1031,12 @@ class HeaderControlState extends State SmartDialog.showToast("音质已变为:${newQa.desc}"); // update - if (!plPlayerController.tempPlayerConf) { - setting.put( - await ConnectivityUtils.isWiFi - ? SettingBoxKey.defaultAudioQa - : SettingBoxKey.defaultAudioQaCellular, - quality, - ); - } + setting.put( + await ConnectivityUtils.isWiFi + ? SettingBoxKey.defaultAudioQa + : SettingBoxKey.defaultAudioQaCellular, + quality, + ); }, contentPadding: const EdgeInsets.symmetric( horizontal: 20, @@ -1310,15 +1283,15 @@ class HeaderControlState extends State } return Padding( - padding: const EdgeInsets.all(12), + padding: const .all(12), child: Material( - clipBehavior: Clip.hardEdge, + clipBehavior: .hardEdge, color: theme.colorScheme.surface, - borderRadius: const BorderRadius.all(Radius.circular(12)), + borderRadius: const .all(.circular(12)), child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 14), + padding: const .symmetric(horizontal: 14), child: ListView( - padding: EdgeInsets.zero, + padding: .zero, children: [ const SizedBox( height: 45, @@ -1326,7 +1299,7 @@ class HeaderControlState extends State ), const SizedBox(height: 10), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: .spaceBetween, children: [ Text( '字体大小 ${(subtitleFontScale * 100).toStringAsFixed(1)}%', @@ -1662,8 +1635,7 @@ class HeaderControlState extends State Widget build(BuildContext context) { final isFullScreen = this.isFullScreen; final isFSOrPip = isFullScreen || plPlayerController.isDesktopPip; - final showFSActionItem = - !isFileSource && plPlayerController.showFSActionItem && isFSOrPip; + final showFSActionItem = !isFileSource && isFSOrPip; showCurrTimeIfNeeded(isFullScreen); Widget title; if (introController.videoDetail.value.title != null && @@ -1897,12 +1869,10 @@ class HeaderControlState extends State onPressed: () { final newVal = !enableShowDanmaku; plPlayerController.enableShowDanmaku.value = newVal; - if (!plPlayerController.tempPlayerConf) { - setting.put( - SettingBoxKey.enableShowDanmaku, - newVal, - ); - } + setting.put( + SettingBoxKey.enableShowDanmaku, + newVal, + ); }, icon: enableShowDanmaku ? const Icon( @@ -1948,81 +1918,6 @@ class HeaderControlState extends State return; } if (await Floating().isPipAvailable) { - if (context.mounted && - !videoPlayerServiceHandler!.enableBackgroundPlay) { - final theme = Theme.of(context); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Column( - children: [ - const Row( - children: [ - Icon( - Icons.check, - color: Colors.green, - ), - SizedBox(width: 10), - Text( - '画中画', - style: TextStyle( - fontSize: 15, - height: 1.5, - ), - ), - ], - ), - const SizedBox(height: 10), - const Text( - '建议开启【后台音频服务】\n' - '避免画中画没有暂停按钮', - style: TextStyle( - fontSize: 12.5, - height: 1.5, - ), - ), - Row( - children: [ - TextButton( - style: ButtonStyle( - foregroundColor: - WidgetStatePropertyAll( - theme - .snackBarTheme - .actionTextColor, - ), - ), - onPressed: () { - plPlayerController.setBackgroundPlay( - true, - ); - SmartDialog.showToast("请重新载入本页面刷新"); - }, - child: const Text('启用后台音频服务'), - ), - const SizedBox(width: 10), - TextButton( - style: ButtonStyle( - foregroundColor: - WidgetStatePropertyAll( - theme - .snackBarTheme - .actionTextColor, - ), - ), - onPressed: () {}, - child: const Text('不启用'), - ), - ], - ), - ], - ), - duration: const Duration(seconds: 2), - showCloseIcon: true, - ), - ); - await Future.delayed(const Duration(seconds: 3)); - } - if (!context.mounted) return; plPlayerController.enterPip(); } }, diff --git a/lib/pages/video/widgets/header_mixin.dart b/lib/pages/video/widgets/header_mixin.dart index 84a48f608..0f88f4167 100644 --- a/lib/pages/video/widgets/header_mixin.dart +++ b/lib/pages/video/widgets/header_mixin.dart @@ -21,12 +21,7 @@ mixin HeaderMixin on State { isFullScreen: () => isFullScreen, padding: padding, child: StatefulBuilder( - builder: (context, setState) => plPlayerController.darkVideoPage - ? Theme( - data: Theme.of(this.context), - child: builder(this.context, setState), - ) - : builder(context, setState), + builder: (context, setState) => builder(context, setState), ), ); } @@ -151,15 +146,15 @@ mixin HeaderMixin on State { } return Padding( - padding: const EdgeInsets.all(12), + padding: const .all(12), child: Material( - clipBehavior: Clip.hardEdge, + clipBehavior: .hardEdge, color: theme.colorScheme.surface, - borderRadius: const BorderRadius.all(Radius.circular(12)), + borderRadius: const .all(.circular(12)), child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 14), + padding: const .symmetric(horizontal: 14), child: ListView( - padding: EdgeInsets.zero, + padding: .zero, children: [ const SizedBox( height: 45, diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index 34b0493d9..bc30c0f71 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -182,14 +182,12 @@ class PlayerFocus extends StatelessWidget { case LogicalKeyboardKey.keyD: final newVal = !plPlayerController.enableShowDanmaku.value; plPlayerController.enableShowDanmaku.value = newVal; - if (!plPlayerController.tempPlayerConf) { - GStorage.setting.put( - plPlayerController.isLive - ? SettingBoxKey.enableShowLiveDanmaku - : SettingBoxKey.enableShowDanmaku, - newVal, - ); - } + GStorage.setting.put( + plPlayerController.isLive + ? SettingBoxKey.enableShowLiveDanmaku + : SettingBoxKey.enableShowDanmaku, + newVal, + ); return true; case LogicalKeyboardKey.keyP: diff --git a/lib/pages/webdav/view.dart b/lib/pages/webdav/view.dart deleted file mode 100644 index f71cf6c37..000000000 --- a/lib/pages/webdav/view.dart +++ /dev/null @@ -1,158 +0,0 @@ -import 'package:PiliPlus/common/style.dart'; -import 'package:PiliPlus/pages/webdav/webdav.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; - -class WebDavSettingPage extends StatefulWidget { - const WebDavSettingPage({ - super.key, - this.showAppBar = true, - }); - - final bool showAppBar; - - @override - State createState() => _WebDavSettingPageState(); -} - -class _WebDavSettingPageState extends State { - final _uriCtr = TextEditingController(text: Pref.webdavUri); - final _usernameCtr = TextEditingController(text: Pref.webdavUsername); - final _passwordCtr = TextEditingController(text: Pref.webdavPassword); - final _directoryCtr = TextEditingController(text: Pref.webdavDirectory); - bool _obscureText = true; - - @override - void dispose() { - _uriCtr.dispose(); - _usernameCtr.dispose(); - _passwordCtr.dispose(); - _directoryCtr.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final showAppBar = widget.showAppBar; - final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - appBar: showAppBar ? AppBar(title: const Text('WebDAV 设置')) : null, - body: Stack( - clipBehavior: Clip.none, - children: [ - ListView( - padding: padding.copyWith( - top: 20, - left: 20 + (showAppBar ? padding.left : 0), - right: 20 + (showAppBar ? padding.right : 0), - bottom: padding.bottom + 100, - ), - children: [ - TextField( - controller: _uriCtr, - decoration: const InputDecoration( - labelText: '地址', - border: OutlineInputBorder(), - ), - ), - const SizedBox(height: 20), - TextField( - controller: _usernameCtr, - decoration: const InputDecoration( - labelText: '用户', - border: OutlineInputBorder(), - ), - ), - const SizedBox(height: 20), - TextField( - controller: _passwordCtr, - autofillHints: const [AutofillHints.password], - decoration: InputDecoration( - labelText: '密码', - border: const OutlineInputBorder(), - suffixIcon: IconButton( - onPressed: () => - setState(() => _obscureText = !_obscureText), - icon: _obscureText - ? const Icon(Icons.visibility) - : const Icon(Icons.visibility_off), - ), - ), - obscureText: _obscureText, - ), - const SizedBox(height: 20), - TextField( - controller: _directoryCtr, - decoration: const InputDecoration( - labelText: '路径', - border: OutlineInputBorder(), - ), - ), - const SizedBox(height: 20), - Row( - children: [ - Expanded( - child: FilledButton.tonal( - style: FilledButton.styleFrom( - shape: const RoundedRectangleBorder( - borderRadius: Style.mdRadius, - ), - ), - onPressed: WebDav().backup, - child: const Text('备份设置'), - ), - ), - const SizedBox(width: 20), - Expanded( - child: FilledButton.tonal( - style: FilledButton.styleFrom( - shape: const RoundedRectangleBorder( - borderRadius: Style.mdRadius, - ), - ), - onPressed: WebDav().restore, - child: const Text('恢复设置'), - ), - ), - ], - ), - ], - ), - Positioned( - right: - kFloatingActionButtonMargin + (showAppBar ? padding.right : 0), - bottom: kFloatingActionButtonMargin + padding.bottom, - child: FloatingActionButton( - child: const Icon(Icons.save), - onPressed: () async { - await GStorage.setting.putAll({ - SettingBoxKey.webdavUri: _uriCtr.text, - SettingBoxKey.webdavUsername: _usernameCtr.text, - SettingBoxKey.webdavPassword: _passwordCtr.text, - SettingBoxKey.webdavDirectory: _directoryCtr.text, - }); - if (_uriCtr.text.isEmpty) { - return; - } - try { - final res = await WebDav().init(); - if (res.first) { - SmartDialog.showToast('配置成功'); - } else { - SmartDialog.showToast('配置失败: ${res.second}'); - } - } catch (e) { - SmartDialog.showToast('配置失败: ${e.toString()}'); - return; - } - }, - ), - ), - ], - ), - ); - } -} diff --git a/lib/pages/webdav/webdav.dart b/lib/pages/webdav/webdav.dart deleted file mode 100644 index bd05361b7..000000000 --- a/lib/pages/webdav/webdav.dart +++ /dev/null @@ -1,97 +0,0 @@ -import 'dart:convert'; - -import 'package:PiliPlus/common/constants.dart'; -import 'package:PiliPlus/common/widgets/pair.dart'; -import 'package:PiliPlus/utils/device_utils.dart'; -import 'package:PiliPlus/utils/storage.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; -import 'package:webdav_client/webdav_client.dart' as webdav; - -class WebDav { - late String _webdavDirectory; - String? _fileName; - - webdav.Client? _client; - - WebDav._internal(); - static final WebDav _instance = WebDav._internal(); - factory WebDav() => _instance; - - Future> init() async { - final webDavUri = Pref.webdavUri; - final webDavUsername = Pref.webdavUsername; - final webDavPassword = Pref.webdavPassword; - _webdavDirectory = Pref.webdavDirectory; - if (!_webdavDirectory.endsWith('/')) { - _webdavDirectory += '/'; - } - _webdavDirectory += Constants.appName; - - try { - _client = null; - final client = - webdav.newClient( - webDavUri, - user: webDavUsername, - password: webDavPassword, - ) - ..setHeaders({'accept-charset': 'utf-8'}) - ..setConnectTimeout(12000) - ..setReceiveTimeout(12000) - ..setSendTimeout(12000); - - await client.mkdirAll(_webdavDirectory); - - _client = client; - return Pair(first: true, second: null); - } catch (e) { - return Pair(first: false, second: e.toString()); - } - } - - String _getFileName() { - return 'piliplus_settings_${DeviceUtils.platformName}.json'; - } - - Future backup() async { - if (_client == null) { - final res = await init(); - if (!res.first) { - SmartDialog.showToast('备份失败,请检查配置: ${res.second}'); - return; - } - } - try { - String data = GStorage.exportAllSettings(); - _fileName ??= _getFileName(); - final path = '$_webdavDirectory/$_fileName'; - try { - await _client!.remove(path); - } catch (_) {} - await _client!.write(path, utf8.encode(data)); - SmartDialog.showToast('备份成功'); - } catch (e) { - SmartDialog.showToast('备份失败: $e'); - } - } - - Future restore() async { - if (_client == null) { - final res = await init(); - if (!res.first) { - SmartDialog.showToast('恢复失败,请检查配置: ${res.second}'); - return; - } - } - try { - _fileName ??= _getFileName(); - final path = '$_webdavDirectory/$_fileName'; - final data = await _client!.read(path); - await GStorage.importAllSettings(utf8.decode(data)); - SmartDialog.showToast('恢复成功'); - } catch (e) { - SmartDialog.showToast('恢复失败: $e'); - } - } -} diff --git a/lib/pages/webview/view.dart b/lib/pages/webview/view.dart index c7fab7474..281ba7eba 100644 --- a/lib/pages/webview/view.dart +++ b/lib/pages/webview/view.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:PiliPlus/common/widgets/flutter/pop_scope.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/browser_ua.dart'; import 'package:PiliPlus/main.dart'; import 'package:PiliPlus/models/common/webview_menu_type.dart'; @@ -15,8 +16,8 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -class WebviewPage extends StatefulWidget { - const WebviewPage({ +class WebViewPage extends StatefulWidget { + const WebViewPage({ super.key, this.url, this.oid, @@ -32,16 +33,32 @@ class WebviewPage extends StatefulWidget { final String? userAgent; @override - State createState() => _WebviewPageState(); + State createState() => _WebViewPageState(); + + static Future? toWebView( + String url, { + String? uaType, + bool getBack = false, + }) { + if (getBack) { + Get.back(); + } + return Get.toNamed( + '/webview', + parameters: { + 'url': url, + 'uaType': ?uaType, + }, + preventDuplicates: false, + ); + } } -class _WebviewPageState extends State { +class _WebViewPageState extends State { late final String _url = widget.url ?? Get.parameters['url'] ?? ''; late final String userAgent; final RxString title = ''.obs; final RxDouble progress = 1.0.obs; - bool _inApp = false; - bool _off = false; InAppWebViewController? _webViewController; @@ -60,10 +77,6 @@ class _WebviewPageState extends State { 'mob' => BrowserUa.mob, _ => BrowserUa.platform, }; - if (Get.arguments case final Map map) { - _inApp = map['inApp'] ?? false; - _off = map['off'] ?? false; - } } @override @@ -75,9 +88,8 @@ class _WebviewPageState extends State { @override Widget build(BuildContext context) { if (Platform.isLinux) { - return Scaffold( + return scaffold( appBar: AppBar(), - resizeToAvoidBottomInset: false, body: Center( child: TextButton( onPressed: () => PageUtils.launchURL(_url), @@ -318,14 +330,10 @@ class _WebviewPageState extends State { return null; }, shouldOverrideUrlLoading: (controller, navigationAction) async { - if (_inApp) { - return NavigationActionPolicy.ALLOW; - } late String url = navigationAction.request.url.toString(); bool hasMatch = await PiliScheme.routePush( navigationAction.request.url?.uriValue ?? Uri(), selfHandle: true, - off: _off, ); // if (kDebugMode) debugPrint('webview: [$url], [$hasMatch]'); if (hasMatch) { @@ -333,16 +341,17 @@ class _WebviewPageState extends State { return NavigationActionPolicy.CANCEL; } else if (_prefixRegex.hasMatch(url)) { if (context.mounted) { - SnackBar snackBar = SnackBar( - content: const Text('当前网页将要打开外部链接,是否打开'), - showCloseIcon: true, - persist: false, - action: SnackBarAction( - label: '打开', - onPressed: () => PageUtils.launchURL(url), + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Text('当前网页将要打开外部链接,是否打开'), + showCloseIcon: true, + persist: false, + action: SnackBarAction( + label: '打开', + onPressed: () => PageUtils.launchURL(url), + ), ), ); - ScaffoldMessenger.of(context).showSnackBar(snackBar); } progress.value = 1; return NavigationActionPolicy.CANCEL; diff --git a/lib/pages/whisper/view.dart b/lib/pages/whisper/view.dart index d23115c9f..3da55f341 100644 --- a/lib/pages/whisper/view.dart +++ b/lib/pages/whisper/view.dart @@ -1,8 +1,10 @@ import 'package:PiliPlus/common/skeleton/whisper_item.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/pages/whisper/controller.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; @@ -25,19 +27,14 @@ class _WhisperPageState extends State { Widget build(BuildContext context) { final theme = Theme.of(context); final padding = MediaQuery.viewPaddingOf(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: const Text('消息'), actions: [ IconButton( tooltip: '新增粉丝', - onPressed: () => Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/h5/follow/newFans?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', - }, + onPressed: () => WebViewPage.toWebView( + 'https://www.bilibili.com/h5/follow/newFans?navhide=1&${ThemeUtils.themeUrl(theme.isDark)}', ), icon: const Icon(Icons.account_circle_outlined), ), diff --git a/lib/pages/whisper_block/view.dart b/lib/pages/whisper_block/view.dart index 2db486487..638b59496 100644 --- a/lib/pages/whisper_block/view.dart +++ b/lib/pages/whisper_block/view.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' show KeywordBlockingItem; import 'package:PiliPlus/http/loading_state.dart'; @@ -25,8 +26,7 @@ class _WhisperBlockPageState extends State { @override Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('消息屏蔽词')), body: Obx(() => _buildBody(theme, _controller.loadingState.value)), ); diff --git a/lib/pages/whisper_detail/controller.dart b/lib/pages/whisper_detail/controller.dart index 0f0e8b412..ef12bfea8 100644 --- a/lib/pages/whisper_detail/controller.dart +++ b/lib/pages/whisper_detail/controller.dart @@ -18,11 +18,11 @@ import 'package:get/get.dart'; class WhisperDetailController extends CommonListController { late final account = Accounts.main; - final int talkerId = Get.arguments['talkerId']; - final String name = Get.arguments['name']; - final String face = Get.arguments['face']; - final int? mid = Get.arguments['mid']; - final bool isLive = Get.arguments['isLive'] ?? false; + late final int talkerId; + late final String name; + late final String face; + late final int? mid; + late final bool isLive; Int64? msgSeqno; @@ -32,6 +32,12 @@ class WhisperDetailController extends CommonListController { @override void onInit() { super.onInit(); + final args = Get.arguments; + talkerId = args['talkerId']; + name = args['name']; + face = args['face']; + mid = args['mid']; + isLive = args['isLive'] ?? false; queryData(); } diff --git a/lib/pages/whisper_detail/view.dart b/lib/pages/whisper_detail/view.dart index 78d249b1e..4c2afa004 100644 --- a/lib/pages/whisper_detail/view.dart +++ b/lib/pages/whisper_detail/view.dart @@ -7,6 +7,7 @@ import 'package:PiliPlus/common/widgets/flutter/chat_list_view.dart'; import 'package:PiliPlus/common/widgets/flutter/text_field/text_field.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/im/type.pb.dart' show Msg; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/msg.dart'; @@ -55,11 +56,10 @@ class _WhisperDetailPageState theme.hoverColor, 1, ); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: GestureDetector( - behavior: HitTestBehavior.opaque, + behavior: .opaque, onTap: () { if (_whisperDetailController.mid != null) { Get.toNamed('/member?mid=${_whisperDetailController.mid}'); diff --git a/lib/pages/whisper_detail/widget/chat_item.dart b/lib/pages/whisper_detail/widget/chat_item.dart index 2e7c59c4b..10a01f4f1 100644 --- a/lib/pages/whisper_detail/widget/chat_item.dart +++ b/lib/pages/whisper_detail/widget/chat_item.dart @@ -347,7 +347,7 @@ class ChatItem extends StatelessWidget { } } else { SmartDialog.showToast('未匹配到 BV 号'); - PageUtils.handleWebview(i['jump_url']); + PiliScheme.routePushFromUrl(i['jump_url']); } }, child: Row( diff --git a/lib/pages/whisper_link_setting/view.dart b/lib/pages/whisper_link_setting/view.dart index a85f2a550..6b82b3ba2 100644 --- a/lib/pages/whisper_link_setting/view.dart +++ b/lib/pages/whisper_link_setting/view.dart @@ -1,4 +1,5 @@ import 'package:PiliPlus/common/widgets/pendant_avatar.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/msg/im_user_infos/datum.dart'; import 'package:PiliPlus/models_new/msg/msg_dnd/uid_setting.dart'; @@ -46,13 +47,10 @@ class _WhisperLinkSettingPageState extends State { indent: 16, color: theme.colorScheme.outline.withValues(alpha: 0.1), ); - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar(title: const Text('聊天设置')), body: ListView( - padding: EdgeInsets.only( - bottom: MediaQuery.viewPaddingOf(context).bottom + 100, - ), + padding: .only(bottom: MediaQuery.viewPaddingOf(context).bottom + 100), children: [ divider, Obx( diff --git a/lib/pages/whisper_secondary/view.dart b/lib/pages/whisper_secondary/view.dart index cabab1358..559c0628d 100644 --- a/lib/pages/whisper_secondary/view.dart +++ b/lib/pages/whisper_secondary/view.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/common/skeleton/whisper_item.dart'; import 'package:PiliPlus/common/widgets/flutter/refresh_indicator.dart'; import 'package:PiliPlus/common/widgets/loading_widget/http_error.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper/widgets/item.dart'; @@ -37,8 +38,7 @@ class _WhisperSecPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - resizeToAvoidBottomInset: false, + return scaffold( appBar: AppBar( title: Text(widget.name), actions: [ diff --git a/lib/pages/whisper_settings/view.dart b/lib/pages/whisper_settings/view.dart index 070a983f6..f663bfef8 100644 --- a/lib/pages/whisper_settings/view.dart +++ b/lib/pages/whisper_settings/view.dart @@ -1,10 +1,12 @@ import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart' show IMSettingType, Setting; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/pages/whisper_block/view.dart'; import 'package:PiliPlus/pages/whisper_settings/controller.dart'; import 'package:PiliPlus/pages/whisper_settings/widgets/item.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -38,11 +40,8 @@ class _WhisperSettingsPageState extends State { @override Widget build(BuildContext context) { final ThemeData theme = Theme.of(context); - return Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - title: Obx(() => Text(_controller.title.value)), - ), + return scaffold( + appBar: AppBar(title: Obx(() => Text(_controller.title.value))), body: Obx(() => _buildBody(theme, _controller.loadingState.value)), ); } @@ -131,10 +130,7 @@ class _WhisperSettingsPageState extends State { if (item.redirect.title == '黑名单') { Get.toNamed('/blackListPage'); } else if (item.redirect.otherPage.url.startsWith('http')) { - Get.toNamed( - '/webview', - parameters: {'url': item.redirect.otherPage.url}, - ); + PiliScheme.routePushFromUrl(item.redirect.otherPage.url); } else { SmartDialog.showToast(item.redirect.otherPage.url); } @@ -142,10 +138,7 @@ class _WhisperSettingsPageState extends State { if (item.redirect.title == '消息屏蔽词') { Get.to(const WhisperBlockPage()); } else if (item.redirect.settingPage.url.startsWith('http')) { - Get.toNamed( - '/webview', - parameters: {'url': item.redirect.settingPage.url}, - ); + PiliScheme.routePushFromUrl(item.redirect.settingPage.url); } else { SmartDialog.showToast(item.redirect.settingPage.url); } diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index 8d15fbf34..9dad2107f 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -4,14 +4,11 @@ import 'dart:io' show Platform; import 'dart:math' show max, min; import 'dart:ui' as ui; -import 'package:PiliPlus/common/assets.dart'; import 'package:PiliPlus/http/browser_ua.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; import 'package:PiliPlus/models/common/account_type.dart'; -import 'package:PiliPlus/models/common/audio_normalization.dart'; -import 'package:PiliPlus/models/common/super_resolution_type.dart'; import 'package:PiliPlus/models/common/video/video_type.dart'; import 'package:PiliPlus/models/user/danmaku_rule.dart'; import 'package:PiliPlus/models/video/play/url.dart'; @@ -22,7 +19,6 @@ import 'package:PiliPlus/plugin/pl_player/models/data_source.dart'; import 'package:PiliPlus/plugin/pl_player/models/data_status.dart'; import 'package:PiliPlus/plugin/pl_player/models/double_tap_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/duration.dart'; -import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/heart_beat_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; @@ -30,22 +26,18 @@ import 'package:PiliPlus/plugin/pl_player/models/video_fit_type.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; import 'package:PiliPlus/services/service_locator.dart'; import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/asset_utils.dart'; import 'package:PiliPlus/utils/device_utils.dart'; import 'package:PiliPlus/utils/extension/box_ext.dart'; import 'package:PiliPlus/utils/extension/num_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; -import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; -import 'package:PiliPlus/utils/utils.dart'; import 'package:archive/archive.dart' show getCrc32; import 'package:canvas_danmaku/canvas_danmaku.dart'; -import 'package:easy_debounce/easy_throttle.dart'; import 'package:floating/floating.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; @@ -57,8 +49,6 @@ import 'package:hive_ce/hive.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; import 'package:native_device_orientation/native_device_orientation.dart'; -import 'package:path/path.dart' as path; -import 'package:screen_brightness_platform_interface/screen_brightness_platform_interface.dart'; import 'package:wakelock_plus/wakelock_plus.dart'; import 'package:window_manager/window_manager.dart'; @@ -111,7 +101,6 @@ class PlPlayerController with BlockConfigMixin { final RxDouble volume = RxDouble( PlatformUtils.isDesktop ? Pref.desktopVolume : 1.0, ); - final setSystemBrightness = Pref.setSystemBrightness; /// 亮度控制条 final RxDouble brightness = (-1.0).obs; @@ -159,7 +148,7 @@ class PlPlayerController with BlockConfigMixin { int? width; int? height; - late final tryLook = !Accounts.get(AccountType.video).isLogin && Pref.p1080; + late final tryLook = !Accounts.get(AccountType.video).isLogin; late DataSource dataSource; @@ -205,14 +194,12 @@ class PlPlayerController with BlockConfigMixin { RxBool get enableShowDanmaku => isLive ? _enableShowLiveDanmaku : _enableShowDanmaku; - late final bool autoPiP = Pref.autoPiP; bool get isPipMode => (Platform.isAndroid && Floating().isPipMode) || (PlatformUtils.isDesktop && isDesktopPip); late bool isDesktopPip = false; late Rect _lastWindowBounds; - late final showWindowTitleBar = Pref.showWindowTitleBar; late final RxBool isAlwaysOnTop = false.obs; Future setAlwaysOnTop(bool value) { isAlwaysOnTop.value = value; @@ -222,8 +209,7 @@ class PlPlayerController with BlockConfigMixin { Future exitDesktopPip() { isDesktopPip = false; return Future.wait([ - if (showWindowTitleBar) - windowManager.setTitleBarStyle(TitleBarStyle.normal), + windowManager.setTitleBarStyle(TitleBarStyle.normal), windowManager.setMinimumSize(const Size(400, 700)), windowManager.setBounds(_lastWindowBounds), setAlwaysOnTop(false), @@ -238,9 +224,7 @@ class PlPlayerController with BlockConfigMixin { _lastWindowBounds = await windowManager.getBounds(); - if (showWindowTitleBar) { - windowManager.setTitleBarStyle(TitleBarStyle.hidden); - } + windowManager.setTitleBarStyle(TitleBarStyle.hidden); final Size size; final state = videoPlayerController!.state; @@ -273,20 +257,6 @@ class PlPlayerController with BlockConfigMixin { } } - late bool _shouldSetPip = false; - - static bool get _isCurrVideoPage { - final routing = Get.routing; - if (routing.route is! GetPageRoute) { - return false; - } - return _isVideoPage(routing.current); - } - - static bool _isVideoPage(String routeName) { - return routeName == '/videoV' || routeName == '/liveRoom'; - } - void enterPip({bool isAuto = false}) { if (videoPlayerController != null) { controls = false; @@ -299,22 +269,12 @@ class PlPlayerController with BlockConfigMixin { } } - void _disableAutoEnterPip() { - if (_shouldSetPip) { - Utils.channel.invokeMethod('setPipAutoEnterEnabled', { - 'autoEnable': false, - }); - } - } - // 弹幕相关配置 - late final enableTapDm = PlatformUtils.isMobile && Pref.enableTapDm; late RuleFilter filters = Pref.danmakuFilterRule; // 关联弹幕控制器 DanmakuController? danmakuController; bool showDanmaku = true; Set dmState = {}; - late final mergeDanmaku = Pref.mergeDanmaku; late final String midHash = getCrc32( ascii.encode(Accounts.main.mid.toString()), 0, @@ -322,7 +282,6 @@ class PlPlayerController with BlockConfigMixin { late final RxDouble danmakuOpacity = Pref.danmakuOpacity.obs; late List speedList = Pref.speedList; - late bool enableAutoLongPressSpeed = Pref.enableAutoLongPressSpeed; late final showControlDuration = const Duration(seconds: 3); // 字幕 late double subtitleFontScale = Pref.subtitleFontScale; @@ -330,57 +289,26 @@ class PlPlayerController with BlockConfigMixin { late int subtitlePaddingH = Pref.subtitlePaddingH; late int subtitlePaddingB = Pref.subtitlePaddingB; late double subtitleBgOpacity = Pref.subtitleBgOpacity; - final bool showVipDanmaku = Pref.showVipDanmaku; // loop unswitching late double subtitleStrokeWidth = Pref.subtitleStrokeWidth; late int subtitleFontWeight = Pref.subtitleFontWeight; // settings - late final showFSActionItem = Pref.showFSActionItem; - late final darkVideoPage = Pref.darkVideoPage; - late final enableSlideVolumeBrightness = Pref.enableSlideVolumeBrightness; - late final enableSlideFS = Pref.enableSlideFS; - late final enableDragSubtitle = Pref.enableDragSubtitle; late final fastForBackwardDuration = Duration( seconds: Pref.fastForBackwardDuration, ); late final horizontalSeasonPanel = Pref.horizontalSeasonPanel; - late final preInitPlayer = Pref.preInitPlayer; - late final showRelatedVideo = Pref.showRelatedVideo; - late final showVideoReply = Pref.showVideoReply; - late final showBangumiReply = Pref.showBangumiReply; - late final reverseFromFirst = Pref.reverseFromFirst; late final horizontalPreview = Pref.horizontalPreview; - late final showDmChart = Pref.showDmChart; - late final showViewPoints = Pref.showViewPoints; - late final showFsScreenshotBtn = Pref.showFsScreenshotBtn; - late final showFsLockBtn = Pref.showFsLockBtn; late final keyboardControl = Pref.keyboardControl; - late final bool autoEnterFullScreen = Pref.autoEnterFullScreen; - late final bool autoExitFullscreen = Pref.autoExitFullscreen; - late final bool autoPlayEnable = Pref.autoPlayEnable; - late final bool enableVerticalExpand = Pref.enableVerticalExpand; - late final bool pipNoDanmaku = Pref.pipNoDanmaku; - - late final bool tempPlayerConf = Pref.tempPlayerConf; - late int? cacheVideoQa = PlatformUtils.isMobile ? null : Pref.defaultVideoQa; late int cacheAudioQa = Pref.defaultAudioQa; bool enableHeart = true; - late final String? hwdec = Pref.enableHA ? Pref.hardwareDecoding : null; + late final String? hwdec = Pref.hardwareDecoding; - late final progressType = Pref.btmProgressBehavior; - late final enableQuickDouble = Pref.enableQuickDouble; - late final fullScreenGestureReverse = Pref.fullScreenGestureReverse; + late final offset = Pref.sliderDuration * 1000; - late final isRelative = Pref.useRelativeSlide; - late final offset = isRelative - ? Pref.sliderDuration / 100 - : Pref.sliderDuration * 1000; - - num get sliderScale => - isRelative ? duration.value.inMilliseconds * offset : offset; + num get sliderScale => offset; // 播放顺序相关 late PlayRepeat playRepeat = Pref.playRepeat; @@ -508,7 +436,6 @@ class PlPlayerController with BlockConfigMixin { bool visible = true; DeviceOrientation? _orientation; - late final checkIsAutoRotate = Platform.isAndroid && mode != .gravity; StreamSubscription? _orientationListener; void _stopOrientationListener() { @@ -521,8 +448,7 @@ class PlPlayerController with BlockConfigMixin { if (!visible) return; final orientation = param.orientation; final isFullScreen = this.isFullScreen.value; - if (checkIsAutoRotate && - param.isAutoRotate != true && + if (param.isAutoRotate != true && (!isFullScreen || _isVertical || orientation == .portraitUp || @@ -562,30 +488,13 @@ class PlPlayerController with BlockConfigMixin { PlPlayerController._() { if (PlatformUtils.isMobile) { _orientationListener = NativeDeviceOrientationPlatform.instance - .onOrientationChanged( - useSensor: Platform.isAndroid, - checkIsAutoRotate: checkIsAutoRotate, - ) + .onOrientationChanged(useSensor: Platform.isAndroid) .listen(_onOrientationChanged); } if (!Accounts.heartbeat.isLogin || Pref.historyPause) { enableHeart = false; } - - if (Platform.isAndroid && autoPiP) { - if (DeviceUtils.sdkInt < 36) { - Utils.channel.setMethodCallHandler((call) async { - if (call.method == 'onUserLeaveHint') { - if (playerStatus.isPlaying && _isCurrVideoPage) { - enterPip(); - } - } - }); - } else { - _shouldSetPip = true; - } - } } // 获取实例 传参 @@ -596,18 +505,9 @@ class PlPlayerController with BlockConfigMixin { .._playerCount += 1; } - bool _processing = false; - bool get processing => _processing; - // offline bool get isFileSource => dataSource is FileSource; - late final _audioNormalization = Pref.audioNormalization; - late final enableAudioNormalization = - Platform.isAndroid && _audioNormalization != '0'; - late final String _audioNormalizationParam = - AudioNormalization.getParamFromConfig(_audioNormalization); - // 初始化资源 Future setDataSource( DataSource dataSource, { @@ -632,10 +532,8 @@ class PlPlayerController with BlockConfigMixin { VideoType? videoType, VoidCallback? onInit, Volume? volume, - bool autoFullScreenFlag = false, }) async { try { - _processing = true; this.isLive = isLive; _videoType = videoType ?? VideoType.ugc; this.width = width; @@ -655,9 +553,7 @@ class PlPlayerController with BlockConfigMixin { _seasonId = seasonId; _pgcType = pgcType; - if (showSeekPreview) { - _clearPreview(); - } + _clearPreview(); cancelLongPressTimer(); if (_videoPlayerController != null && _videoPlayerController!.state.playing) { @@ -687,10 +583,6 @@ class PlPlayerController with BlockConfigMixin { // 数据加载完成 dataStatus.value = DataStatus.loaded; - if (autoFullScreenFlag && autoEnterFullScreen) { - triggerFullScreen(status: true); - } - await _initializePlayer(); onInit?.call(); } catch (err, stackTrace) { @@ -699,65 +591,9 @@ class PlPlayerController with BlockConfigMixin { debugPrint(stackTrace.toString()); debugPrint('plPlayer err: $err'); } - } finally { - _processing = false; } } - String? shadersDirPath; - Future get copyShadersToExternalDirectory async { - if (shadersDirPath != null) { - return shadersDirPath!; - } - - return shadersDirPath = await AssetUtils.getOrCopy( - 'assets/shaders', - Assets.mpvAnime4KShaders.followedBy(Assets.mpvAnime4KShadersLite), - path.join(appSupportDirPath, 'anime_shaders'), - ); - } - - late final isAnim = _pgcType == 1 || _pgcType == 4; - late final Rx superResolutionType = - (isAnim ? Pref.superResolutionType : SuperResolutionType.disable).obs; - Future setShader([SuperResolutionType? type, NativePlayer? pp]) async { - if (type == null) { - type = superResolutionType.value; - } else { - superResolutionType.value = type; - if (isAnim && !tempPlayerConf) { - setting.put(SettingBoxKey.superResolutionType, type.index); - } - } - pp ??= _videoPlayerController!; - switch (type) { - case SuperResolutionType.disable: - return pp.command(const ['change-list', 'glsl-shaders', 'clr', '']); - case SuperResolutionType.efficiency: - return pp.command([ - 'change-list', - 'glsl-shaders', - 'set', - PathUtils.buildShadersAbsolutePath( - await copyShadersToExternalDirectory, - Assets.mpvAnime4KShadersLite, - ), - ]); - case SuperResolutionType.quality: - return pp.command([ - 'change-list', - 'glsl-shaders', - 'set', - PathUtils.buildShadersAbsolutePath( - await copyShadersToExternalDirectory, - Assets.mpvAnime4KShaders, - ), - ]); - } - } - - static final loudnormRegExp = RegExp('loudnorm=([^,]+)'); - Future _initPlayer() async { assert(_videoPlayerController == null); final opt = { @@ -769,16 +605,10 @@ class PlPlayerController with BlockConfigMixin { } else if (PlatformUtils.isDesktop) { opt['volume'] = (volume.value * 100).toString(); } - final autosync = Pref.autosync; - if (autosync != '0') { - opt['autosync'] = autosync; - } final player = await Player.create( configuration: PlayerConfiguration( - bufferSize: Pref.expandBuffer - ? (isLive ? 64 * 1024 * 1024 : 32 * 1024 * 1024) - : (isLive ? 16 * 1024 * 1024 : 4 * 1024 * 1024), + bufferSize: isLive ? 16 * 1024 * 1024 : 4 * 1024 * 1024, logLevel: kDebugMode ? .warn : .error, options: opt, ), @@ -831,9 +661,6 @@ class PlPlayerController with BlockConfigMixin { return; } _videoPlayerController = player; - if (isAnim && superResolutionType.value != .disable) { - await setShader(); - } } final Map extras = {}; @@ -846,31 +673,6 @@ class PlPlayerController with BlockConfigMixin { extras['audio-files'] = '"${Platform.isWindows ? audio.replaceAll(';', r'\;') : audio.replaceAll(':', r'\:')}"'; } - if (enableAudioNormalization) { - final String audioNormalization; - if (volume != null && volume.isNotEmpty) { - audioNormalization = _audioNormalizationParam.replaceFirstMapped( - loudnormRegExp, - (i) => - 'loudnorm=${volume.format( - Map.fromEntries( - i.group(1)!.split(':').map((item) { - final parts = item.split('='); - return MapEntry(parts[0].toLowerCase(), num.parse(parts[1])); - }), - ), - )}', - ); - } else { - audioNormalization = _audioNormalizationParam.replaceFirst( - loudnormRegExp, - AudioNormalization.getParamFromConfig(Pref.fallbackNormalization), - ); - } - if (audioNormalization.isNotEmpty) { - extras['lavfi-complex'] = '"[aid1] $audioNormalization [ao]"'; - } - } } await player.open( @@ -936,16 +738,8 @@ class PlPlayerController with BlockConfigMixin { stream.playing.listen((event) { WakelockPlus.toggle(enable: event); if (event) { - if (_shouldSetPip) { - if (_isCurrVideoPage) { - enterPip(isAuto: true); - } else { - _disableAutoEnterPip(); - } - } playerStatus.value = PlayerStatus.playing; } else { - _disableAutoEnterPip(); playerStatus.value = PlayerStatus.paused; } videoPlayerServiceHandler?.onStatusChange( @@ -1004,71 +798,6 @@ class PlPlayerController with BlockConfigMixin { isLive, ); }), - if (kDebugMode) - stream.log.listen(((PlayerLog log) { - if (log.level == 'error' || log.level == 'fatal') { - Utils.reportError('${log.level}: ${log.prefix}: ${log.text}', null); - } else { - debugPrint(log.toString()); - } - })), - stream.error.listen((String event) { - if (dataSource is FileSource && - event.startsWith("Failed to open file")) { - return; - } - if (isLive) { - if (event.startsWith('tcp: ffurl_read returned ') || - event.startsWith("Failed to open https://") || - event.startsWith("Can not open external file https://")) { - Future.delayed(const Duration(milliseconds: 3000), refreshPlayer); - } - return; - } - if (event.startsWith("Failed to open https://") || - event.startsWith("Can not open external file https://") || - //tcp: ffurl_read returned 0xdfb9b0bb - //tcp: ffurl_read returned 0xffffff99 - event.startsWith('tcp: ffurl_read returned ')) { - EasyThrottle.throttle( - 'controllerStream.error.listen', - const Duration(milliseconds: 10000), - () { - Future.delayed(const Duration(milliseconds: 3000), () { - // if (kDebugMode) { - // debugPrint("isBuffering.value: ${isBuffering.value}"); - // } - // if (kDebugMode) { - // debugPrint("_buffered.value: ${_buffered.value}"); - // } - if (isBuffering.value && buffered.value == Duration.zero) { - SmartDialog.showToast( - '视频链接打开失败,重试中', - displayTime: const Duration(milliseconds: 500), - ); - refreshPlayer(); - } - }); - }, - ); - } else if (event.startsWith('Could not open codec')) { - SmartDialog.showToast('无法加载解码器, $event,可能会切换至软解'); - } else if (!onlyPlayAudio.value) { - if (event.startsWith("error running") || - event.startsWith("Failed to open .") || - event.startsWith("Cannot open") || - event.startsWith("Can not open")) { - return; - } - Utils.reportError(event); - // SmartDialog.showToast('视频加载错误, $event'); - } - }), - // controllerStream.volume.listen((event) { - // if (!mute.value && _volumeBeforeMute != event) { - // _volumeBeforeMute = event / 100; - // } - // }), // 媒体通知监听 if (videoPlayerServiceHandler != null) ...[ playerStatus.listen((PlayerStatus event) { @@ -1292,14 +1021,6 @@ class PlPlayerController with BlockConfigMixin { } } - /// 设置后台播放 - void setBackgroundPlay(bool val) { - videoPlayerServiceHandler?.enableBackgroundPlay = val; - if (!tempPlayerConf) { - setting.put(SettingBoxKey.enableBackgroundPlay, val); - } - } - set controls(bool visible) { showControls.value = visible; _timer?.cancel(); @@ -1329,9 +1050,7 @@ class PlPlayerController with BlockConfigMixin { if (playerStatus.isPlaying) { longPressStatus.value = val; HapticFeedback.lightImpact(); - await setPlaybackSpeed( - enableAutoLongPressSpeed ? playbackSpeed * 2 : longPressSpeed, - ); + await setPlaybackSpeed(longPressSpeed); } } else { // if (kDebugMode) debugPrint('$playbackSpeed'); @@ -1381,10 +1100,6 @@ class PlPlayerController with BlockConfigMixin { } void doubleTapFuc(DoubleTapType type) { - if (!enableQuickDouble) { - onDoubleTapCenter(); - return; - } switch (type) { case DoubleTapType.left: // 双击左边区域 👈 @@ -1416,21 +1131,13 @@ class PlPlayerController with BlockConfigMixin { double screenRatio = 0.0; bool isManualFS = true; - late final FullScreenMode mode = Pref.fullScreenMode; late final horizontalScreen = Pref.horizontalScreen; - late final removeSafeArea = Pref.removeSafeArea; Future? changeOrientation({ required bool isVertical, DeviceOrientation? orientation, }) { - if (orientation == null && (mode == .none || mode == .gravity)) { - return null; - } - if (orientation == null && - (mode == .vertical || - (mode == .auto && isVertical) || - (mode == .ratio && (isVertical || screenRatio < kScreenRatio)))) { + if (orientation == null && isVertical) { return portraitUpMode(); } else { // https://github.com/flutter/flutter/issues/73651 @@ -1478,12 +1185,7 @@ class PlPlayerController with BlockConfigMixin { } } else { if (PlatformUtils.isMobile) { - if (!removeSafeArea) { - showSystemBar(); - } - if (orientation == null && mode == .none) { - return; - } + showSystemBar(); await resetScreenRotation(); } else { await exitDesktopFullScreen(); @@ -1567,7 +1269,7 @@ class PlPlayerController with BlockConfigMixin { void setPlayRepeat(PlayRepeat type) { playRepeat = type; - if (!tempPlayerConf) video.put(VideoBoxKey.playRepeat, type.index); + video.put(VideoBoxKey.playRepeat, type.index); } void putSubtitleSettings() { @@ -1611,31 +1313,12 @@ class PlPlayerController with BlockConfigMixin { } _playerCount = 0; - if (removeSafeArea) { - showSystemBar(); - } danmakuController = null; _stopOrientationListener(); - _disableAutoEnterPip(); setPlayCallBack(null); dmState.clear(); - if (showSeekPreview) { - _clearPreview(); - } - Utils.channel.setMethodCallHandler(null); + _clearPreview(); _timer?.cancel(); - // _position.close(); - // _playerEventSubs?.cancel(); - // _sliderPosition.close(); - // _sliderTempPosition.close(); - // _isSliderMoving.close(); - // _duration.close(); - // _buffered.close(); - // _showControls.close(); - // _controlsLock.close(); - - // playerStatus.close(); - // dataStatus.close(); if (PlatformUtils.isDesktop && isAlwaysOnTop.value) { windowManager.setAlwaysOnTop(false); @@ -1667,12 +1350,10 @@ class PlPlayerController with BlockConfigMixin { void setContinuePlayInBackground() { continuePlayInBackground.value = !continuePlayInBackground.value; - if (!tempPlayerConf) { - setting.put( - SettingBoxKey.continuePlayInBackground, - continuePlayInBackground.value, - ); - } + setting.put( + SettingBoxKey.continuePlayInBackground, + continuePlayInBackground.value, + ); } void setOnlyPlayAudio() { @@ -1685,7 +1366,6 @@ class PlPlayerController with BlockConfigMixin { late final Map previewCache = {}; LoadingState? videoShot; late final RxBool showPreview = false.obs; - late final showSeekPreview = Pref.showSeekPreview; late final previewIndex = RxnInt(); void updatePreviewIndex(int seconds) { @@ -1771,13 +1451,6 @@ class PlPlayerController with BlockConfigMixin { setPlayCallBack(null); - if (Platform.isAndroid && _playerCount <= 1) { - _disableAutoEnterPip(); - if (!setSystemBrightness) { - ScreenBrightnessPlatform.instance.resetApplicationScreenBrightness(); - } - } - return; } diff --git a/lib/plugin/pl_player/models/bottom_control_type.dart b/lib/plugin/pl_player/models/bottom_control_type.dart index be14c8420..ffb8ccaf4 100644 --- a/lib/plugin/pl_player/models/bottom_control_type.dart +++ b/lib/plugin/pl_player/models/bottom_control_type.dart @@ -9,8 +9,6 @@ enum BottomControlType { speed, fullscreen, viewPoints, - superResolution, - dmChart, qa, aiTranslate, } diff --git a/lib/plugin/pl_player/models/bottom_progress_behavior.dart b/lib/plugin/pl_player/models/bottom_progress_behavior.dart deleted file mode 100644 index 8db45c63a..000000000 --- a/lib/plugin/pl_player/models/bottom_progress_behavior.dart +++ /dev/null @@ -1,10 +0,0 @@ -enum BtmProgressBehavior { - alwaysShow('始终展示'), - alwaysHide('始终隐藏'), - onlyShowFullScreen('仅全屏时展示'), - onlyHideFullScreen('仅全屏时隐藏'), - ; - - final String desc; - const BtmProgressBehavior(this.desc); -} diff --git a/lib/plugin/pl_player/models/fullscreen_mode.dart b/lib/plugin/pl_player/models/fullscreen_mode.dart deleted file mode 100644 index 491555176..000000000 --- a/lib/plugin/pl_player/models/fullscreen_mode.dart +++ /dev/null @@ -1,21 +0,0 @@ -const double kScreenRatio = 1.2; - -// 全屏模式 -enum FullScreenMode { - // 根据内容自适应 - auto('按视频方向(默认)'), - // 不改变当前方向 - none('不改变当前方向'), - // 始终竖屏 - vertical('强制竖屏'), - // 始终横屏 - horizontal('强制横屏'), - // 屏幕长宽比 < kScreenRatio 或为竖屏视频时竖屏,否则横屏 - ratio('屏幕长宽比<$kScreenRatio或为竖屏视频时竖屏,否则横屏'), - // 强制重力转屏(仅安卓) - gravity('忽略系统方向锁定,强制按重力转屏(仅安卓)'), - ; - - final String desc; - const FullScreenMode(this.desc); -} diff --git a/lib/plugin/pl_player/view/simple_video_texture.dart b/lib/plugin/pl_player/view/simple_video_texture.dart new file mode 100644 index 000000000..6fab44b8d --- /dev/null +++ b/lib/plugin/pl_player/view/simple_video_texture.dart @@ -0,0 +1,89 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:media_kit_video/media_kit_video.dart'; + +class SimpleVideoTexture extends StatefulWidget { + final Color fill; + final VideoController controller; + final double? aspectRatio; + final FilterQuality filterQuality; + + const SimpleVideoTexture({ + super.key, + this.fill = Colors.black, + required this.controller, + this.aspectRatio, + this.filterQuality = FilterQuality.low, + }); + + @override + State createState() => SimpleVideoTextureState(); +} + +class SimpleVideoTextureState extends State { + late double _devicePixelRatio; + late bool _visible = + widget.controller.player.state.width > 0 && + widget.controller.player.state.height > 0; + + late final StreamSubscription<(int, int)> _subscription; + + @override + void initState() { + super.initState(); + // -------------------------------------------------- + // Do not show the video frame until width & height are available. + // Since [ValueNotifier] inside [VideoController] only gets updated by the render loop (i.e. it will not fire when video's width & height are not available etc.), it's important to handle this separately here. + _subscription = widget.controller.player.stream.size.listen((value) { + final visible = value.$1 > 0 && value.$2 > 0; + if (_visible != visible) { + _visible = visible; + // ignore: invalid_use_of_visible_for_testing_member, invalid_use_of_protected_member + widget.controller.rect.notifyListeners(); + } + }); + } + + @override + void dispose() { + _subscription.cancel(); + super.dispose(); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + _devicePixelRatio = MediaQuery.devicePixelRatioOf(context); + } + + @override + Widget build(BuildContext context) { + final ctr = widget.controller; + return ListenableBuilder( + listenable: Listenable.merge([ctr.id, ctr.rect]), + builder: (context, _) { + final id = ctr.id.value; + final rect = ctr.rect.value; + if (id != null && rect != null && _visible) { + return SizedBox( + width: widget.aspectRatio == null + ? rect.width / _devicePixelRatio + : rect.height / _devicePixelRatio * widget.aspectRatio!, + height: rect.height / _devicePixelRatio, + child: Stack( + children: [ + if (rect.width <= 1.0 && + rect.height <= 1.0 && + widget.fill != Colors.transparent) + Positioned.fill(child: ColoredBox(color: widget.fill)), + Texture(textureId: id, filterQuality: widget.filterQuality), + ], + ), + ); + } + return const SizedBox(); + }, + ); + } +} diff --git a/lib/plugin/pl_player/view/view.dart b/lib/plugin/pl_player/view/view.dart index 57dd56b8d..8ad7d1422 100644 --- a/lib/plugin/pl_player/view/view.dart +++ b/lib/plugin/pl_player/view/view.dart @@ -9,18 +9,12 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/common/widgets/cropped_image.dart'; import 'package:PiliPlus/common/widgets/custom_icon.dart'; import 'package:PiliPlus/common/widgets/disabled_icon.dart'; -import 'package:PiliPlus/common/widgets/gesture/immediate_tap_gesture_recognizer.dart'; import 'package:PiliPlus/common/widgets/gesture/mouse_interactive_viewer.dart'; -import 'package:PiliPlus/common/widgets/loading_widget.dart'; import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/common/widgets/player_bar.dart'; import 'package:PiliPlus/common/widgets/progress_bar/audio_video_progress_bar.dart'; import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; -import 'package:PiliPlus/models/common/sponsor_block/action_type.dart'; -import 'package:PiliPlus/models/common/sponsor_block/post_segment_model.dart'; -import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; -import 'package:PiliPlus/models/common/super_resolution_type.dart'; import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/video/play/url.dart'; import 'package:PiliPlus/models_new/video/video_detail/episode.dart' as ugc; @@ -28,28 +22,22 @@ import 'package:PiliPlus/models_new/video/video_detail/episode.dart'; import 'package:PiliPlus/models_new/video/video_detail/section.dart'; import 'package:PiliPlus/models_new/video/video_detail/ugc_season.dart'; import 'package:PiliPlus/pages/common/common_intro_controller.dart'; -import 'package:PiliPlus/pages/danmaku/danmaku_model.dart'; -import 'package:PiliPlus/pages/live_room/widgets/bottom_control.dart' - as live_bottom; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/introduction/pgc/controller.dart'; -import 'package:PiliPlus/pages/video/post_panel/popup_menu_text.dart'; -import 'package:PiliPlus/pages/video/post_panel/view.dart'; import 'package:PiliPlus/pages/video/widgets/header_control.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/bottom_control_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/data_status.dart'; import 'package:PiliPlus/plugin/pl_player/models/double_tap_type.dart'; -import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/gesture_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/plugin/pl_player/models/video_fit_type.dart'; +import 'package:PiliPlus/plugin/pl_player/view/simple_video_texture.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/app_bar_ani.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/backward_seek.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/bottom_control.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/common_btn.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/forward_seek.dart'; -import 'package:PiliPlus/plugin/pl_player/widgets/mpv_convert_webp.dart'; import 'package:PiliPlus/plugin/pl_player/widgets/play_pause_btn.dart'; import 'package:PiliPlus/utils/connectivity_utils.dart'; import 'package:PiliPlus/utils/duration_utils.dart'; @@ -58,27 +46,20 @@ import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/mobile_observer.dart'; -import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:canvas_danmaku/canvas_danmaku.dart'; -import 'package:collection/collection.dart'; import 'package:easy_debounce/easy_throttle.dart'; -import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/foundation.dart' show clampDouble, kDebugMode; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart' - show RenderProxyBox, SemanticsConfiguration; import 'package:flutter/services.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_volume_controller/flutter_volume_controller.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:get/get.dart'; -import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; import 'package:media_kit_video/media_kit_video.dart'; import 'package:screen_brightness_platform_interface/screen_brightness_platform_interface.dart'; import 'package:window_manager/window_manager.dart'; @@ -142,8 +123,6 @@ class _PLVideoPlayerState extends State final RxBool _brightnessIndicator = false.obs; Timer? _brightnessTimer; - late FullScreenMode mode; - late final RxBool showRestoreScaleBtn = false.obs; GestureType? _gestureType; @@ -258,42 +237,17 @@ class _PLVideoPlayerState extends State } } - if (Platform.isIOS || plPlayerController.setSystemBrightness) { - _brightnessValue.value = - await ScreenBrightnessPlatform.instance.system; - _brightnessListener = ScreenBrightnessPlatform - .instance - .onSystemScreenBrightnessChanged - .listen(listener); - } else { - _brightnessValue.value = - await ScreenBrightnessPlatform.instance.application; - _brightnessListener = ScreenBrightnessPlatform - .instance - .onApplicationScreenBrightnessChanged - .listen(listener); - } + _brightnessValue.value = + await ScreenBrightnessPlatform.instance.system; + _brightnessListener = ScreenBrightnessPlatform + .instance + .onSystemScreenBrightnessChanged + .listen(listener); } catch (_) {} }); } - if (plPlayerController.enableTapDm) { - _tapGestureRecognizer = ImmediateTapGestureRecognizer( - onTapDown: plPlayerController.enableShowDanmaku.value - ? _onTapDown - : null, - onTapUp: _onTapUp, - onTapCancel: _removeDmAction, - ); - - _danmakuListener = plPlayerController.enableShowDanmaku.listen((value) { - if (!value) _removeDmAction(); - _tapGestureRecognizer.onTapDown = value ? _onTapDown : null; - }); - } else { - _tapGestureRecognizer = ImmediateTapGestureRecognizer(onTapUp: _onTapUp); - } - + _tapGestureRecognizer = TapGestureRecognizer()..onTapUp = _onTapUp; _doubleTapGestureRecognizer = DoubleTapGestureRecognizer() ..onDoubleTapDown = _onDoubleTapDown; } @@ -318,15 +272,9 @@ class _PLVideoPlayerState extends State Future setBrightness(double value) async { try { - if (Platform.isIOS || plPlayerController.setSystemBrightness) { - await ScreenBrightnessPlatform.instance.setSystemScreenBrightness( - value, - ); - } else { - await ScreenBrightnessPlatform.instance.setApplicationScreenBrightness( - value, - ); - } + await ScreenBrightnessPlatform.instance.setSystemScreenBrightness( + value, + ); } catch (_) {} _brightnessIndicator.value = true; _brightnessTimer?.cancel(); @@ -352,7 +300,6 @@ class _PLVideoPlayerState extends State FlutterVolumeController.removeListener(); } transformationController.dispose(); - _removeDmAction(); super.dispose(); } @@ -424,70 +371,6 @@ class _PLVideoPlayerState extends State ), ), - /// 高能进度条 - BottomControlType.dmChart => Obx( - () { - final list = videoDetailController.dmTrend.value?.dataOrNull; - if (list != null && list.isNotEmpty) { - final show = videoDetailController.showDmTrendChart.value; - return ComBtn( - width: widgetWidth, - height: 30, - tooltip: '高能进度条', - icon: DisabledIcon( - disable: !show, - child: const Icon( - Icons.show_chart, - size: 22, - color: Colors.white, - ), - ), - onTap: () => videoDetailController.showDmTrendChart.value = !show, - ); - } - return const SizedBox.shrink(); - }, - ), - - /// 超分辨率 - BottomControlType.superResolution => Obx( - () { - final type = plPlayerController.superResolutionType.value; - return PopupMenuButton( - tooltip: '超分辨率', - requestFocus: false, - initialValue: type, - color: Colors.black.withValues(alpha: 0.8), - itemBuilder: (context) { - return SuperResolutionType.values - .map( - (type) => PopupMenuItem( - height: 35, - padding: const EdgeInsets.only(left: 30), - value: type, - onTap: () => plPlayerController.setShader(type), - child: Text( - type.label, - style: const TextStyle( - color: Colors.white, - fontSize: 13, - ), - ), - ), - ) - .toList(); - }, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 8), - child: Text( - type.label, - style: const TextStyle(color: Colors.white, fontSize: 13), - ), - ), - ); - }, - ), - /// 分段信息 BottomControlType.viewPoints => Obx( () { @@ -820,14 +703,12 @@ class _PLVideoPlayerState extends State SmartDialog.showToast("画质已变为:${newQa.desc}"); // update - if (!plPlayerController.tempPlayerConf) { - GStorage.setting.put( - await ConnectivityUtils.isWiFi - ? SettingBoxKey.defaultVideoQa - : SettingBoxKey.defaultVideoQaCellular, - quality, - ); - } + GStorage.setting.put( + await ConnectivityUtils.isWiFi + ? SettingBoxKey.defaultVideoQa + : SettingBoxKey.defaultVideoQaCellular, + quality, + ); }, child: Text( item.newDesc ?? '', @@ -892,11 +773,7 @@ class _PLVideoPlayerState extends State final flag = isFullScreen || plPlayerController.isDesktopPip || maxWidth >= 500; List userSpecifyItemRight = [ - if (isNotFileSource && plPlayerController.showDmChart) - BottomControlType.dmChart, - if (plPlayerController.isAnim) BottomControlType.superResolution, - if (isNotFileSource && plPlayerController.showViewPoints) - BottomControlType.viewPoints, + if (isNotFileSource) BottomControlType.viewPoints, if (isNotFileSource && anySeason) BottomControlType.episode, if (flag) BottomControlType.fit, if (isNotFileSource) BottomControlType.aiTranslate, @@ -937,19 +814,15 @@ class _PLVideoPlayerState extends State void _onInteractionStart(ScaleStartDetails details) { if (plPlayerController.controlsLock.value) return; - // 如果起点太靠上则屏蔽 final localFocalPoint = details.localFocalPoint; - final dx = localFocalPoint.dx; - final dy = localFocalPoint.dy; - if (dx < 40 || dy < 40) return; - if (dx > maxWidth - 40 || dy > maxHeight - 40) return; + if (localFocalPoint.dx > maxWidth - 40 || + localFocalPoint.dy > maxHeight - 40) { + return; + } if (details.pointerCount > 1) { interacting = true; } initialFocalPoint = localFocalPoint; - // if (kDebugMode) { - // debugPrint("_initialFocalPoint$_initialFocalPoint"); - // } _gestureType = null; } @@ -976,32 +849,20 @@ class _PLVideoPlayerState extends State if (dx > 3 * dy) { _gestureType = GestureType.horizontal; } else if (dy > 3 * dx) { - if (!plPlayerController.enableSlideVolumeBrightness && - !plPlayerController.enableSlideFS) { - return; - } - // _gestureType = 'vertical'; final double tapPosition = details.localFocalPoint.dx; final double sectionWidth = maxWidth / 3; if (tapPosition < sectionWidth) { - if (PlatformUtils.isDesktop || - !plPlayerController.enableSlideVolumeBrightness) { + if (PlatformUtils.isDesktop) { return; } // 左边区域 _gestureType = GestureType.left; } else if (tapPosition < sectionWidth * 2) { - if (!plPlayerController.enableSlideFS) { - return; - } // 全屏 _gestureType = GestureType.center; } else { - if (!plPlayerController.enableSlideVolumeBrightness) { - return; - } // 右边区域 _gestureType = GestureType.right; } @@ -1070,7 +931,6 @@ class _PLVideoPlayerState extends State ..onUpdatedSliderProgress(result) ..onChangedSliderStart(); if (!plPlayerController.isFileSource && - plPlayerController.showSeekPreview && plPlayerController.cancelSeek != true) { plPlayerController.updatePreviewIndex(newPos ~/ 1000); } @@ -1085,24 +945,16 @@ class _PLVideoPlayerState extends State const double threshold = 2.5; // 滑动阈值 double cumulativeDy = details.localFocalPoint.dy - initialFocalPoint.dy; - void fullScreenTrigger(bool status) { - plPlayerController.triggerFullScreen(status: status); - } - if (cumulativeDy > threshold) { _gestureType = GestureType.center_down; - if (isFullScreen ^ plPlayerController.fullScreenGestureReverse) { - fullScreenTrigger( - plPlayerController.fullScreenGestureReverse, - ); + if (isFullScreen) { + plPlayerController.triggerFullScreen(status: false); } // if (kDebugMode) debugPrint('center_down:$cumulativeDy'); } else if (cumulativeDy < -threshold) { _gestureType = GestureType.center_up; - if (!isFullScreen ^ plPlayerController.fullScreenGestureReverse) { - fullScreenTrigger( - !plPlayerController.fullScreenGestureReverse, - ); + if (!isFullScreen) { + plPlayerController.triggerFullScreen(status: true); } // if (kDebugMode) debugPrint('center_up:$cumulativeDy'); } @@ -1125,14 +977,10 @@ class _PLVideoPlayerState extends State } void _onInteractionEnd(ScaleEndDetails details) { - if (Platform.isAndroid && - _gestureType == .left && - plPlayerController.setSystemBrightness) { + if (Platform.isAndroid && _gestureType == .left) { ScreenBrightnessPlatform.instance.restoreBrightnessMode(); } - if (plPlayerController.showSeekPreview) { - plPlayerController.showPreview.value = false; - } + plPlayerController.showPreview.value = false; if (plPlayerController.isSliderMoving.value) { if (plPlayerController.cancelSeek == true) { plPlayerController.onUpdatedSliderProgress( @@ -1188,40 +1036,11 @@ class _PLVideoPlayerState extends State onTapDesktop(); break; default: - if (_suspendedDm == null) { - plPlayerController.controls = !plPlayerController.showControls.value; - } else if (_suspendedDm!.suspend) { - _dmOffset.value = details.localPosition; - } else { - _suspendedDm = null; - } + plPlayerController.controls = !plPlayerController.showControls.value; break; } } - void _onTapDown(TapDownDetails details) { - final ctr = plPlayerController.danmakuController; - if (ctr != null) { - final pos = details.localPosition; - final res = ctr.findSingleDanmaku(pos); - if (res != null) { - final (dy, item) = res; - if (item != _suspendedDm) { - _suspendedDm?.suspend = false; - if (item.content.extra == null) { - _dmOffset.value = null; - return; - } - _suspendedDm = item..suspend = true; - this.dy = dy; - } - } else { - _suspendedDm?.suspend = false; - _dmOffset.value = null; - } - } - } - void _onDoubleTapDown(TapDownDetails details) { switch (details.kind) { case ui.PointerDeviceKind.mouse when PlatformUtils.isDesktop: @@ -1234,18 +1053,14 @@ class _PLVideoPlayerState extends State } LongPressGestureRecognizer? _longPressRecognizer; - LongPressGestureRecognizer get longPressRecognizer => _longPressRecognizer ??= - LongPressGestureRecognizer( - duration: plPlayerController.enableTapDm - ? const Duration(milliseconds: 300) - : null, - ) + LongPressGestureRecognizer get longPressRecognizer => + _longPressRecognizer ??= LongPressGestureRecognizer() ..onLongPressStart = ((_) => plPlayerController.setLongPressStatus(true)) ..onLongPressEnd = ((_) => plPlayerController.setLongPressStatus(false)) ..onLongPressCancel = (() => plPlayerController.setLongPressStatus(false)); - late final ImmediateTapGestureRecognizer _tapGestureRecognizer; + late final TapGestureRecognizer _tapGestureRecognizer; late final DoubleTapGestureRecognizer _doubleTapGestureRecognizer; StreamSubscription? _danmakuListener; @@ -1313,15 +1128,10 @@ class _PLVideoPlayerState extends State ..onUpdatedSliderProgress(result) ..onChangedSliderStart(); if (!plPlayerController.isFileSource && - plPlayerController.showSeekPreview && plPlayerController.cancelSeek != true) { plPlayerController.updatePreviewIndex(newPos ~/ 1000); } } else if (_gestureType == GestureType.right) { - if (!plPlayerController.enableSlideVolumeBrightness) { - return; - } - final double level = maxHeight * 0.5; EasyThrottle.throttle( 'setVolume', @@ -1371,8 +1181,8 @@ class _PLVideoPlayerState extends State final isLive = plPlayerController.isLive; final child = Stack( - fit: StackFit.passthrough, key: _playerKey, + fit: .passthrough, children: [ _videoWidget, @@ -1382,32 +1192,16 @@ class _PLVideoPlayerState extends State if (!isLive) Positioned.fill( child: IgnorePointer( - ignoring: !plPlayerController.enableDragSubtitle, child: Obx( () => SubtitleView( controller: videoController, configuration: plPlayerController.subtitleConfig.value, - enableDragSubtitle: plPlayerController.enableDragSubtitle, onUpdatePadding: plPlayerController.onUpdatePadding, ), ), ), ), - if (plPlayerController.enableTapDm) - Obx( - () { - if (!plPlayerController.enableShowDanmaku.value) { - return const SizedBox.shrink(); - } - final dmOffset = _dmOffset.value; - if (dmOffset != null && _suspendedDm != null) { - return _buildDmAction(_suspendedDm!, dmOffset); - } - return const SizedBox.shrink(); - }, - ), - /// 长按倍速 toast if (!isLive) IgnorePointer( @@ -1433,7 +1227,7 @@ class _PLVideoPlayerState extends State ), child: Obx( () => Text( - '${plPlayerController.enableAutoLongPressSpeed ? (plPlayerController.longPressStatus.value ? plPlayerController.lastPlaybackSpeed : plPlayerController.playbackSpeed) * 2 : plPlayerController.longPressSpeed}倍速中', + '${plPlayerController.longPressSpeed}倍速中', style: const TextStyle( color: Colors.white, fontSize: 13, @@ -1621,7 +1415,6 @@ class _PLVideoPlayerState extends State isTop: true, controller: animationController, isFullScreen: isFullScreen, - removeSafeArea: plPlayerController.removeSafeArea, child: plPlayerController.isDesktopPip ? GestureDetector( behavior: HitTestBehavior.translucent, @@ -1634,7 +1427,6 @@ class _PLVideoPlayerState extends State isTop: false, controller: animationController, isFullScreen: isFullScreen, - removeSafeArea: plPlayerController.removeSafeArea, child: widget.bottomControl ?? BottomControl( @@ -1726,29 +1518,8 @@ class _PLVideoPlayerState extends State right: 0, child: Obx( () { - final showControls = plPlayerController.showControls.value; - final bool offstage; - switch (plPlayerController.progressType) { - case .alwaysShow: - offstage = showControls; - case .alwaysHide: - if (!plPlayerController.isSliderMoving.value) { - return const SizedBox.shrink(); - } - offstage = showControls; - case .onlyShowFullScreen: - offstage = - showControls || - (!isFullScreen && - !plPlayerController.isSliderMoving.value); - case .onlyHideFullScreen: - offstage = - showControls || - (isFullScreen && - !plPlayerController.isSliderMoving.value); - } return Offstage( - offstage: offstage, + offstage: plPlayerController.showControls.value, child: Stack( clipBehavior: Clip.none, alignment: Alignment.bottomCenter, @@ -1783,8 +1554,7 @@ class _PLVideoPlayerState extends State segments: videoDetailController.segmentProgressList, ), ), - if (plPlayerController.showViewPoints && - videoDetailController.viewPointList.isNotEmpty && + if (videoDetailController.viewPointList.isNotEmpty && videoDetailController.showVP.value) Padding( padding: const .only(bottom: 4.25), @@ -1798,11 +1568,6 @@ class _PLVideoPlayerState extends State : null, ), ), - if (plPlayerController.showDmChart && - videoDetailController.showDmTrendChart.value) - if (videoDetailController.dmTrend.value?.dataOrNull - case final list?) - buildDmChart(primary, list, videoDetailController), ], ), ); @@ -1810,7 +1575,7 @@ class _PLVideoPlayerState extends State ), ), - if (!isLive && plPlayerController.showSeekPreview) + if (!isLive) buildSeekPreviewWidget( plPlayerController, maxWidth, @@ -1820,85 +1585,77 @@ class _PLVideoPlayerState extends State if (isFullScreen || plPlayerController.isDesktopPip) ...[ // 锁 - if (plPlayerController.showFsLockBtn) - ViewSafeArea( - right: false, - left: !plPlayerController.removeSafeArea, - child: Align( - alignment: Alignment.centerLeft, - child: FractionalTranslation( - translation: const Offset(1, -0.4), - child: Obx( - () => Offstage( - offstage: !plPlayerController.showControls.value, - child: DecoratedBox( - decoration: const BoxDecoration( - color: Color(0x45000000), - borderRadius: BorderRadius.all(Radius.circular(8)), - ), - child: Obx(() { - final controlsLock = - plPlayerController.controlsLock.value; - return ComBtn( - tooltip: controlsLock ? '解锁' : '锁定', - icon: controlsLock - ? const Icon( - FontAwesomeIcons.lock, - size: 15, - color: Colors.white, - ) - : const Icon( - FontAwesomeIcons.lockOpen, - size: 15, - color: Colors.white, - ), - onTap: () => - plPlayerController.onLockControl(!controlsLock), - ); - }), + ViewSafeArea( + right: false, + child: Align( + alignment: Alignment.centerLeft, + child: FractionalTranslation( + translation: const Offset(1, -0.4), + child: Obx( + () => Offstage( + offstage: !plPlayerController.showControls.value, + child: DecoratedBox( + decoration: const BoxDecoration( + color: Color(0x45000000), + borderRadius: BorderRadius.all(Radius.circular(8)), ), + child: Obx(() { + final controlsLock = + plPlayerController.controlsLock.value; + return ComBtn( + tooltip: controlsLock ? '解锁' : '锁定', + icon: controlsLock + ? const Icon( + FontAwesomeIcons.lock, + size: 15, + color: Colors.white, + ) + : const Icon( + FontAwesomeIcons.lockOpen, + size: 15, + color: Colors.white, + ), + onTap: () => + plPlayerController.onLockControl(!controlsLock), + ); + }), ), ), ), ), ), + ), // 截图 - if (plPlayerController.showFsScreenshotBtn) - ViewSafeArea( - left: false, - right: !plPlayerController.removeSafeArea, - child: Obx( - () => Align( - alignment: Alignment.centerRight, - child: FractionalTranslation( - translation: const Offset(-1, -0.4), - child: Offstage( - offstage: !plPlayerController.showControls.value, - child: DecoratedBox( - decoration: const BoxDecoration( - color: Color(0x45000000), - borderRadius: BorderRadius.all(Radius.circular(8)), - ), - child: ComBtn( - tooltip: '截图', - icon: const Icon( - Icons.photo_camera, - size: 20, - color: Colors.white, - ), - onLongPress: - (Platform.isAndroid || kDebugMode) && !isLive - ? screenshotWebp - : null, - onTap: plPlayerController.takeScreenshot, + ViewSafeArea( + left: false, + child: Obx( + () => Align( + alignment: Alignment.centerRight, + child: FractionalTranslation( + translation: const Offset(-1, -0.4), + child: Offstage( + offstage: !plPlayerController.showControls.value, + child: DecoratedBox( + decoration: const BoxDecoration( + color: Color(0x45000000), + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + child: ComBtn( + tooltip: '截图', + icon: const Icon( + Icons.photo_camera, + size: 20, + color: Colors.white, ), + onTap: plPlayerController.takeScreenshot, ), ), ), ), ), ), + ), ], Obx(() { @@ -2073,7 +1830,7 @@ class _PLVideoPlayerState extends State child: FittedBox( fit: videoFit.boxFit, alignment: widget.alignment, - child: SimpleVideo( + child: SimpleVideoTexture( controller: plPlayerController.videoController!, fill: widget.fill, aspectRatio: videoFit.aspectRatio, @@ -2092,356 +1849,4 @@ class _PLVideoPlayerState extends State first: plPlayerController.position.inMilliseconds / 1000.0, second: plPlayerController.position.inMilliseconds / 1000.0, ); - - Future screenshotWebp() async { - final videoInfo = videoDetailController.data; - final ids = videoInfo.dash!.video!.map((i) => i.id!).toSet(); - final video = videoDetailController.findVideoByQa(ids.min); - - VideoQuality qa = video.quality; - String? url = video.baseUrl; - if (url == null) return; - - final ctr = plPlayerController; - final theme = Theme.of(context); - final currentPos = ctr.position.inMilliseconds / 1000.0; - final duration = ctr.duration.value.inMilliseconds / 1000.0; - final model = PostSegmentModel( - segment: segment, - category: SegmentType.sponsor, - actionType: ActionType.skip, - ); - final isPlay = ctr.playerStatus.isPlaying; - if (isPlay) ctr.pause(); - - WebpPreset preset = WebpPreset.def; - - final success = - await showDialog( - context: Get.context!, - builder: (context) => AlertDialog( - title: const Text('动态截图'), - content: Column( - spacing: 12, - mainAxisSize: MainAxisSize.min, - children: [ - PostPanel.segmentWidget( - theme, - item: model, - currentPos: () => currentPos, - videoDuration: duration, - ), - PopupMenuText( - title: '选择画质', - value: () => qa.code, - onSelected: (value) { - final video = videoDetailController.findVideoByQa(value); - url = video.baseUrl; - qa = video.quality; - return false; - }, - itemBuilder: (context) => videoInfo.supportFormats! - .map( - (i) => PopupMenuItem( - enabled: ids.contains(i.quality), - value: i.quality, - child: Text(i.newDesc ?? ''), - ), - ) - .toList(), - getSelectTitle: (_) => qa.shortDesc, - ), - PopupMenuText( - title: 'webp预设', - value: () => preset, - onSelected: (value) { - preset = value; - return false; - }, - itemBuilder: (context) => WebpPreset.values - .map((i) => PopupMenuItem(value: i, child: Text(i.name))) - .toList(), - getSelectTitle: (i) => '${i.name}(${i.desc})', - ), - Text( - '*转码使用CPU,速度可能慢于播放,请不要选择过长的时间段或过高画质', - style: theme.textTheme.bodySmall, - ), - ], - ), - actions: [ - TextButton( - onPressed: Get.back, - child: Text( - '取消', - style: TextStyle( - color: theme.colorScheme.outline, - ), - ), - ), - TextButton( - onPressed: () { - if (segment.first < segment.second) { - Get.back(result: true); - } - }, - child: const Text('确定'), - ), - ], - ), - ) ?? - false; - if (!success) return; - - final progress = 0.0.obs; - final name = - '${ctr.cid}-${segment.first.toStringAsFixed(3)}_${segment.second.toStringAsFixed(3)}.webp'; - final file = '$tmpDirPath/$name'; - - final mpv = MpvConvertWebp( - url!, - file, - segment.first, - segment.second, - progress: progress, - preset: preset, - ); - final future = mpv.convert().whenComplete( - () => SmartDialog.dismiss(status: SmartStatus.loading), - ); - - SmartDialog.showLoading( - backType: SmartBackType.normal, - builder: (_) => LoadingWidget(progress: progress, msg: '正在保存,可能需要较长时间'), - onDismiss: () async { - if (progress.value < 1.0) { - mpv.dispose(); - } - if (await future) { - await ImageUtils.saveFileImg( - filePath: file, - fileName: name, - needToast: true, - ); - } else { - SmartDialog.showToast('转码出现错误或已取消'); - } - if (isPlay) ctr.play(); - }, - ); - } - - static const _overlaySpacing = 5.0; - static const _actionItemWidth = 40.0; - static const _actionItemHeight = 35.0 - _triangleHeight; - - DanmakuItem? _suspendedDm; - late double dy = 0; - late final Rxn _dmOffset = Rxn(); - - void _removeDmAction() { - if (_suspendedDm != null) { - _suspendedDm?.suspend = false; - _suspendedDm = null; - _dmOffset.value = null; - } - } - - Widget _dmActionItem( - Widget child, { - required Future? Function() onTap, - }) { - return GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () async { - await onTap(); - _removeDmAction(); - }, - child: SizedBox( - width: _actionItemWidth, - height: _actionItemHeight, - child: Center( - child: child, - ), - ), - ); - } - - static final _timeRegExp = RegExp(r'(?:\d+[::])?\d+[::][0-5]?\d(?!\d)'); - - int? _getValidOffset(String data) { - if (_timeRegExp.firstMatch(data) case final timeStr?) { - final offset = DurationUtils.parseDuration(timeStr.group(0)); - if (0 < offset && - offset * 1000 < videoDetailController.data.timeLength!) { - return offset; - } - } - return null; - } - - Widget _buildDmAction( - DanmakuItem item, - Offset offset, - ) { - final dx = offset.dx; - // fullscreen - if (dx > maxWidth) { - _removeDmAction(); - return const SizedBox.shrink(); - } - - final seekOffset = _getValidOffset(item.content.text); - - final overlayWidth = _actionItemWidth * (seekOffset == null ? 3 : 4); - - final top = dy + item.height + _triangleHeight + 2; - - final realLeft = dx + overlayWidth / 2; - - final left = realLeft.clamp( - _overlaySpacing + overlayWidth, - maxWidth - _overlaySpacing, - ); - - final right = maxWidth - left; - final triangleOffset = realLeft - left; - - if (right > (maxWidth - item.xPosition)) { - _removeDmAction(); - return const SizedBox.shrink(); - } - - final extra = item.content.extra; - - return Positioned( - right: right, - top: top, - child: _DanmakuTip( - offset: triangleOffset, - child: Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: switch (extra) { - null => throw UnimplementedError(), - VideoDanmaku() => [ - Stack( - clipBehavior: Clip.none, - children: [ - _dmActionItem( - extra.isLike - ? const Icon( - size: 20, - CustomIcons.player_dm_tip_like_solid, - color: Colors.white, - ) - : const Icon( - size: 20, - CustomIcons.player_dm_tip_like, - color: Colors.white, - ), - onTap: () => HeaderControl.likeDanmaku( - extra, - plPlayerController.cid!, - ), - ), - if (extra.like > 0) - Positioned( - left: _actionItemWidth - 10.5, - top: 0, - child: Text( - extra.like.toString(), - style: const TextStyle( - fontSize: 10.5, - color: Colors.white, - ), - ), - ), - ], - ), - - _dmActionItem( - const Icon( - size: 19, - CustomIcons.player_dm_tip_copy, - color: Colors.white, - ), - onTap: () => Utils.copyText(item.content.text), - ), - if (item.content.selfSend) - _dmActionItem( - const Icon( - size: 20, - CustomIcons.player_dm_tip_recall, - color: Colors.white, - ), - onTap: () => HeaderControl.deleteDanmaku( - extra.id, - plPlayerController.cid!, - ), - ) - else - _dmActionItem( - const Icon( - size: 20, - CustomIcons.player_dm_tip_back, - color: Colors.white, - ), - onTap: () => HeaderControl.reportDanmaku( - context, - extra: extra, - ctr: plPlayerController, - ), - ), - if (seekOffset != null) - _dmActionItem( - const Icon( - size: 18, - Icons.gps_fixed_outlined, - color: Colors.white, - ), - onTap: () => plPlayerController.seekTo( - Duration(seconds: seekOffset), - isSeek: false, - ), - ), - ], - LiveDanmaku() => [ - _dmActionItem( - const Icon( - size: 20, - MdiIcons.accountOutline, - color: Colors.white, - ), - onTap: () => Get.toNamed('/member?mid=${extra.mid}'), - ), - _dmActionItem( - const Icon( - size: 19, - CustomIcons.player_dm_tip_copy, - color: Colors.white, - ), - onTap: () => Utils.copyText(item.content.text), - ), - _dmActionItem( - const Icon( - size: 20, - CustomIcons.player_dm_tip_back, - color: Colors.white, - ), - onTap: () => HeaderControl.reportLiveDanmaku( - context, - roomId: (widget.bottomControl as live_bottom.BottomControl) - .liveRoomCtr - .roomId, - msg: item.content.text, - extra: extra, - ), - ), - ], - }, - ), - ), - ); - } } diff --git a/lib/plugin/pl_player/view/widgets.dart b/lib/plugin/pl_player/view/widgets.dart index d1227d719..ae16e251c 100644 --- a/lib/plugin/pl_player/view/widgets.dart +++ b/lib/plugin/pl_player/view/widgets.dart @@ -1,56 +1,5 @@ part of 'view.dart'; -Widget buildDmChart( - Color color, - List dmTrend, - VideoDetailController videoDetailController, [ - double offset = 0, -]) { - return IgnorePointer( - child: Container( - height: 12, - margin: EdgeInsets.only( - bottom: - videoDetailController.viewPointList.isNotEmpty && - videoDetailController.showVP.value - ? 19.25 + offset - : 4.25 + offset, - ), - child: LineChart( - LineChartData( - titlesData: const FlTitlesData(show: false), - lineTouchData: const LineTouchData(enabled: false), - gridData: const FlGridData(show: false), - borderData: FlBorderData(show: false), - minX: 0, - maxX: (dmTrend.length - 1).toDouble(), - minY: 0, - maxY: dmTrend.max, - lineBarsData: [ - LineChartBarData( - spots: List.generate( - dmTrend.length, - (index) => FlSpot( - index.toDouble(), - dmTrend[index], - ), - ), - isCurved: true, - barWidth: 1, - color: color, - dotData: const FlDotData(show: false), - belowBarData: BarAreaData( - show: true, - color: color.withValues(alpha: 0.4), - ), - ), - ], - ), - ), - ), - ); -} - Widget buildSeekPreviewWidget( PlPlayerController plPlayerController, double maxWidth, @@ -291,94 +240,6 @@ class _VideoShotImageState extends State { } } -const double _triangleHeight = 5.6; - -class _DanmakuTip extends SingleChildRenderObjectWidget { - const _DanmakuTip({ - this.offset = 0, - super.child, - }); - - final double offset; - - @override - RenderObject createRenderObject(BuildContext context) { - return _RenderDanmakuTip(offset: offset); - } - - @override - void updateRenderObject( - BuildContext context, - _RenderDanmakuTip renderObject, - ) { - renderObject.offset = offset; - } -} - -class _RenderDanmakuTip extends RenderProxyBox { - _RenderDanmakuTip({ - required double offset, - }) : _offset = offset; - - double _offset; - double get offset => _offset; - set offset(double value) { - if (_offset == value) return; - _offset = value; - markNeedsPaint(); - } - - @override - void paint(PaintingContext context, Offset offset) { - final paint = Paint() - ..color = const Color(0xB3000000) - ..style = .fill; - - final radius = size.height / 2; - const triangleBase = _triangleHeight * 2 / 3; - - final triangleCenterX = (size.width / 2 + _offset).clamp( - radius + triangleBase, - size.width - radius - triangleBase, - ); - final path = Path() - // triangle (exceed) - ..moveTo(triangleCenterX - triangleBase, 0) - ..lineTo(triangleCenterX, -_triangleHeight) - ..lineTo(triangleCenterX + triangleBase, 0) - // top - ..lineTo(size.width - radius, 0) - // right - ..arcToPoint( - Offset(size.width - radius, size.height), - radius: Radius.circular(radius), - ) - // bottom - ..lineTo(radius, size.height) - // left - ..arcToPoint( - Offset(radius, 0), - radius: Radius.circular(radius), - ) - ..close(); - - context.canvas - ..save() - ..translate(offset.dx, offset.dy) - ..drawPath(path, paint) - ..drawPath( - path, - paint - ..color = const Color(0x7EFFFFFF) - ..style = PaintingStyle.stroke - ..strokeWidth = 1.25, - ) - ..restore(); - - super.paint(context, offset); - } -} - class _VideoTime extends LeafRenderObjectWidget { const _VideoTime({ required this.position, @@ -465,12 +326,6 @@ class _RenderVideoTime extends RenderBox { return Size(paragraph.maxIntrinsicWidth, paragraph.height * 2); } - @override - void describeSemanticsConfiguration(SemanticsConfiguration config) { - super.describeSemanticsConfiguration(config); - config.label = 'position:$_position\nduration:$_duration'; - } - @override void performLayout() { size = computeDryLayout(constraints); diff --git a/lib/plugin/pl_player/widgets/app_bar_ani.dart b/lib/plugin/pl_player/widgets/app_bar_ani.dart index fd8058e31..1699a2ab4 100644 --- a/lib/plugin/pl_player/widgets/app_bar_ani.dart +++ b/lib/plugin/pl_player/widgets/app_bar_ani.dart @@ -8,14 +8,12 @@ class AppBarAni extends StatelessWidget { required this.controller, required this.isTop, required this.isFullScreen, - required this.removeSafeArea, }); final Widget child; final AnimationController controller; final bool isTop; final bool isFullScreen; - final bool removeSafeArea; static final _topPos = Tween( begin: const Offset(0.0, -1.0), @@ -55,13 +53,11 @@ class AppBarAni extends StatelessWidget { decoration: BoxDecoration( gradient: isTop ? _topDecoration : _bottomDecoration, ), - child: removeSafeArea - ? child - : ViewSafeArea( - left: isFullScreen, - right: isFullScreen, - child: child, - ), + child: ViewSafeArea( + left: isFullScreen, + right: isFullScreen, + child: child, + ), ), ); } diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index e990a8ff6..a502d75b0 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -2,7 +2,6 @@ import 'package:PiliPlus/common/widgets/progress_bar/audio_video_progress_bar.da import 'package:PiliPlus/common/widgets/progress_bar/segment_progress_bar.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; -import 'package:PiliPlus/plugin/pl_player/view/view.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:flutter/material.dart'; @@ -29,16 +28,14 @@ class BottomControl extends StatelessWidget { } void onDragUpdate(ThumbDragDetails duration) { - if (!controller.isFileSource && controller.showSeekPreview) { + if (!controller.isFileSource) { controller.updatePreviewIndex(duration.timeStamp.inSeconds); } controller.onUpdatedSliderProgress(duration.timeStamp); } void onSeek(Duration duration) { - if (controller.showSeekPreview) { - controller.showPreview.value = false; - } + controller.showPreview.value = false; controller ..onChangedSliderEnd() ..onChangedSlider(duration.inSeconds) @@ -100,8 +97,7 @@ class BottomControl extends StatelessWidget { segments: videoDetailController.segmentProgressList, ), ), - if (controller.showViewPoints && - videoDetailController.viewPointList.isNotEmpty && + if (videoDetailController.viewPointList.isNotEmpty && videoDetailController.showVP.value) Padding( padding: const .only(bottom: 8.75), @@ -113,10 +109,6 @@ class BottomControl extends StatelessWidget { : null, ), ), - if (videoDetailController.showDmTrendChart.value) - if (videoDetailController.dmTrend.value?.dataOrNull - case final list?) - buildDmChart(primary, list, videoDetailController, 4.5), ], ), ), diff --git a/lib/plugin/pl_player/widgets/mpv_convert_webp.dart b/lib/plugin/pl_player/widgets/mpv_convert_webp.dart deleted file mode 100644 index f6911bc69..000000000 --- a/lib/plugin/pl_player/widgets/mpv_convert_webp.dart +++ /dev/null @@ -1,161 +0,0 @@ -// ignore_for_file: implementation_imports - -import 'dart:async'; -import 'dart:ffi'; - -import 'package:PiliPlus/http/browser_ua.dart'; -import 'package:PiliPlus/http/constants.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; -import 'package:flutter/material.dart'; -import 'package:get/get_rx/get_rx.dart'; -import 'package:media_kit/ffi/src/allocation.dart'; -import 'package:media_kit/ffi/src/utf8.dart'; -import 'package:media_kit/generated/libmpv/bindings.dart' as generated; -import 'package:media_kit/media_kit.dart'; -import 'package:media_kit/src/player/native/core/initializer.dart'; - -class MpvConvertWebp { - final _mpv = NativePlayer.mpv; - late final Pointer _ctx; - final _completer = Completer(); - - bool _success = false; - - final String url; - final String outFile; - final double start; - final double duration; - final RxDouble? progress; - final WebpPreset preset; - - MpvConvertWebp( - this.url, - this.outFile, - this.start, - double end, { - this.progress, - this.preset = WebpPreset.def, - }) : duration = end - start; - - Future _init() async { - final enableHA = Pref.enableHA; - _ctx = await Initializer.create( - _mpv, - _onEvent, - options: { - 'o': outFile, - 'start': start.toStringAsFixed(3), - 'end': (start + duration).toStringAsFixed(3), - 'of': 'webp', - 'ovc': 'libwebp_anim', - 'ofopts': 'loop=0', - 'ovcopts': 'preset=${preset.flag}', - if (enableHA) 'vo': 'gpu', - if (enableHA) - 'hwdec': - '${Pref.hardwareDecoding},auto-copy', // transcode only support copy - }, - ); - NativePlayer.setHeader( - _mpv, - _ctx, - userAgent: BrowserUa.pc, - referer: HttpString.baseUrl, - ); - if (progress != null) { - _observeProperty('time-pos'); - } - final level = (kDebugMode ? 'info' : 'error').toNativeUtf8(); - _mpv.mpv_request_log_messages(_ctx, level); - calloc.free(level); - } - - void dispose() { - Initializer.dispose(_ctx); - _mpv.mpv_terminate_destroy(_ctx); - if (!_completer.isCompleted) _completer.complete(false); - } - - Future convert() async { - await _init(); - _command(['loadfile', url]); - return _completer.future; - } - - Future? _onEvent(Pointer event) { - switch (event.ref.event_id) { - case generated.mpv_event_id.MPV_EVENT_PROPERTY_CHANGE: - final prop = event.ref.data.cast().ref; - if (prop.name.toDartString() == 'time-pos' && - prop.format == generated.mpv_format.MPV_FORMAT_DOUBLE) { - progress!.value = (prop.data.cast().value - start) / duration; - } - break; - case generated.mpv_event_id.MPV_EVENT_FILE_LOADED: - _success = true; - break; - case generated.mpv_event_id.MPV_EVENT_LOG_MESSAGE: - final log = event.ref.data.cast().ref; - final prefix = log.prefix.toDartString().trim(); - final level = log.level.toDartString().trim(); - final text = log.text.toDartString().trim(); - debugPrint('WebpConvert: $level $prefix : $text'); - if (kDebugMode) { - if (level == 'error' || level == 'fatal') _success = false; - } else { - _success = false; - } - break; - case generated.mpv_event_id.MPV_EVENT_END_FILE || - generated.mpv_event_id.MPV_EVENT_SHUTDOWN: - progress?.value = 1; - _completer.complete(_success); - dispose(); - break; - } - return null; - } - - void _command(List args) { - final pointers = args.map((e) => e.toNativeUtf8()).toList(); - final arr = calloc>(pointers.length + 1); - for (int i = 0; i < args.length; i++) { - arr[i] = pointers[i]; - } - - _mpv.mpv_command(_ctx, arr); - - calloc.free(arr); - pointers.forEach(calloc.free); - } - - void _observeProperty(String property) { - final name = property.toNativeUtf8(); - _mpv.mpv_observe_property( - _ctx, - property.hashCode, - name, - generated.mpv_format.MPV_FORMAT_DOUBLE, - ); - - calloc.free(name); - } -} - -enum WebpPreset { - none('none', '无', '不使用预设'), - def('default', '默认', '默认预设'), - picture('picture', '图片', '数码照片,如人像、室内拍摄'), - photo('photo', '照片', '户外摄影,自然光环境'), - drawing('drawing', '绘图', '手绘或线稿,高对比度细节'), - icon('icon', '图标', '小型彩色图像'), - text('text', '文本', '文字类'), - ; - - final String flag; - final String name; - final String desc; - - const WebpPreset(this.flag, this.name, this.desc); -} diff --git a/lib/router/app_pages.dart b/lib/router/app_pages.dart index b0ffa21e1..226b8413d 100644 --- a/lib/router/app_pages.dart +++ b/lib/router/app_pages.dart @@ -5,7 +5,6 @@ import 'package:PiliPlus/pages/audio/view.dart'; import 'package:PiliPlus/pages/blacklist/view.dart'; import 'package:PiliPlus/pages/bubble/view.dart'; import 'package:PiliPlus/pages/danmaku_block/view.dart'; -import 'package:PiliPlus/pages/dlna/view.dart'; import 'package:PiliPlus/pages/download/view.dart'; import 'package:PiliPlus/pages/dynamics/view.dart'; import 'package:PiliPlus/pages/dynamics_create_vote/view.dart'; @@ -47,7 +46,6 @@ import 'package:PiliPlus/pages/msg_feed_top/like_me/view.dart'; import 'package:PiliPlus/pages/msg_feed_top/reply_me/view.dart'; import 'package:PiliPlus/pages/msg_feed_top/sys_msg/view.dart'; import 'package:PiliPlus/pages/music/view.dart'; -import 'package:PiliPlus/pages/my_reply/view.dart'; import 'package:PiliPlus/pages/popular_precious/view.dart'; import 'package:PiliPlus/pages/popular_series/view.dart'; import 'package:PiliPlus/pages/search/view.dart'; @@ -56,12 +54,10 @@ import 'package:PiliPlus/pages/search_trending/view.dart'; import 'package:PiliPlus/pages/setting/extra_setting.dart'; import 'package:PiliPlus/pages/setting/pages/bar_set.dart'; import 'package:PiliPlus/pages/setting/pages/color_select.dart'; -import 'package:PiliPlus/pages/setting/pages/font_size_select.dart'; import 'package:PiliPlus/pages/setting/pages/logs.dart'; import 'package:PiliPlus/pages/setting/pages/play_speed_set.dart'; import 'package:PiliPlus/pages/setting/play_setting.dart'; import 'package:PiliPlus/pages/setting/privacy_setting.dart'; -import 'package:PiliPlus/pages/setting/recommend_setting.dart'; import 'package:PiliPlus/pages/setting/style_setting.dart'; import 'package:PiliPlus/pages/setting/video_setting.dart'; import 'package:PiliPlus/pages/setting/view.dart'; @@ -71,7 +67,6 @@ import 'package:PiliPlus/pages/sponsor_block/view.dart'; import 'package:PiliPlus/pages/subscription/view.dart'; import 'package:PiliPlus/pages/subscription_detail/view.dart'; import 'package:PiliPlus/pages/video/view.dart'; -import 'package:PiliPlus/pages/webdav/view.dart'; import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/pages/whisper/view.dart'; import 'package:PiliPlus/pages/whisper_detail/view.dart'; @@ -87,7 +82,7 @@ class Routes { // 视频详情 GetPage(name: '/videoV', page: () => const VideoDetailPageV()), // - GetPage(name: '/webview', page: () => const WebviewPage()), + GetPage(name: '/webview', page: () => const WebViewPage()), // 设置 GetPage(name: '/setting', page: () => const SettingPage()), // @@ -115,8 +110,6 @@ class Routes { // 用户中心 GetPage(name: '/member', page: () => const MemberPage()), GetPage(name: '/memberSearch', page: () => const MemberSearchPage()), - // 推荐流设置 - GetPage(name: '/recommendSetting', page: () => const RecommendSetting()), // 音视频设置 GetPage(name: '/videoSetting', page: () => const VideoSetting()), // 播放器设置 @@ -130,7 +123,6 @@ class Routes { // GetPage(name: '/blackListPage', page: () => const BlackListPage()), GetPage(name: '/colorSetting', page: () => const ColorSelectPage()), - GetPage(name: '/fontSizeSetting', page: () => const FontSizeSelectPage()), // 关于 GetPage(name: '/about', page: () => const AboutPage()), // @@ -171,7 +163,6 @@ class Routes { GetPage(name: '/createFav', page: () => const CreateFavPage()), GetPage(name: '/editProfile', page: () => const EditProfilePage()), GetPage(name: '/settingsSearch', page: () => const SettingsSearchPage()), - GetPage(name: '/webdavSetting', page: () => const WebDavSettingPage()), GetPage(name: '/searchTrending', page: () => const SearchTrendingPage()), GetPage(name: '/dynTopic', page: () => const DynTopicPage()), GetPage(name: '/articleList', page: () => const ArticleListPage()), @@ -191,8 +182,6 @@ class Routes { GetPage(name: '/followed', page: () => const FollowedPage()), GetPage(name: '/sameFollowing', page: () => const FollowSamePage()), GetPage(name: '/download', page: () => const DownloadPage()), - GetPage(name: '/dlna', page: () => const DLNAPage()), - GetPage(name: '/myReply', page: () => const MyReply()), GetPage(name: '/videoWeb', page: () => const MemberVideoWeb()), GetPage(name: '/ssWeb', page: () => const MemberSSWeb()), GetPage(name: '/memberGuard', page: () => const MemberGuard()), diff --git a/lib/scripts/navigation_bar.patch b/lib/scripts/navigation_bar.patch new file mode 100644 index 000000000..0af658eea --- /dev/null +++ b/lib/scripts/navigation_bar.patch @@ -0,0 +1,167 @@ +diff --git a/packages/flutter/lib/src/material/navigation_bar.dart b/packages/flutter/lib/src/material/navigation_bar.dart +index 20c66878abd..40ca477568f 100644 +--- a/packages/flutter/lib/src/material/navigation_bar.dart ++++ b/packages/flutter/lib/src/material/navigation_bar.dart +@@ -288,8 +288,8 @@ class NavigationBar extends StatelessWidget { + shadowColor: shadowColor ?? navigationBarTheme.shadowColor ?? defaults.shadowColor, + surfaceTintColor: + surfaceTintColor ?? navigationBarTheme.surfaceTintColor ?? defaults.surfaceTintColor, +- child: SafeArea( +- maintainBottomViewPadding: maintainBottomViewPadding, ++ child: Padding( ++ padding: MediaQuery.viewPaddingOf(context).copyWith(top: 0), + child: Semantics( + role: SemanticsRole.tabBar, + explicitChildNodes: true, +@@ -595,26 +595,23 @@ class _NavigationDestinationBuilderState extends State<_NavigationDestinationBui + + return _NavigationBarDestinationSemantics( + enabled: widget.enabled, +- child: _NavigationBarDestinationTooltip( +- message: widget.tooltip ?? widget.label, +- child: _IndicatorInkWell( +- iconKey: iconKey, +- labelBehavior: info.labelBehavior, +- customBorder: +- info.indicatorShape ?? navigationBarTheme.indicatorShape ?? defaults.indicatorShape, +- overlayColor: info.overlayColor ?? navigationBarTheme.overlayColor, +- onTap: widget.enabled ? info.onTap : null, +- child: Row( +- children: [ +- Expanded( +- child: _NavigationBarDestinationLayout( +- icon: widget.buildIcon(context), +- iconKey: iconKey, +- label: widget.buildLabel(context), +- ), ++ child: _IndicatorInkWell( ++ iconKey: iconKey, ++ labelBehavior: info.labelBehavior, ++ customBorder: ++ info.indicatorShape ?? navigationBarTheme.indicatorShape ?? defaults.indicatorShape, ++ overlayColor: info.overlayColor ?? navigationBarTheme.overlayColor, ++ onTap: widget.enabled ? info.onTap : null, ++ child: Row( ++ children: [ ++ Expanded( ++ child: _NavigationBarDestinationLayout( ++ icon: widget.buildIcon(context), ++ iconKey: iconKey, ++ label: widget.buildLabel(context), + ), +- ], +- ), ++ ), ++ ], + ), + ), + ); +diff --git a/packages/flutter/lib/src/material/navigation_drawer.dart b/packages/flutter/lib/src/material/navigation_drawer.dart +index 6f78f50c68b..acee3cfdb56 100644 +--- a/packages/flutter/lib/src/material/navigation_drawer.dart ++++ b/packages/flutter/lib/src/material/navigation_drawer.dart +@@ -186,8 +186,8 @@ class NavigationDrawer extends StatelessWidget { + shadowColor: shadowColor ?? navigationDrawerTheme.shadowColor, + surfaceTintColor: surfaceTintColor ?? navigationDrawerTheme.surfaceTintColor, + elevation: elevation ?? navigationDrawerTheme.elevation, +- child: SafeArea( +- bottom: false, ++ child: Padding( ++ padding: MediaQuery.viewPaddingOf(context).copyWith(right: 0, top: 0), + child: Column( + children: [ + ?header, +@@ -367,36 +367,47 @@ class _NavigationDestinationBuilder extends StatelessWidget { + final NavigationDrawerThemeData navigationDrawerTheme = NavigationDrawerTheme.of(context); + final NavigationDrawerThemeData defaults = _NavigationDrawerDefaultsM3(context); + +- final inkWell = InkWell( +- highlightColor: Colors.transparent, +- onTap: enabled ? info.onTap : null, +- customBorder: +- info.indicatorShape ?? navigationDrawerTheme.indicatorShape ?? defaults.indicatorShape!, +- child: Stack( +- alignment: Alignment.center, +- children: [ +- NavigationIndicator( +- animation: info.selectedAnimation, +- color: +- info.indicatorColor ?? +- navigationDrawerTheme.indicatorColor ?? +- defaults.indicatorColor!, +- shape: +- info.indicatorShape ?? +- navigationDrawerTheme.indicatorShape ?? +- defaults.indicatorShape!, +- width: (navigationDrawerTheme.indicatorSize ?? defaults.indicatorSize!).width, +- height: (navigationDrawerTheme.indicatorSize ?? defaults.indicatorSize!).height, +- ), +- Row( +- children: [ +- const SizedBox(width: 16), +- buildIcon(context), +- const SizedBox(width: 12), +- buildLabel(context), +- ], +- ), +- ], ++ final inkWell = Material( ++ type: MaterialType.transparency, ++ child: InkWell( ++ highlightColor: Colors.transparent, ++ onTap: enabled ? info.onTap : null, ++ customBorder: ++ info.indicatorShape ?? ++ navigationDrawerTheme.indicatorShape ?? ++ defaults.indicatorShape!, ++ child: Stack( ++ alignment: Alignment.center, ++ children: [ ++ NavigationIndicator( ++ animation: info.selectedAnimation, ++ color: ++ info.indicatorColor ?? ++ navigationDrawerTheme.indicatorColor ?? ++ defaults.indicatorColor!, ++ shape: ++ info.indicatorShape ?? ++ navigationDrawerTheme.indicatorShape ?? ++ defaults.indicatorShape!, ++ width: ++ (navigationDrawerTheme.indicatorSize ?? ++ defaults.indicatorSize!) ++ .width, ++ height: ++ (navigationDrawerTheme.indicatorSize ?? ++ defaults.indicatorSize!) ++ .height, ++ ), ++ Row( ++ children: [ ++ const SizedBox(width: 16), ++ buildIcon(context), ++ const SizedBox(width: 12), ++ buildLabel(context), ++ ], ++ ), ++ ], ++ ), + ), + ); + +diff --git a/packages/flutter/lib/src/material/navigation_rail.dart b/packages/flutter/lib/src/material/navigation_rail.dart +index 3b17f5047f0..57a0e0858a7 100644 +--- a/packages/flutter/lib/src/material/navigation_rail.dart ++++ b/packages/flutter/lib/src/material/navigation_rail.dart +@@ -533,9 +533,8 @@ class _NavigationRailState extends State with TickerProviderStat + child: Material( + elevation: elevation, + color: backgroundColor, +- child: SafeArea( +- right: isRTLDirection, +- left: !isRTLDirection, ++ child: Padding( ++ padding: MediaQuery.viewPaddingOf(context).copyWith(right: 0, top: 0), + child: Column( + children: [ + _verticalSpacer, diff --git a/lib/scripts/padding.patch b/lib/scripts/padding.patch new file mode 100644 index 000000000..cc428155e --- /dev/null +++ b/lib/scripts/padding.patch @@ -0,0 +1,522 @@ +diff --git a/packages/flutter/lib/src/cupertino/context_menu.dart b/packages/flutter/lib/src/cupertino/context_menu.dart +index cf322d7c5d4..a9bc2b31f09 100644 +--- a/packages/flutter/lib/src/cupertino/context_menu.dart ++++ b/packages/flutter/lib/src/cupertino/context_menu.dart +@@ -573,7 +573,7 @@ class _CupertinoContextMenuState extends State with Ticker + final Rect childRect = _getRect(_childGlobalKey); + _scaleFactor = _getScaleFactor( + childRect, +- MediaQuery.paddingOf(context), ++ MediaQuery.viewPaddingOf(context), + MediaQuery.sizeOf(context), + ); + _decoyChildEndRect = Rect.fromCenter( +@@ -1210,7 +1210,7 @@ class _ContextMenuRouteStaticState extends State<_ContextMenuRouteStatic> + // the original child. + Widget _getChild(Orientation orientation, _ContextMenuLocation contextMenuLocation) { + final Size screenSize = MediaQuery.sizeOf(context); +- final EdgeInsets padding = MediaQuery.paddingOf(context); ++ final EdgeInsets padding = MediaQuery.viewPaddingOf(context); + final screenBounds = Rect.fromLTWH( + 0, + 0, +diff --git a/packages/flutter/lib/src/cupertino/desktop_text_selection.dart b/packages/flutter/lib/src/cupertino/desktop_text_selection.dart +index 0cfe4c5533c..172c6e4ea19 100644 +--- a/packages/flutter/lib/src/cupertino/desktop_text_selection.dart ++++ b/packages/flutter/lib/src/cupertino/desktop_text_selection.dart +@@ -165,7 +165,7 @@ class _CupertinoDesktopTextSelectionControlsToolbarState + } + + assert(debugCheckHasMediaQuery(context)); +- final EdgeInsets mediaQueryPadding = MediaQuery.paddingOf(context); ++ final EdgeInsets mediaQueryPadding = MediaQuery.viewPaddingOf(context); + + final midpointAnchor = Offset( + clampDouble( +diff --git a/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart b/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart +index b578290b268..c0a9f2a71fc 100644 +--- a/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart ++++ b/packages/flutter/lib/src/cupertino/desktop_text_selection_toolbar.dart +@@ -129,7 +129,7 @@ class CupertinoDesktopTextSelectionToolbar extends StatelessWidget { + Widget build(BuildContext context) { + assert(debugCheckHasMediaQuery(context)); + +- final double paddingAbove = MediaQuery.paddingOf(context).top + _kToolbarScreenPadding; ++ final double paddingAbove = MediaQuery.viewPaddingOf(context).top + _kToolbarScreenPadding; + final localAdjustment = Offset(_kToolbarScreenPadding, paddingAbove); + + return Padding( +diff --git a/packages/flutter/lib/src/cupertino/dialog.dart b/packages/flutter/lib/src/cupertino/dialog.dart +index f2f6db5c650..3ff03586700 100644 +--- a/packages/flutter/lib/src/cupertino/dialog.dart ++++ b/packages/flutter/lib/src/cupertino/dialog.dart +@@ -379,7 +379,7 @@ class _CupertinoAlertDialogState extends State { + // Remove view padding here because the `Scrollbar` widget uses the view + // padding as padding, which is unwanted. + // https://github.com/flutter/flutter/issues/150544 +- return MediaQuery.removePadding( ++ return MediaQuery.removeViewPadding( + removeLeft: true, + removeTop: true, + removeRight: true, +diff --git a/packages/flutter/lib/src/cupertino/nav_bar.dart b/packages/flutter/lib/src/cupertino/nav_bar.dart +index 69d2cc836fc..ed2b7240b11 100644 +--- a/packages/flutter/lib/src/cupertino/nav_bar.dart ++++ b/packages/flutter/lib/src/cupertino/nav_bar.dart +@@ -758,7 +758,7 @@ class _CupertinoNavigationBarState extends State { + + final double bottomHeight = widget.bottom?.preferredSize.height ?? 0.0; + final double persistentHeight = +- _kNavBarPersistentHeight + bottomHeight + MediaQuery.paddingOf(context).top; ++ _kNavBarPersistentHeight + bottomHeight + MediaQuery.viewPaddingOf(context).top; + final double largeHeight = persistentHeight + _kNavBarLargeTitleHeightExtension; + + final components = _NavigationBarStaticComponents( +@@ -1398,7 +1398,7 @@ class _CupertinoSliverNavigationBarState extends State extends State<_CupertinoBackGestureD + // For devices with notches, the drag area needs to be larger on the side + // that has the notch. + final double dragAreaWidth = switch (Directionality.of(context)) { +- TextDirection.rtl => MediaQuery.paddingOf(context).right, +- TextDirection.ltr => MediaQuery.paddingOf(context).left, ++ TextDirection.rtl => MediaQuery.viewPaddingOf(context).right, ++ TextDirection.ltr => MediaQuery.viewPaddingOf(context).left, + }; + return Stack( + fit: StackFit.passthrough, +diff --git a/packages/flutter/lib/src/cupertino/scrollbar.dart b/packages/flutter/lib/src/cupertino/scrollbar.dart +index cf2b5d80a54..5dfc843aea6 100644 +--- a/packages/flutter/lib/src/cupertino/scrollbar.dart ++++ b/packages/flutter/lib/src/cupertino/scrollbar.dart +@@ -165,7 +165,7 @@ class _CupertinoScrollbarState extends RawScrollbarState { + ..mainAxisMargin = widget.mainAxisMargin + ..crossAxisMargin = _kScrollbarCrossAxisMargin + ..radius = _radius +- ..padding = MediaQuery.paddingOf(context) ++ ..padding = MediaQuery.viewPaddingOf(context) + ..minLength = _kScrollbarMinLength + ..minOverscrollLength = _kScrollbarMinOverscrollLength + ..scrollbarOrientation = widget.scrollbarOrientation; +diff --git a/packages/flutter/lib/src/cupertino/sheet.dart b/packages/flutter/lib/src/cupertino/sheet.dart +index ff9dcd72a8a..749e370219e 100644 +--- a/packages/flutter/lib/src/cupertino/sheet.dart ++++ b/packages/flutter/lib/src/cupertino/sheet.dart +@@ -655,7 +655,7 @@ class CupertinoSheetRoute extends PageRoute with _CupertinoSheetRouteTrans + + @override + Widget buildContent(BuildContext context) { +- return MediaQuery.removePadding( ++ return MediaQuery.removeViewPadding( + context: context, + removeTop: true, + child: ClipRSuperellipse( +diff --git a/packages/flutter/lib/src/cupertino/tab_scaffold.dart b/packages/flutter/lib/src/cupertino/tab_scaffold.dart +index a5810ab979a..8ca8f2e9c98 100644 +--- a/packages/flutter/lib/src/cupertino/tab_scaffold.dart ++++ b/packages/flutter/lib/src/cupertino/tab_scaffold.dart +@@ -332,7 +332,7 @@ class _CupertinoTabScaffoldState extends State with Restor + // obstructed area. + if (widget.tabBar.opaque(context)) { + contentPadding = EdgeInsets.only(bottom: bottomPadding); +- newMediaQuery = newMediaQuery.removePadding(removeBottom: true); ++ newMediaQuery = newMediaQuery.removeViewPadding(removeBottom: true); + } else { + newMediaQuery = newMediaQuery.copyWith( + padding: newMediaQuery.padding.copyWith(bottom: bottomPadding), +diff --git a/packages/flutter/lib/src/cupertino/text_selection.dart b/packages/flutter/lib/src/cupertino/text_selection.dart +index 1c8e2b0b482..192cf7cf35c 100644 +--- a/packages/flutter/lib/src/cupertino/text_selection.dart ++++ b/packages/flutter/lib/src/cupertino/text_selection.dart +@@ -256,7 +256,7 @@ class _CupertinoTextSelectionControlsToolbarState + } + + assert(debugCheckHasMediaQuery(context)); +- final EdgeInsets mediaQueryPadding = MediaQuery.paddingOf(context); ++ final EdgeInsets mediaQueryPadding = MediaQuery.viewPaddingOf(context); + + // The toolbar should appear below the TextField when there is not enough + // space above the TextField to show it, assuming there's always enough +diff --git a/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart b/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart +index c23ac7a4fa9..a9ae667fc46 100644 +--- a/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart ++++ b/packages/flutter/lib/src/cupertino/text_selection_toolbar.dart +@@ -147,7 +147,7 @@ class CupertinoTextSelectionToolbar extends StatelessWidget { + @override + Widget build(BuildContext context) { + assert(debugCheckHasMediaQuery(context)); +- final EdgeInsets mediaQueryPadding = MediaQuery.paddingOf(context); ++ final EdgeInsets mediaQueryPadding = MediaQuery.viewPaddingOf(context); + + final double paddingAbove = mediaQueryPadding.top + kToolbarScreenPadding; + +diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart +index 7f6fc971faa..4abaaddfcf3 100644 +--- a/packages/flutter/lib/src/material/app_bar.dart ++++ b/packages/flutter/lib/src/material/app_bar.dart +@@ -2091,7 +2091,7 @@ class _SliverAppBarState extends State with TickerProviderStateMix + Widget build(BuildContext context) { + assert(!widget.primary || debugCheckHasMediaQuery(context)); + final double bottomHeight = widget.bottom?.preferredSize.height ?? 0.0; +- final double topPadding = widget.primary ? MediaQuery.paddingOf(context).top : 0.0; ++ final double topPadding = widget.primary ? MediaQuery.viewPaddingOf(context).top : 0.0; + final double collapsedHeight = (widget.pinned && widget.floating && widget.bottom != null) + ? (widget.collapsedHeight ?? 0.0) + bottomHeight + topPadding + : (widget.collapsedHeight ?? widget.toolbarHeight) + bottomHeight + topPadding; +@@ -2135,7 +2135,7 @@ class _SliverAppBarState extends State with TickerProviderStateMix + ); + } + +- return MediaQuery.removePadding( ++ return MediaQuery.removeViewPadding( + context: context, + removeBottom: true, + child: SliverPersistentHeader( +diff --git a/packages/flutter/lib/src/material/bottom_navigation_bar.dart b/packages/flutter/lib/src/material/bottom_navigation_bar.dart +index 3b0c0811a43..d19ad6a697e 100644 +--- a/packages/flutter/lib/src/material/bottom_navigation_bar.dart ++++ b/packages/flutter/lib/src/material/bottom_navigation_bar.dart +@@ -1131,7 +1131,7 @@ class _BottomNavigationBarState extends State with TickerPr + type: MaterialType.transparency, + child: Padding( + padding: EdgeInsets.only(bottom: additionalBottomPadding), +- child: MediaQuery.removePadding( ++ child: MediaQuery.removeViewPadding( + context: context, + removeBottom: true, + child: DefaultTextStyle.merge( +diff --git a/packages/flutter/lib/src/material/bottom_sheet.dart b/packages/flutter/lib/src/material/bottom_sheet.dart +index d54435455ba..faa081ffb48 100644 +--- a/packages/flutter/lib/src/material/bottom_sheet.dart ++++ b/packages/flutter/lib/src/material/bottom_sheet.dart +@@ -1120,7 +1120,7 @@ class ModalBottomSheetRoute extends PopupRoute { + + Widget bottomSheet = useSafeArea + ? SafeArea(bottom: false, child: content) +- : MediaQuery.removePadding(context: context, removeTop: true, child: content); ++ : MediaQuery.removeViewPadding(context: context, removeTop: true, child: content); + + // Prevent clicks inside the bottom sheet from passing through to the barrier + bottomSheet = Semantics(hitTestBehavior: SemanticsHitTestBehavior.opaque, child: bottomSheet); +diff --git a/packages/flutter/lib/src/material/desktop_text_selection.dart b/packages/flutter/lib/src/material/desktop_text_selection.dart +index c3a28e9df7b..0c619c553fc 100644 +--- a/packages/flutter/lib/src/material/desktop_text_selection.dart ++++ b/packages/flutter/lib/src/material/desktop_text_selection.dart +@@ -182,7 +182,7 @@ class _DesktopTextSelectionControlsToolbarState + return const SizedBox.shrink(); + } + +- final EdgeInsets mediaQueryPadding = MediaQuery.paddingOf(context); ++ final EdgeInsets mediaQueryPadding = MediaQuery.viewPaddingOf(context); + final midpointAnchor = Offset( + clampDouble( + widget.selectionMidpoint.dx - widget.globalEditableRegion.left, +diff --git a/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart b/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart +index b51f086f6e9..c61564af117 100644 +--- a/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart ++++ b/packages/flutter/lib/src/material/desktop_text_selection_toolbar.dart +@@ -66,7 +66,7 @@ class DesktopTextSelectionToolbar extends StatelessWidget { + Widget build(BuildContext context) { + assert(debugCheckHasMediaQuery(context)); + +- final double paddingAbove = MediaQuery.paddingOf(context).top + _kToolbarScreenPadding; ++ final double paddingAbove = MediaQuery.viewPaddingOf(context).top + _kToolbarScreenPadding; + final localAdjustment = Offset(_kToolbarScreenPadding, paddingAbove); + + return Padding( +diff --git a/packages/flutter/lib/src/material/drawer.dart b/packages/flutter/lib/src/material/drawer.dart +index de7383e9327..0b64b687419 100644 +--- a/packages/flutter/lib/src/material/drawer.dart ++++ b/packages/flutter/lib/src/material/drawer.dart +@@ -402,11 +402,11 @@ class DrawerController extends StatefulWidget { + /// drawer. + /// + /// By default, the value used is 20.0 added to the padding edge of +- /// `MediaQuery.paddingOf(context)` that corresponds to [alignment]. ++ /// `MediaQuery.viewPaddingOf(context)` that corresponds to [alignment]. + /// This ensures that the drag area for notched devices is not obscured. For + /// example, if [alignment] is set to [DrawerAlignment.start] and + /// `TextDirection.of(context)` is set to [TextDirection.ltr], +- /// 20.0 will be added to `MediaQuery.paddingOf(context).left`. ++ /// 20.0 will be added to `MediaQuery.viewPaddingOf(context).left`. + final double? edgeDragWidth; + + /// Whether or not the drawer is opened or closed. +@@ -658,10 +658,10 @@ class DrawerControllerState extends State with SingleTickerPro + widget.edgeDragWidth ?? + _kEdgeDragWidth + + switch ((widget.alignment, Directionality.of(context))) { +- (DrawerAlignment.start, TextDirection.ltr) => MediaQuery.paddingOf(context).left, +- (DrawerAlignment.start, TextDirection.rtl) => MediaQuery.paddingOf(context).right, +- (DrawerAlignment.end, TextDirection.rtl) => MediaQuery.paddingOf(context).left, +- (DrawerAlignment.end, TextDirection.ltr) => MediaQuery.paddingOf(context).right, ++ (DrawerAlignment.start, TextDirection.ltr) => MediaQuery.viewPaddingOf(context).left, ++ (DrawerAlignment.start, TextDirection.rtl) => MediaQuery.viewPaddingOf(context).right, ++ (DrawerAlignment.end, TextDirection.rtl) => MediaQuery.viewPaddingOf(context).left, ++ (DrawerAlignment.end, TextDirection.ltr) => MediaQuery.viewPaddingOf(context).right, + }; + + if (_controller.isDismissed) { +diff --git a/packages/flutter/lib/src/material/drawer_header.dart b/packages/flutter/lib/src/material/drawer_header.dart +index d7259826096..56985a36ae4 100644 +--- a/packages/flutter/lib/src/material/drawer_header.dart ++++ b/packages/flutter/lib/src/material/drawer_header.dart +@@ -81,7 +81,7 @@ class DrawerHeader extends StatelessWidget { + assert(debugCheckHasMaterial(context)); + assert(debugCheckHasMediaQuery(context)); + final ThemeData theme = Theme.of(context); +- final double statusBarHeight = MediaQuery.paddingOf(context).top; ++ final double statusBarHeight = MediaQuery.viewPaddingOf(context).top; + return Container( + height: statusBarHeight + _kDrawerHeaderHeight, + margin: margin, +@@ -95,7 +95,7 @@ class DrawerHeader extends StatelessWidget { + ? null + : DefaultTextStyle( + style: theme.textTheme.bodyLarge!, +- child: MediaQuery.removePadding(context: context, removeTop: true, child: child!), ++ child: MediaQuery.removeViewPadding(context: context, removeTop: true, child: child!), + ), + ), + ); +diff --git a/packages/flutter/lib/src/material/dropdown.dart b/packages/flutter/lib/src/material/dropdown.dart +index a892b7f58cf..fc157f89dae 100644 +--- a/packages/flutter/lib/src/material/dropdown.dart ++++ b/packages/flutter/lib/src/material/dropdown.dart +@@ -720,7 +720,7 @@ class _DropdownRoutePageState extends State<_DropdownRoutePage> { + mouseCursor: widget.mouseCursor, + ); + +- return MediaQuery.removePadding( ++ return MediaQuery.removeViewPadding( + context: context, + removeTop: true, + removeBottom: true, +diff --git a/packages/flutter/lib/src/material/popup_menu.dart b/packages/flutter/lib/src/material/popup_menu.dart +index 29711a68632..dfb22b728fd 100644 +--- a/packages/flutter/lib/src/material/popup_menu.dart ++++ b/packages/flutter/lib/src/material/popup_menu.dart +@@ -1040,7 +1040,7 @@ class _PopupMenuRoute extends PopupRoute { + clipBehavior: clipBehavior, + ); + final MediaQueryData mediaQuery = MediaQuery.of(context); +- return MediaQuery.removePadding( ++ return MediaQuery.removeViewPadding( + context: context, + removeTop: true, + removeBottom: true, +diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart +index d121d10f1d6..e1afd52c7d6 100644 +--- a/packages/flutter/lib/src/material/scaffold.dart ++++ b/packages/flutter/lib/src/material/scaffold.dart +@@ -1970,11 +1970,11 @@ class Scaffold extends StatefulWidget { + /// drawer. + /// + /// By default, the value used is 20.0 added to the padding edge of +- /// `MediaQuery.paddingOf(context)` that corresponds to the surrounding ++ /// `MediaQuery.viewPaddingOf(context)` that corresponds to the surrounding + /// [TextDirection]. This ensures that the drag area for notched devices is + /// not obscured. For example, if `TextDirection.of(context)` is set to + /// [TextDirection.ltr], 20.0 will be added to +- /// `MediaQuery.paddingOf(context).left`. ++ /// `MediaQuery.viewPaddingOf(context).left`. + final double? drawerEdgeDragWidth; + + /// Determines if the [Scaffold.drawer] can be opened with a drag +@@ -3048,7 +3048,7 @@ class ScaffoldState extends State + } + + if (widget.appBar != null) { +- final double topPadding = widget.primary ? MediaQuery.paddingOf(context).top : 0.0; ++ final double topPadding = widget.primary ? MediaQuery.viewPaddingOf(context).top : 0.0; + _appBarMaxHeight = + AppBar.preferredHeightFor(context, widget.appBar!.preferredSize) + topPadding; + assert(_appBarMaxHeight! >= 0.0 && _appBarMaxHeight!.isFinite); +@@ -3219,7 +3219,7 @@ class ScaffoldState extends State + } + + // The minimum insets for contents of the Scaffold to keep visible. +- final EdgeInsets minInsets = MediaQuery.paddingOf( ++ final EdgeInsets minInsets = MediaQuery.viewPaddingOf( + context, + ).copyWith(bottom: _resizeToAvoidBottomInset ? MediaQuery.viewInsetsOf(context).bottom : 0.0); + +diff --git a/packages/flutter/lib/src/material/scrollbar.dart b/packages/flutter/lib/src/material/scrollbar.dart +index 0b8653c88f0..99c79a1a71d 100644 +--- a/packages/flutter/lib/src/material/scrollbar.dart ++++ b/packages/flutter/lib/src/material/scrollbar.dart +@@ -357,7 +357,7 @@ class _MaterialScrollbarState extends RawScrollbarState<_MaterialScrollbar> { + _scrollbarTheme.crossAxisMargin ?? (_useAndroidScrollbar ? 0.0 : _kScrollbarMargin) + ..mainAxisMargin = _scrollbarTheme.mainAxisMargin ?? 0.0 + ..minLength = _scrollbarTheme.minThumbLength ?? _kScrollbarMinLength +- ..padding = MediaQuery.paddingOf(context) ++ ..padding = MediaQuery.viewPaddingOf(context) + ..scrollbarOrientation = widget.scrollbarOrientation + ..ignorePointer = !enableGestures; + } +diff --git a/packages/flutter/lib/src/material/search_anchor.dart b/packages/flutter/lib/src/material/search_anchor.dart +index 0964bd27c05..d3e2b8360a3 100644 +--- a/packages/flutter/lib/src/material/search_anchor.dart ++++ b/packages/flutter/lib/src/material/search_anchor.dart +@@ -802,7 +802,7 @@ class _SearchViewRoute extends PopupRoute<_SearchViewRoute> { + + final Rect viewRect = _rectTween.evaluate(curvedAnimation!)!; + final double topPadding = showFullScreenView +- ? lerpDouble(0.0, MediaQuery.paddingOf(context).top, curvedAnimation!.value)! ++ ? lerpDouble(0.0, MediaQuery.viewPaddingOf(context).top, curvedAnimation!.value)! + : 0.0; + + viewFadeOnIntervalCurve ??= CurvedAnimation( +@@ -1190,7 +1190,7 @@ class _ViewContentState extends State<_ViewContent> { + child: FadeTransition( + opacity: viewListFadeOnIntervalCurve, + child: widget.viewBuilder == null +- ? MediaQuery.removePadding( ++ ? MediaQuery.removeViewPadding( + context: context, + removeTop: true, + child: ListView( +diff --git a/packages/flutter/lib/src/material/text_selection_toolbar.dart b/packages/flutter/lib/src/material/text_selection_toolbar.dart +index ec871e317e1..f0d7e69826c 100644 +--- a/packages/flutter/lib/src/material/text_selection_toolbar.dart ++++ b/packages/flutter/lib/src/material/text_selection_toolbar.dart +@@ -106,7 +106,7 @@ class TextSelectionToolbar extends StatelessWidget { + final Offset anchorBelowPadded = anchorBelow + const Offset(0.0, kToolbarContentDistanceBelow); + + const double screenPadding = CupertinoTextSelectionToolbar.kToolbarScreenPadding; +- final double paddingAbove = MediaQuery.paddingOf(context).top + screenPadding; ++ final double paddingAbove = MediaQuery.viewPaddingOf(context).top + screenPadding; + final double availableHeight = anchorAbovePadded.dy - _kToolbarContentDistance - paddingAbove; + final bool fitsAbove = _kToolbarHeight <= availableHeight; + // Makes up for the Padding above the Stack. +diff --git a/packages/flutter/lib/src/widgets/animated_scroll_view.dart b/packages/flutter/lib/src/widgets/animated_scroll_view.dart +index 514d37da2d7..c346d3cbc51 100644 +--- a/packages/flutter/lib/src/widgets/animated_scroll_view.dart ++++ b/packages/flutter/lib/src/widgets/animated_scroll_view.dart +@@ -46,7 +46,7 @@ import 'ticker_provider.dart'; + /// + /// ```dart + /// Widget myWidget(BuildContext context) { +-/// return MediaQuery.removePadding( ++/// return MediaQuery.removeViewPadding( + /// context: context, + /// removeTop: true, + /// removeBottom: true, +@@ -115,7 +115,7 @@ class AnimatedList extends _AnimatedScrollView { + /// + /// ```dart + /// Widget myWidget(BuildContext context) { +- /// return MediaQuery.removePadding( ++ /// return MediaQuery.removeViewPadding( + /// context: context, + /// removeTop: true, + /// removeBottom: true, +@@ -342,7 +342,7 @@ class AnimatedListState extends _AnimatedScrollViewState { + /// + /// ```dart + /// Widget myWidget(BuildContext context) { +-/// return MediaQuery.removePadding( ++/// return MediaQuery.removeViewPadding( + /// context: context, + /// removeTop: true, + /// removeBottom: true, +diff --git a/packages/flutter/lib/src/widgets/safe_area.dart b/packages/flutter/lib/src/widgets/safe_area.dart +index dcb1b036c94..c429c15145d 100644 +--- a/packages/flutter/lib/src/widgets/safe_area.dart ++++ b/packages/flutter/lib/src/widgets/safe_area.dart +@@ -112,12 +112,7 @@ class SafeArea extends StatelessWidget { + @override + Widget build(BuildContext context) { + assert(debugCheckHasMediaQuery(context)); +- EdgeInsets padding = MediaQuery.paddingOf(context); +- // Bottom padding has been consumed - i.e. by the keyboard +- if (maintainBottomViewPadding) { +- padding = padding.copyWith(bottom: MediaQuery.viewPaddingOf(context).bottom); +- } +- ++ EdgeInsets padding = MediaQuery.viewPaddingOf(context); + return Padding( + padding: EdgeInsets.only( + left: math.max(left ? padding.left : 0.0, minimum.left), +@@ -125,7 +120,7 @@ class SafeArea extends StatelessWidget { + right: math.max(right ? padding.right : 0.0, minimum.right), + bottom: math.max(bottom ? padding.bottom : 0.0, minimum.bottom), + ), +- child: MediaQuery.removePadding( ++ child: MediaQuery.removeViewPadding( + context: context, + removeLeft: left, + removeTop: top, +@@ -205,7 +200,7 @@ class SliverSafeArea extends StatelessWidget { + @override + Widget build(BuildContext context) { + assert(debugCheckHasMediaQuery(context)); +- final EdgeInsets padding = MediaQuery.paddingOf(context); ++ final EdgeInsets padding = MediaQuery.viewPaddingOf(context); + return SliverPadding( + padding: EdgeInsets.only( + left: math.max(left ? padding.left : 0.0, minimum.left), +@@ -213,7 +208,7 @@ class SliverSafeArea extends StatelessWidget { + right: math.max(right ? padding.right : 0.0, minimum.right), + bottom: math.max(bottom ? padding.bottom : 0.0, minimum.bottom), + ), +- sliver: MediaQuery.removePadding( ++ sliver: MediaQuery.removeViewPadding( + context: context, + removeLeft: left, + removeTop: top, +diff --git a/packages/flutter/lib/src/widgets/scroll_view.dart b/packages/flutter/lib/src/widgets/scroll_view.dart +index f5cc546eebb..cbabbdf44e7 100644 +--- a/packages/flutter/lib/src/widgets/scroll_view.dart ++++ b/packages/flutter/lib/src/widgets/scroll_view.dart +@@ -1873,7 +1873,7 @@ class ListView extends BoxScrollView { + /// + /// ```dart + /// Widget myWidget(BuildContext context) { +-/// return MediaQuery.removePadding( ++/// return MediaQuery.removeViewPadding( + /// context: context, + /// removeTop: true, + /// child: GridView.builder( +diff --git a/packages/flutter/lib/src/widgets/scrollbar.dart b/packages/flutter/lib/src/widgets/scrollbar.dart +index 1c8f2ce4a7f..f31a7e6ef07 100644 +--- a/packages/flutter/lib/src/widgets/scrollbar.dart ++++ b/packages/flutter/lib/src/widgets/scrollbar.dart +@@ -1579,7 +1579,7 @@ class RawScrollbarState extends State with TickerProv + ..textDirection = textDirection + ..thickness = widget.thickness ?? _kScrollbarThickness + ..radius = widget.radius +- ..padding = (widget.padding ?? MediaQuery.paddingOf(context)).resolve(textDirection) ++ ..padding = (widget.padding ?? MediaQuery.viewPaddingOf(context)).resolve(textDirection) + ..scrollbarOrientation = widget.scrollbarOrientation + ..mainAxisMargin = widget.mainAxisMargin + ..shape = widget.shape diff --git a/lib/scripts/patch.ps1 b/lib/scripts/patch.ps1 index 957529afb..6540dec86 100644 --- a/lib/scripts/patch.ps1 +++ b/lib/scripts/patch.ps1 @@ -22,6 +22,10 @@ $TextSelectionPatch = "lib/scripts/text_selection.patch" $NavigatorPatch = "lib/scripts/navigator.patch" +$NavigationBarPatch = "lib/scripts/navigation_bar.patch" + +$PaddingPatch = "lib/scripts/padding.patch" + # TODO: remove # https://github.com/flutter/flutter/issues/90223 $ModalBarrierPatch = "lib/scripts/modal_barrier.patch" @@ -41,19 +45,17 @@ Set-Location $env:FLUTTER_ROOT $picks = @() $reverts = @() -$patches = @($ModalBarrierPatch, $TextSelectionPatch, $MouseCursorPatch) +$patches = @($ModalBarrierPatch, $TextSelectionPatch, $MouseCursorPatch, $NavigationBarPatch, $PaddingPatch) switch ($platform.ToLower()) { "android" { $reverts += $NewOverScrollIndicator $patches += $BottomSheetAndroidPatch $patches += $ScrollViewPatch - $patches += $NavigatorPatch } "ios" { $patches += $ScrollViewPatch $patches += $BottomSheetIOSFlutterPatch - $patches += $NavigatorPatch } "linux" { $picks += $ToolTipFix diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index a58dcaff1..cb836d442 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -12,7 +12,6 @@ import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/image_utils.dart'; import 'package:PiliPlus/utils/path_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:audio_service/audio_service.dart'; import 'package:path/path.dart' as path; @@ -34,7 +33,6 @@ Future initAudioService() { class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { static final List _item = []; - bool enableBackgroundPlay = Pref.enableBackgroundPlay; Future? Function()? onPlay; Future? Function()? onPause; @@ -45,13 +43,11 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { return onPlay?.call() ?? PlPlayerController.playIfExists() ?? Future.syncValue(null); - // player.play(); } @override Future pause() { return onPause?.call() ?? PlPlayerController.pauseIfExists(); - // player.pause(); } @override @@ -63,17 +59,9 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { ); return (onSeek?.call(position) ?? PlPlayerController.seekToIfExists(position, isSeek: false)); - // await player.seekTo(position); } void setMediaItem(MediaItem newMediaItem) { - if (!enableBackgroundPlay) return; - // if (kDebugMode) { - // debugPrint("此时调用栈为:"); - // debugPrint(newMediaItem); - // debugPrint(newMediaItem.title); - // debugPrint(StackTrace.current.toString()); - // } if (!mediaItem.isClosed) mediaItem.add(newMediaItem); } @@ -82,12 +70,6 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { bool isBuffering, bool isLive, ) { - if (!enableBackgroundPlay || - _item.isEmpty || - !PlPlayerController.instanceExists()) { - return; - } - final AudioProcessingState processingState; if (status.isCompleted) { processingState = AudioProcessingState.completed; @@ -123,8 +105,6 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { } void onStatusChange(PlayerStatus status, bool isBuffering, isLive) { - if (!enableBackgroundPlay) return; - if (_item.isEmpty) return; setPlaybackState(status, isBuffering, isLive); } @@ -136,11 +116,6 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { String? artist, String? cover, }) { - if (!enableBackgroundPlay) return; - // if (kDebugMode) { - // debugPrint('当前调用栈为:'); - // debugPrint(StackTrace.current); - // } if (!PlPlayerController.instanceExists()) return; if (data == null) return; @@ -219,15 +194,12 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { default: return; } - // if (kDebugMode) debugPrint("exist: ${PlPlayerController.instanceExists()}"); if (!PlPlayerController.instanceExists()) return; _item.add(mediaItem); setMediaItem(mediaItem); } void onVideoDetailDispose(String herotag) { - if (!enableBackgroundPlay) return; - if (_item.isNotEmpty) { _item.removeWhere((item) => item.id.endsWith(herotag)); } @@ -244,15 +216,8 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { } void clear() { - if (!enableBackgroundPlay) return; mediaItem.add(null); _item.clear(); - /** - * if (playbackState.processingState == AudioProcessingState.idle && - previousState?.processingState != AudioProcessingState.idle) { - await AudioService._stop(); - } - */ if (playbackState.value.processingState == AudioProcessingState.idle) { playbackState.add( PlaybackState( @@ -270,12 +235,6 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { } void onPositionChange(Duration position) { - if (!enableBackgroundPlay || - _item.isEmpty || - !PlPlayerController.instanceExists()) { - return; - } - playbackState.add( playbackState.value.copyWith( updatePosition: position, diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 74cc0c908..c0364f781 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:PiliPlus/common/widgets/scaffold.dart'; import 'package:PiliPlus/common/widgets/view_safe_area.dart'; import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pbenum.dart' show PlaylistSource; @@ -363,8 +364,7 @@ abstract final class PiliScheme { return false; case 'livearea': Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar(title: const Text('直播')), body: const ViewSafeArea(child: LivePage()), ), @@ -372,8 +372,7 @@ abstract final class PiliScheme { return true; case 'rank': Get.to( - Scaffold( - resizeToAvoidBottomInset: false, + scaffold( appBar: AppBar(title: const Text('排行榜')), body: const ViewSafeArea(child: RankPage()), ), diff --git a/lib/utils/cache_manager.dart b/lib/utils/cache_manager.dart index 05e5c90e7..faa527057 100644 --- a/lib/utils/cache_manager.dart +++ b/lib/utils/cache_manager.dart @@ -77,15 +77,11 @@ abstract final class CacheManager { } static Future autoClearCache() async { - if (Pref.autoClearCache) { - await clearLibraryCache(); - } else { - final maxCacheSize = Pref.maxCacheSize; - if (maxCacheSize != 0) { - final currCache = await loadApplicationCache(maxCacheSize); - if (currCache >= maxCacheSize) { - await clearLibraryCache(); - } + final maxCacheSize = Pref.maxCacheSize; + if (maxCacheSize != 0) { + final currCache = await loadApplicationCache(maxCacheSize); + if (currCache >= maxCacheSize) { + await clearLibraryCache(); } } } diff --git a/lib/utils/global_data.dart b/lib/utils/global_data.dart index ff75d45c7..d536170f6 100644 --- a/lib/utils/global_data.dart +++ b/lib/utils/global_data.dart @@ -15,8 +15,6 @@ class GlobalData { bool dynamicsWaterfallFlow = Pref.dynamicsWaterfallFlow; - bool showMedal = Pref.showMedal; - // 私有构造函数 GlobalData._(); diff --git a/lib/utils/image_utils.dart b/lib/utils/image_utils.dart index c42d731a1..9f4aac28e 100644 --- a/lib/utils/image_utils.dart +++ b/lib/utils/image_utils.dart @@ -12,7 +12,6 @@ import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/permission_handler.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/share_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:dio/dio.dart'; import 'package:file_picker/file_picker.dart'; @@ -27,7 +26,6 @@ import 'package:share_plus/share_plus.dart'; abstract final class ImageUtils { static String get time => DateFormat('yyyy-MM-dd_HH-mm-ss').format(DateTime.now()); - static bool silentDownImg = Pref.silentDownImg; static const _androidRelativePath = 'Pictures/${Constants.appName}'; // 图片分享 @@ -101,7 +99,7 @@ abstract final class ImageUtils { if (PlatformUtils.isMobile && !await checkPermissionDependOnSdkInt()) { return false; } - if (!silentDownImg) SmartDialog.showLoading(msg: '正在下载'); + SmartDialog.showLoading(msg: '正在下载'); late String imageName = "cover_${Utils.getFileName(url)}"; late String imagePath = '$tmpDirPath/$imageName'; @@ -114,7 +112,7 @@ abstract final class ImageUtils { if (Platform.isIOS) { final res1 = await Request().downloadFile(url.http2https, imagePath); if (res1.statusCode != 200) throw '${res1.statusCode}'; - if (!silentDownImg) SmartDialog.showLoading(msg: '正在保存'); + SmartDialog.showLoading(msg: '正在保存'); bool success = await LivePhotoMaker.create( coverImage: imagePath, @@ -135,7 +133,7 @@ abstract final class ImageUtils { return false; } } else { - if (!silentDownImg) SmartDialog.showLoading(msg: '正在保存'); + SmartDialog.showLoading(msg: '正在保存'); await saveFileImg( filePath: videoPath, fileName: videoName, @@ -148,7 +146,7 @@ abstract final class ImageUtils { SmartDialog.showToast(err.toString()); return false; } finally { - if (!silentDownImg) SmartDialog.dismiss(status: SmartStatus.loading); + SmartDialog.dismiss(status: SmartStatus.loading); } } @@ -160,14 +158,12 @@ abstract final class ImageUtils { return false; } CancelToken? cancelToken; - if (!silentDownImg) { - cancelToken = CancelToken(); - SmartDialog.showLoading( - msg: '正在下载原图', - clickMaskDismiss: true, - onDismiss: cancelToken.cancel, - ); - } + cancelToken = CancelToken(); + SmartDialog.showLoading( + msg: '正在下载原图', + clickMaskDismiss: true, + onDismiss: cancelToken.cancel, + ); try { final futures = imgList.map((url) async { final name = Utils.getFileName(url); @@ -234,7 +230,7 @@ abstract final class ImageUtils { } } } - if (cancelToken?.isCancelled == true) { + if (cancelToken.isCancelled) { SmartDialog.showToast('已取消下载'); return false; } else { @@ -242,14 +238,14 @@ abstract final class ImageUtils { } return success; } catch (e) { - if (cancelToken?.isCancelled == true) { + if (cancelToken.isCancelled) { SmartDialog.showToast('已取消下载'); } else { SmartDialog.showToast(e.toString()); } return false; } finally { - if (!silentDownImg) SmartDialog.dismiss(status: SmartStatus.loading); + SmartDialog.dismiss(status: SmartStatus.loading); } } diff --git a/lib/utils/max_screen_size.dart b/lib/utils/max_screen_size.dart deleted file mode 100644 index c91749d42..000000000 --- a/lib/utils/max_screen_size.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'dart:io' show Platform; - -import 'package:PiliPlus/utils/utils.dart'; - -abstract final class MaxScreenSize { - static int? _maxWidth; - static int? _maxHeight; - - static Future init() { - return _initScreenSize(); - } - - static Future _initScreenSize() async { - final res = await Utils.channel.invokeMethod('maxScreenSize'); - _handleRes(res); - } - - static void _handleRes(dynamic res) { - if (res is Map) { - _maxWidth = res['maxWidth']; - _maxHeight = res['maxHeight']; - } - } - - static bool isWindowMode({required num width, required num height}) { - if (!Platform.isAndroid) return false; - width = width.round(); - height = height.round(); - final hasWidthMatch = width == _maxWidth || width == _maxHeight; - final hasHeightMatch = height == _maxWidth || height == _maxHeight; - return !(hasWidthMatch && hasHeightMatch); - } -} diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 3a8d6d136..abb4c75c9 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -17,6 +17,7 @@ import 'package:PiliPlus/pages/common/publish/publish_route.dart'; import 'package:PiliPlus/pages/contact/view.dart'; import 'package:PiliPlus/pages/fav_panel/view.dart'; import 'package:PiliPlus/pages/share/view.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/extension.dart'; @@ -26,7 +27,6 @@ import 'package:PiliPlus/utils/extension/string_ext.dart'; import 'package:PiliPlus/utils/global_data.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/url_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:floating/floating.dart'; @@ -180,10 +180,7 @@ abstract final class PageUtils { } static void reportVideo(int aid) { - Get.toNamed( - '/webview', - parameters: {'url': 'https://www.bilibili.com/appeal/?avid=$aid'}, - ); + WebViewPage.toWebView('https://www.bilibili.com/appeal/?avid=$aid'); } static void enterPip({int? width, int? height, bool isAuto = false}) { @@ -366,7 +363,7 @@ abstract final class PageUtils { }, ); } else { - handleWebview(url.http2https); + PiliScheme.routePushFromUrl(url.http2https); } } } @@ -411,29 +408,6 @@ abstract final class PageUtils { ); } - static void inAppWebview( - String url, { - bool off = false, - }) { - if (Pref.openInBrowser) { - launchURL(url); - } else { - if (off) { - Get.offNamed( - '/webview', - parameters: {'url': url}, - arguments: {'inApp': true}, - ); - } else { - Get.toNamed( - '/webview', - parameters: {'url': url}, - arguments: {'inApp': true}, - ); - } - } - } - static Future launchURL( String url, { LaunchMode mode = LaunchMode.externalApplication, @@ -448,31 +422,6 @@ abstract final class PageUtils { } } - static Future handleWebview( - String url, { - bool off = false, - bool inApp = false, - Map? parameters, - }) async { - if (!inApp && Pref.openInBrowser) { - if (!await PiliScheme.routePushFromUrl(url, selfHandle: true)) { - launchURL(url); - } - } else { - if (off) { - Get.offNamed( - '/webview', - parameters: { - 'url': url, - ...?parameters, - }, - ); - } else { - PiliScheme.routePushFromUrl(url, parameters: parameters); - } - } - } - static Future? showVideoBottomSheet( BuildContext context, { required Widget child, diff --git a/lib/utils/recommend_filter.dart b/lib/utils/recommend_filter.dart deleted file mode 100644 index 4239342bf..000000000 --- a/lib/utils/recommend_filter.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:PiliPlus/models/model_video.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; - -abstract final class RecommendFilter { - static int minDurationForRcmd = Pref.minDurationForRcmd; - static int minPlayForRcmd = Pref.minPlayForRcmd; - static int minLikeRatioForRecommend = Pref.minLikeRatioForRecommend; - static bool exemptFilterForFollowed = Pref.exemptFilterForFollowed; - static bool applyFilterToRelatedVideos = Pref.applyFilterToRelatedVideos; - static RegExp rcmdRegExp = RegExp( - Pref.banWordForRecommend, - caseSensitive: false, - ); - static bool enableFilter = rcmdRegExp.pattern.isNotEmpty; - - static bool filter(BaseVideoItemModel videoItem) { - //由于相关视频中没有已关注标签,只能视为非关注视频 - if (videoItem.isFollowed && exemptFilterForFollowed) { - return false; - } - return filterAll(videoItem); - } - - static bool filterLikeRatio(int? like, int? view) { - if (view != null) { - return (view > -1 && view < minPlayForRcmd) || - (like != null && - like > -1 && - like * 100 < minLikeRatioForRecommend * view); - } - return false; - } - - static bool filterTitle(String title) { - return (enableFilter && rcmdRegExp.hasMatch(title)); - } - - static bool filterAll(BaseVideoItemModel videoItem) { - return (videoItem.duration > 0 && - videoItem.duration < minDurationForRcmd) || - filterLikeRatio(videoItem.stat.like, videoItem.stat.view) || - filterTitle(videoItem.title); - } -} diff --git a/lib/utils/reply_utils.dart b/lib/utils/reply_utils.dart index 18772a205..1ea505f7f 100644 --- a/lib/utils/reply_utils.dart +++ b/lib/utils/reply_utils.dart @@ -1,19 +1,14 @@ -import 'dart:convert' show jsonEncode; -import 'dart:io' show Platform; - import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart' show ReplyInfo; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/reply.dart'; import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; -import 'package:PiliPlus/utils/accounts.dart'; -import 'package:PiliPlus/utils/accounts/account.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/extension/iterable_ext.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; -import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -21,8 +16,6 @@ import 'package:get/get.dart'; abstract final class ReplyUtils { static void onCheckReply({ required ReplyInfo replyInfo, - required bool biliSendCommAntifraud, - required sourceId, required bool isManual, }) { try { @@ -41,8 +34,6 @@ abstract final class ReplyUtils { mid: replyInfo.mid.toInt(), // isManual: isManual, - biliSendCommAntifraud: biliSendCommAntifraud, - sourceId: sourceId, ); } catch (e) { SmartDialog.showToast(e.toString()); @@ -61,40 +52,7 @@ abstract final class ReplyUtils { List? pictures, dynamic mid, bool isManual = false, - required bool biliSendCommAntifraud, - required sourceId, }) async { - // biliSendCommAntifraud - if (Platform.isAndroid && biliSendCommAntifraud) { - try { - final String cookieString = Accounts.main.cookieJar - .toJson() - .entries - .map((i) => '${i.key}=${i.value}') - .join(';'); - Utils.channel.invokeMethod( - 'biliSendCommAntifraud', - { - 'action': 0, - 'oid': oid, - 'type': type, - 'rpid': id, - 'root': root, - 'parent': parent, - 'ctime': ctime, - 'comment_text': message, - if (pictures?.isNotEmpty == true) 'pictures': jsonEncode(pictures), - 'source_id': '$sourceId', - 'uid': mid, - 'cookies': [cookieString], - }, - ); - } catch (e) { - if (kDebugMode) debugPrint('biliSendCommAntifraud: $e'); - } - return; - } - // CommAntifraud if (!isManual) { await Future.delayed(const Duration(seconds: 8)); @@ -116,12 +74,8 @@ abstract final class ReplyUtils { if (uri != null) { Utils.copyText(uri); } - Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/h5/comment/appeal?${ThemeUtils.themeUrl(theme.isDark)}', - }, + WebViewPage.toWebView( + 'https://www.bilibili.com/h5/comment/appeal?${ThemeUtils.themeUrl(theme.isDark)}', ); }, child: const Text('申诉'), diff --git a/lib/utils/request_utils.dart b/lib/utils/request_utils.dart index 513537a04..3e9ea8a8e 100644 --- a/lib/utils/request_utils.dart +++ b/lib/utils/request_utils.dart @@ -1,6 +1,5 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:io'; import 'dart:math'; import 'package:PiliPlus/common/widgets/dialog/dialog.dart'; @@ -26,6 +25,7 @@ import 'package:PiliPlus/pages/fav_detail/controller.dart' show BaseFavController; import 'package:PiliPlus/pages/group_panel/view.dart'; import 'package:PiliPlus/pages/login/geetest/geetest_webview_dialog.dart'; +import 'package:PiliPlus/pages/webview/view.dart'; import 'package:PiliPlus/utils/accounts.dart'; import 'package:PiliPlus/utils/extension/context_ext.dart'; import 'package:PiliPlus/utils/extension/size_ext.dart'; @@ -34,7 +34,6 @@ import 'package:PiliPlus/utils/extension/theme_ext.dart'; import 'package:PiliPlus/utils/platform_utils.dart'; import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/theme_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/foundation.dart' show kDebugMode; @@ -42,7 +41,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show LengthLimitingTextInputFormatter; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; -import 'package:gt3_flutter_plugin/gt3_flutter_plugin.dart'; abstract final class RequestUtils { static Future syncHistoryStatus() async { @@ -333,58 +331,52 @@ abstract final class RequestUtils { String? dynText, bool isManual = false, }) async { - if (isManual || Pref.enableCreateDynAntifraud) { - try { - if (id != null) { - if (!isManual) { - await Future.delayed(const Duration(seconds: 5)); - } - final res = await DynamicsHttp.dynamicDetail( - id: id, - clearCookie: true, - ); - final isSuccess = res.isSuccess; - final theme = ThemeUtils.theme; - final actions = [ - if (!isSuccess) - TextButton( - onPressed: () { - Get.back(); - Utils.copyText('https://www.bilibili.com/opus/$id'); - Get.toNamed( - '/webview', - parameters: { - 'url': - 'https://www.bilibili.com/h5/comment/appeal?${ThemeUtils.themeUrl(theme.isDark)}', - }, - ); - }, - child: const Text('申诉'), - ), - if (!isManual) - TextButton( - onPressed: Get.back, - child: Text( - '关闭', - style: TextStyle(color: theme.colorScheme.outline), - ), - ), - ]; - showDialog( - context: Get.context!, - barrierDismissible: isManual, - builder: (context) => AlertDialog( - title: const Text('动态检查结果'), - content: SelectableText( - '${isSuccess ? '无账号状态下找到了你的动态,动态正常!' : '你的动态被shadow ban(仅自己可见)!'}${dynText != null ? ' \n\n动态内容: $dynText' : ''}', - ), - actions: actions.isEmpty ? null : actions, - ), - ); + try { + if (id != null) { + if (!isManual) { + await Future.delayed(const Duration(seconds: 5)); } - } catch (e) { - if (kDebugMode) debugPrint('check dyn error: $e'); + final res = await DynamicsHttp.dynamicDetail( + id: id, + clearCookie: true, + ); + final isSuccess = res.isSuccess; + final theme = ThemeUtils.theme; + final actions = [ + if (!isSuccess) + TextButton( + onPressed: () { + Get.back(); + Utils.copyText('https://www.bilibili.com/opus/$id'); + WebViewPage.toWebView( + 'https://www.bilibili.com/h5/comment/appeal?${ThemeUtils.themeUrl(theme.isDark)}', + ); + }, + child: const Text('申诉'), + ), + if (!isManual) + TextButton( + onPressed: Get.back, + child: Text( + '关闭', + style: TextStyle(color: theme.colorScheme.outline), + ), + ), + ]; + showDialog( + context: Get.context!, + barrierDismissible: isManual, + builder: (context) => AlertDialog( + title: const Text('动态检查结果'), + content: SelectableText( + '${isSuccess ? '无账号状态下找到了你的动态,动态正常!' : '你的动态被shadow ban(仅自己可见)!'}${dynText != null ? ' \n\n动态内容: $dynText' : ''}', + ), + actions: actions.isEmpty ? null : actions, + ), + ); } + } catch (e) { + if (kDebugMode) debugPrint('check dyn error: $e'); } } @@ -570,118 +562,20 @@ abstract final class RequestUtils { } } - if (PlatformUtils.isDesktop) { - final json = await showDialog>( - context: Get.context!, - builder: (context) => GeetestWebviewDialog(gt!, challenge!), - ); - if (json != null) { - captchaData - ..validate = json['geetest_validate'] - ..seccode = json['geetest_seccode'] - ..geetest = GeetestData( - challenge: json['geetest_challenge'], - gt: gt!, - ); - gaiaVgateValidate(); - } - return; - } - - final registerData = Gt3RegisterData( - challenge: challenge, - gt: gt, - success: true, + final json = await showDialog>( + context: Get.context!, + builder: (context) => GeetestWebviewDialog(gt!, challenge!), ); - - Gt3FlutterPlugin() - ..addEventHandler( - onClose: (Map message) { - SmartDialog.showToast('关闭验证'); - }, - onResult: (Map message) { - if (kDebugMode) debugPrint("Captcha result: $message"); - String code = message["code"]; - if (code == "1") { - // 发送 message["result"] 中的数据向 B 端的业务服务接口进行查询 - SmartDialog.showToast('验证成功'); - final result = message['result']; - captchaData - ..validate = result?['geetest_validate'] - ..seccode = result?['geetest_seccode'] - ..geetest = GeetestData( - challenge: result?['geetest_challenge'], - gt: gt!, - ); - gaiaVgateValidate(); - } else { - // 终端用户完成验证失败,自动重试 If the verification fails, it will be automatically retried. - if (kDebugMode) debugPrint("Captcha result code : $code"); - } - }, - onError: (Map message) { - SmartDialog.showToast("Captcha onError: $message"); - String code = message["code"]; - // 处理验证中返回的错误 Handling errors returned in verification - if (Platform.isAndroid) { - // Android 平台 - if (code == "-2") { - // Dart 调用异常 Call exception - } else if (code == "-1") { - // Gt3RegisterData 参数不合法 Parameter is invalid - } else if (code == "201") { - // 网络无法访问 Network inaccessible - } else if (code == "202") { - // Json 解析错误 Analysis error - } else if (code == "204") { - // WebView 加载超时,请检查是否混淆极验 SDK Load timed out - } else if (code == "204_1") { - // WebView 加载前端页面错误,请查看日志 Error loading front-end page, please check the log - } else if (code == "204_2") { - // WebView 加载 SSLError - } else if (code == "206") { - // gettype 接口错误或返回为 null API error or return null - } else if (code == "207") { - // getphp 接口错误或返回为 null API error or return null - } else if (code == "208") { - // ajax 接口错误或返回为 null API error or return null - } else { - // 更多错误码参考开发文档 More error codes refer to the development document - // https://docs.geetest.com/sensebot/apirefer/errorcode/android - } - } - - if (Platform.isIOS) { - // iOS 平台 - if (code == "-1009") { - // 网络无法访问 Network inaccessible - } else if (code == "-1004") { - // 无法查找到 HOST Unable to find HOST - } else if (code == "-1002") { - // 非法的 URL Illegal URL - } else if (code == "-1001") { - // 网络超时 Network timeout - } else if (code == "-999") { - // 请求被意外中断, 一般由用户进行取消操作导致 The interrupted request was usually caused by the user cancelling the operation - } else if (code == "-21") { - // 使用了重复的 challenge Duplicate challenges are used - // 检查获取 challenge 是否进行了缓存 Check if the fetch challenge is cached - } else if (code == "-20") { - // 尝试过多, 重新引导用户触发验证即可 Try too many times, lead the user to request verification again - } else if (code == "-10") { - // 预判断时被封禁, 不会再进行图形验证 Banned during pre-judgment, and no more image captcha verification - } else if (code == "-2") { - // Dart 调用异常 Call exception - } else if (code == "-1") { - // Gt3RegisterData 参数不合法 Parameter is invalid - } else { - // 更多错误码参考开发文档 More error codes refer to the development document - // https://docs.geetest.com/sensebot/apirefer/errorcode/ios - } - } - }, - ) - ..startCaptcha(registerData); + if (json != null) { + captchaData + ..validate = json['geetest_validate'] + ..seccode = json['geetest_seccode'] + ..geetest = GeetestData( + challenge: json['geetest_challenge'], + gt: gt!, + ); + gaiaVgateValidate(); + } } static Future showUserRealName(String mid) async { diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index b364d254b..bf77ce481 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:typed_data'; import 'package:PiliPlus/models/model_owner.dart'; import 'package:PiliPlus/models/user/danmaku_rule_adapter.dart'; @@ -10,7 +9,6 @@ import 'package:PiliPlus/utils/accounts/account_type_adapter.dart'; import 'package:PiliPlus/utils/accounts/cookie_jar_adapter.dart'; import 'package:PiliPlus/utils/path_utils.dart'; import 'package:PiliPlus/utils/set_int_adapter.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:hive_ce/hive.dart'; import 'package:path/path.dart' as path; @@ -22,7 +20,6 @@ abstract final class GStorage { static late final Box setting; static late final Box video; static late final Box watchProgress; - static late final Box? reply; static Future init() async { Hive.init(path.join(appSupportDirPath, 'hive')); @@ -63,18 +60,6 @@ abstract final class GStorage { }, ).then((res) => watchProgress = res), ]); - - if (Pref.saveReply) { - reply = await Hive.openBox( - 'reply', - keyComparator: _intStrDescKeyComparator, - compactionStrategy: (entries, deletedEntries) { - return deletedEntries > 10; - }, - ); - } else { - reply = null; - } } static String exportAllSettings() { @@ -117,7 +102,6 @@ abstract final class GStorage { video.compact(), Accounts.account.compact(), watchProgress.compact(), - ?reply?.compact(), ]); } @@ -130,7 +114,6 @@ abstract final class GStorage { video.close(), Accounts.account.close(), watchProgress.close(), - ?reply?.close(), ]); } @@ -143,7 +126,6 @@ abstract final class GStorage { video.clear(), Accounts.clear(), watchProgress.clear(), - ?reply?.clear(), ]); } diff --git a/lib/utils/storage_key.dart b/lib/utils/storage_key.dart index 767774084..b59964ee4 100644 --- a/lib/utils/storage_key.dart +++ b/lib/utils/storage_key.dart @@ -1,158 +1,65 @@ // ignore_for_file: constant_identifier_names abstract final class SettingBoxKey { - static const String btmProgressBehavior = 'btmProgressBehavior', - defaultVideoQa = 'defaultVideoQa', + static const String defaultVideoQa = 'defaultVideoQa', defaultVideoQaCellular = 'defaultVideoQaCellular', defaultAudioQa = 'defaultAudioQa', defaultAudioQaCellular = 'defaultAudioQaCellular', - autoPlayEnable = 'autoPlayEnable', - fullScreenMode = 'fullScreenMode', defaultDecode = 'defaultDecode', secondDecode = 'secondDecode', defaultPicQa = 'defaultPicQa', - enableHA = 'enableHA', audioOutput = 'audioOutput', - expandBuffer = 'expandBuffer', hardwareDecoding = 'hardwareDecoding', videoSync = 'videoSync', - autosync = 'autosync', - p1080 = 'p1080', - enableAutoEnter = 'enableAutoEnter', - enableAutoExit = 'enableAutoExit', enableOnlineTotal = 'enableOnlineTotal', - superChatType = 'superChatType', - fullScreenSCWidth = 'fullScreenSCWidth', keyboardControl = 'keyboardControl', - pauseOnMinimize = 'pauseOnMinimize', pgcSkipType = 'pgcSkipType', audioPlayMode = 'audioPlayMode', showBatteryLevel = 'showBatteryLevel'; - static const String enableVerticalExpand = 'enableVerticalExpand', - horizontalScreen = 'horizontalScreen', + static const String horizontalScreen = 'horizontalScreen', CDNService = 'CDNService', - disableAudioCDN = 'disableAudioCDN', - autoPiP = 'autoPiP', - enableAutoLongPressSpeed = 'enableAutoLongPressSpeed', - useRelativeSlide = 'useRelativeSlide', sliderDuration = 'sliderOffset', - enableQuickDouble = 'enableQuickDouble', - fullScreenGestureReverse = 'fullScreenGestureReverse', - enableBackgroundPlay = 'enableBackgroundPlay', continuePlayInBackground = 'continuePlayInBackground', - appRcmd = 'appRcmd', - enableSaveLastData = 'enableSaveLastData', - minDurationForRcmd = 'minDurationForRcmd', - minPlayForRcmd = 'minPlayForRcmd', - minLikeRatioForRecommend = 'minLikeRatioForRecommend', - exemptFilterForFollowed = 'exemptFilterForFollowed', - banWordForRecommend = 'banWordForRecommend', - applyFilterToRelatedVideos = 'applyFilterToRelatedVideos', - autoClearCache = 'autoClearCache', maxCacheSize = 'maxCacheSize', - defaultShowComment = 'defaultShowComment', - replySortType = 'replySortType', - defaultDynamicType = 'defaultDynamicType', - showDynInteraction = 'showDynInteraction', - enableHotKey = 'enableHotKey', - enableSearchRcmd = 'enableSearchRcmd', enableQuickFav = 'enableQuickFav', - enableSystemProxy = 'enableSystemProxy', - enableAi = 'enableAi', - defaultHomePage = 'defaultHomePage', previewQuality = 'previewQuality', - checkDynamic = 'checkDynamic', - dynamicPeriod = 'dynamicPeriod', schemeVariant = 'schemeVariant', - showViewPoints = 'showViewPoints', - showRelatedVideo = 'showRelatedVideo', - showVideoReply = 'showVideoReply', - showBangumiReply = 'showBangumiReply', - alwaysExpandIntroPanel = 'alwaysExapndIntroPanel', - expandIntroPanelH = 'exapndIntroPanelH', horizontalSeasonPanel = 'horizontalSeasonPanel', horizontalMemberPage = 'horizontalMemberPage', - showArgueMsg = 'showArgueMsg', - reverseFromFirst = 'reverseFromFirst', badCertificateCallback = 'badCertificateCallback', - continuePlayingPart = 'continuePlayingPart', cdnSpeedTest = 'cdnSpeedTest', horizontalPreview = 'horizontalPreview', - banWordForReply = 'banWordForReply', - banWordForZone = 'banWordForZone', - savedRcmdTip = 'savedRcmdTip', - openInBrowser = 'openInBrowser', refreshDragPercentage = 'refreshDragPercentage', refreshDisplacement = 'refreshDisplacement', - showHotRcmd = 'showHotRcmd', - audioNormalization = 'audioNormalization', - fallbackNormalization = 'fallbackNormalization', - superResolutionType = 'superResolutionType', - preInitPlayer = 'preInitPlayer', - searchSuggestion = 'searchSuggestion', - showDecorate = 'showDynDecorate', - showMedal = 'showMedal', - enableLivePhoto = 'enableLivePhoto', - showSeekPreview = 'showSeekPreview', - showDmChart = 'showDmChart', - enableCommAntifraud = 'enableCommAntifraud', - biliSendCommAntifraud = 'biliSendCommAntifraud', - enableCreateDynAntifraud = 'enableCreateDynAntifraud', coinWithLike = 'coinWithLike', - isPureBlackTheme = 'isPureBlackTheme', - antiGoodsDyn = 'antiGoodsDyn', - antiGoodsReply = 'antiGoodsReply', - expandDynLivePanel = 'expandDynLivePanel', springDescription = 'springDescription', enableHttp2 = 'enableHttp2', slideDismissReplyPage = 'slideDismissReplyPage', - showFSActionItem = 'showFSActionItem', - showDynActionBar = 'showDynActionBar', - darkVideoPage = 'darkVideoPage', - enableSlideVolumeBrightness = 'enableSlideVolumeBrightness', - enableSlideFS = 'enableSlideFS', retryCount = 'retryCount', retryDelay = 'retryDelay', liveQuality = 'liveQuality', liveQualityCellular = 'liveQualityCellular', fastForBackwardDuration = 'fastForBackwardDuration', - recordSearchHistory = 'recordSearchHistory', showPgcTimeline = 'showPgcTimeline', pageTransition = 'pageTransition', banWordForDyn = 'banWordForDyn', enableLog = 'enableLog', - memberTab = 'memberTab', dynamicDetailRatio = 'dynamicDetailRatio', - directExitOnBack = 'directExitOnBack', quickFavId = 'quickFavId', - showFsScreenshotBtn = 'showFsScreenshotBtn', - showFsLockBtn = 'showFsLockBtn', - silentDownImg = 'silentDownImg', - showMemberShop = 'showMemberShop', enablePlayAll = 'enablePlayAll', - enableTapDm = 'enableTapDm', - setSystemBrightness = 'setSystemBrightness', downloadPath = 'downloadPath', followOrderType = 'followOrderType', enableImgMenu = 'enableImgMenu', - showDynDispute = 'showDynDispute', touchSlopH = 'touchSlopH', - floatingNavBar = 'floatingNavBar', - removeSafeArea = 'removeSafeArea'; + floatingNavBar = 'floatingNavBar'; - static const String minimizeOnExit = 'minimizeOnExit', - windowSize = 'windowSize', + static const String windowSize = 'windowSize', windowPosition = 'windowPosition', isWindowMaximized = 'isWindowMaximized', - showWindowTitleBar = 'showWindowTitleBar', - desktopVolume = 'desktopVolume', - showTrayIcon = 'showTrayIcon', - uiScale = 'uiScale'; + desktopVolume = 'desktopVolume'; - static const String subtitlePreferenceV2 = 'subtitlePreferenceV2', - enableDragSubtitle = 'enableDragSubtitle', - subtitlePaddingH = 'subtitlePaddingH', + static const String subtitlePaddingH = 'subtitlePaddingH', subtitlePaddingB = 'subtitlePaddingB', subtitleBgOpacity = 'subtitleBgOpaticy', subtitleStrokeWidth = 'subtitleStrokeWidth', @@ -160,25 +67,15 @@ abstract final class SettingBoxKey { subtitleFontScaleFS = 'subtitleFontScaleFS', subtitleFontWeight = 'subtitleFontWeight'; - static const String webdavUri = 'webdavUri', - webdavUsername = 'webdavUsername', - webdavPassword = 'webdavPassword', - webdavDirectory = 'webdavDirectory'; - static const String enableSponsorBlock = 'enableSponsorBlock', blockSettings = 'blockSettings', - blockLimit = 'blockLimit', blockColor = 'blockColor', blockUserID = 'blockUserID', blockToast = 'blockToast', - blockServer = 'blockServer', - blockTrack = 'blockTrack'; + blockServer = 'blockServer'; static const String enableShowDanmaku = 'enableShowDanmaku', enableShowLiveDanmaku = 'enableShowLiveDanmaku', - pipNoDanmaku = 'pipNoDanmaku', - showVipDanmaku = 'showVipDanmaku', - mergeDanmaku = 'mergeDanmaku', danmakuWeight = 'danmakuWeight', danmakuBlockType = 'danmakuBlockType', danmakuShowArea = 'danmakuShowArea', @@ -194,29 +91,17 @@ abstract final class SettingBoxKey { danmakuStrokeWidth = 'strokeWidth', danmakuFontWeight = 'fontWeight'; - static const String systemProxyHost = 'systemProxyHost', - systemProxyPort = 'systemProxyPort'; - static const String themeMode = 'themeMode', - defaultTextScale = 'textScale', dynamicColor = 'dynamicColor', customColor = 'customColor', smallCardWidth = 'smallCardWidth', recommendCardWidth = 'recommendCardWidth', dynamicsWaterfallFlow = 'dynamicsWaterfallFlow', upPanelPosition = 'upPanelPosition', - dynamicsShowAllFollowedUp = 'dynamicsShowAllFollowedUp', - hideTopBar = 'hideSearchBar', - hideBottomBar = 'hideTabBar', - barHideType = 'barHideType', - tabBarSort = 'tabBarSort', dynamicBadgeMode = 'dynamicBadgeMode', msgBadgeMode = 'msgBadgeMode', msgUnReadTypeV2 = 'msgUnReadTypeV2', - navBarSort = 'navBarSort', - tempPlayerConf = 'tempPlayerConf', - liveCdnUrl = 'liveCdnUrl', - saveReply = 'saveReply'; + liveCdnUrl = 'liveCdnUrl'; } abstract final class LocalCacheKey { diff --git a/lib/utils/storage_pref.dart b/lib/utils/storage_pref.dart index 868aa0daa..1df6289ab 100644 --- a/lib/utils/storage_pref.dart +++ b/lib/utils/storage_pref.dart @@ -3,33 +3,21 @@ import 'dart:math' show pow, sqrt; import 'package:PiliPlus/common/widgets/pair.dart'; import 'package:PiliPlus/http/constants.dart'; -import 'package:PiliPlus/models/common/bar_hide_type.dart'; import 'package:PiliPlus/models/common/dynamic/dynamic_badge_mode.dart'; -import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart'; import 'package:PiliPlus/models/common/follow_order_type.dart'; -import 'package:PiliPlus/models/common/member/tab_type.dart'; import 'package:PiliPlus/models/common/msg/msg_unread_type.dart'; -import 'package:PiliPlus/models/common/nav_bar_config.dart'; -import 'package:PiliPlus/models/common/reply/reply_sort_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/segment_type.dart'; import 'package:PiliPlus/models/common/sponsor_block/skip_type.dart'; -import 'package:PiliPlus/models/common/super_chat_type.dart'; -import 'package:PiliPlus/models/common/super_resolution_type.dart'; import 'package:PiliPlus/models/common/theme/theme_type.dart'; import 'package:PiliPlus/models/common/video/audio_quality.dart'; import 'package:PiliPlus/models/common/video/cdn_type.dart'; import 'package:PiliPlus/models/common/video/live_quality.dart'; -import 'package:PiliPlus/models/common/video/subtitle_pref_type.dart'; import 'package:PiliPlus/models/common/video/video_decode_type.dart'; import 'package:PiliPlus/models/common/video/video_quality.dart'; import 'package:PiliPlus/models/user/danmaku_rule.dart'; import 'package:PiliPlus/models/user/info.dart'; -import 'package:PiliPlus/pages/setting/pages/fullscreen_sc_size.dart' - show kFullScreenSCWidth; import 'package:PiliPlus/plugin/pl_player/models/audio_output_type.dart'; -import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart'; -import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/hwdec_type.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/utils/device_utils.dart'; @@ -43,7 +31,7 @@ import 'package:PiliPlus/utils/utils.dart'; import 'package:crypto/crypto.dart'; import 'package:flex_seed_scheme/flex_seed_scheme.dart' show FlexSchemeVariant; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; +import 'package:get/get_navigation/src/routes/transitions_type.dart'; import 'package:hive_ce/hive.dart'; abstract final class Pref { @@ -82,12 +70,6 @@ abstract final class Pref { GlobalData().blackMids..remove(mid), ); - static MemberTabType get memberTab => - MemberTabType.values[_setting.get( - SettingBoxKey.memberTab, - defaultValue: 0, - )]; - static int get _themeTypeInt => _setting.get( SettingBoxKey.themeMode, defaultValue: ThemeType.system.index, @@ -165,14 +147,6 @@ abstract final class Pref { .toSet() ?? MsgUnReadType.values.toSet(); - static NavigationBarType get defaultHomePage => - NavigationBarType.values[defaultHomePageIndex]; - - static int get defaultHomePageIndex => _setting.get( - SettingBoxKey.defaultHomePage, - defaultValue: NavigationBarType.home.index, - ); - static int get previewQ => _setting.get(SettingBoxKey.previewQuality, defaultValue: 100); @@ -188,33 +162,6 @@ abstract final class Pref { defaultValue: UpPanelPosition.leftFixed.index, )]; - static FullScreenMode get fullScreenMode { - int? index = _setting.get(SettingBoxKey.fullScreenMode); - if (index == null) { - final FullScreenMode mode = horizontalScreen && DeviceUtils.isTablet - ? .none - : .auto; - _setting.put(SettingBoxKey.fullScreenMode, mode.index); - return mode; - } - return FullScreenMode.values[index]; - } - - static BtmProgressBehavior get btmProgressBehavior => - BtmProgressBehavior.values[_setting.get( - SettingBoxKey.btmProgressBehavior, - defaultValue: BtmProgressBehavior.alwaysShow.index, - )]; - - static SubtitlePrefType get subtitlePreferenceV2 => - SubtitlePrefType.values[_setting.get( - SettingBoxKey.subtitlePreferenceV2, - defaultValue: SubtitlePrefType.off.index, - )]; - - static bool get useRelativeSlide => - _setting.get(SettingBoxKey.useRelativeSlide, defaultValue: false); - static int get sliderDuration => _setting.get(SettingBoxKey.sliderDuration, defaultValue: 90); @@ -258,11 +205,6 @@ abstract final class Pref { static String get videoSync => _setting.get(SettingBoxKey.videoSync, defaultValue: 'display-resample'); - static String get autosync => _setting.get( - SettingBoxKey.autosync, - defaultValue: Platform.isAndroid ? '30' : '0', - ); - static CDNService get defaultCDNService { if (_setting.get(SettingBoxKey.CDNService) case final String cdnName) { return CDNService.values.byName(cdnName); @@ -270,38 +212,6 @@ abstract final class Pref { return CDNService.backupUrl; } - static String get banWordForRecommend => - _setting.get(SettingBoxKey.banWordForRecommend, defaultValue: ''); - - static String get banWordForReply => - _setting.get(SettingBoxKey.banWordForReply, defaultValue: ''); - - static String get banWordForZone => - _setting.get(SettingBoxKey.banWordForZone, defaultValue: ''); - - static bool get appRcmd => - _setting.get(SettingBoxKey.appRcmd, defaultValue: true); - - static String get systemProxyHost => - _setting.get(SettingBoxKey.systemProxyHost, defaultValue: ''); - - static String get systemProxyPort => - _setting.get(SettingBoxKey.systemProxyPort, defaultValue: ''); - - static DynamicsTabType get defaultDynamicType => - DynamicsTabType.values[defaultDynamicTypeIndex]; - - static int get defaultDynamicTypeIndex => _setting.get( - SettingBoxKey.defaultDynamicType, - defaultValue: DynamicsTabType.all.index, - ); - - static bool get showDynInteraction => - _setting.get(SettingBoxKey.showDynInteraction, defaultValue: true); - - static double get blockLimit => - _setting.get(SettingBoxKey.blockLimit, defaultValue: 0.0); - static double get refreshDragPercentage => _setting.get(SettingBoxKey.refreshDragPercentage, defaultValue: 0.25); @@ -329,15 +239,6 @@ abstract final class Pref { defaultValue: HttpString.sponsorBlockBaseUrl, ); - static bool get blockTrack => - _setting.get(SettingBoxKey.blockTrack, defaultValue: false); - - static bool get checkDynamic => - _setting.get(SettingBoxKey.checkDynamic, defaultValue: true); - - static int get dynamicPeriod => - _setting.get(SettingBoxKey.dynamicPeriod, defaultValue: 5); - static FlexSchemeVariant get schemeVariant => FlexSchemeVariant.values[_setting.get( SettingBoxKey.schemeVariant, @@ -364,24 +265,6 @@ abstract final class Pref { static double get subtitleFontScaleFS => _setting.get(SettingBoxKey.subtitleFontScaleFS, defaultValue: 1.5); - static bool get showViewPoints => - _setting.get(SettingBoxKey.showViewPoints, defaultValue: true); - - static bool get showRelatedVideo => - _setting.get(SettingBoxKey.showRelatedVideo, defaultValue: true); - - static bool get showVideoReply => - _setting.get(SettingBoxKey.showVideoReply, defaultValue: true); - - static bool get showBangumiReply => - _setting.get(SettingBoxKey.showBangumiReply, defaultValue: true); - - static bool get alwaysExpandIntroPanel => - _setting.get(SettingBoxKey.alwaysExpandIntroPanel, defaultValue: false); - - static bool get expandIntroPanelH => - _setting.get(SettingBoxKey.expandIntroPanelH, defaultValue: false); - static bool get horizontalSeasonPanel => _setting.get( SettingBoxKey.horizontalSeasonPanel, defaultValue: horizontalScreen, @@ -398,12 +281,6 @@ abstract final class Pref { static double get danmakuLineHeight => _setting.get(SettingBoxKey.danmakuLineHeight, defaultValue: 1.6); - static bool get showArgueMsg => - _setting.get(SettingBoxKey.showArgueMsg, defaultValue: true); - - static bool get reverseFromFirst => - _setting.get(SettingBoxKey.reverseFromFirst, defaultValue: true); - static int get subtitlePaddingH => _setting.get(SettingBoxKey.subtitlePaddingH, defaultValue: 24); @@ -422,113 +299,20 @@ abstract final class Pref { static bool get badCertificateCallback => _setting.get(SettingBoxKey.badCertificateCallback, defaultValue: false); - static bool get continuePlayingPart => - _setting.get(SettingBoxKey.continuePlayingPart, defaultValue: true); - static bool get cdnSpeedTest => _setting.get(SettingBoxKey.cdnSpeedTest, defaultValue: true); static bool get horizontalPreview => _setting.get(SettingBoxKey.horizontalPreview, defaultValue: false); - static bool get openInBrowser => - _setting.get(SettingBoxKey.openInBrowser, defaultValue: false); - - static bool get savedRcmdTip => - _setting.get(SettingBoxKey.savedRcmdTip, defaultValue: true); - - static bool get showVipDanmaku => - _setting.get(SettingBoxKey.showVipDanmaku, defaultValue: true); - - static bool get mergeDanmaku => - _setting.get(SettingBoxKey.mergeDanmaku, defaultValue: false); - - static bool get showHotRcmd => - _setting.get(SettingBoxKey.showHotRcmd, defaultValue: false); - - static String get audioNormalization => - _setting.get(SettingBoxKey.audioNormalization, defaultValue: '0'); - - static String get fallbackNormalization => - _setting.get(SettingBoxKey.fallbackNormalization, defaultValue: '0'); - - static SuperResolutionType get superResolutionType { - SuperResolutionType? superResolutionType; - final index = _setting.get(SettingBoxKey.superResolutionType); - if (index != null) { - superResolutionType = SuperResolutionType.values.elementAtOrNull(index); - } - return superResolutionType ?? SuperResolutionType.disable; - } - - static bool get preInitPlayer => - _setting.get(SettingBoxKey.preInitPlayer, defaultValue: false); - - static bool get searchSuggestion => - _setting.get(SettingBoxKey.searchSuggestion, defaultValue: true); - - static bool get showDecorate => - _setting.get(SettingBoxKey.showDecorate, defaultValue: true); - - static bool get showMedal => - _setting.get(SettingBoxKey.showMedal, defaultValue: true); - - static bool get enableLivePhoto => - _setting.get(SettingBoxKey.enableLivePhoto, defaultValue: true); - - static bool get showSeekPreview => - _setting.get(SettingBoxKey.showSeekPreview, defaultValue: true); - - static bool get showDmChart => - _setting.get(SettingBoxKey.showDmChart, defaultValue: false); - - static bool get enableCommAntifraud => - _setting.get(SettingBoxKey.enableCommAntifraud, defaultValue: false); - - static bool get biliSendCommAntifraud => - Platform.isAndroid && - _setting.get(SettingBoxKey.biliSendCommAntifraud, defaultValue: false); - - static bool get enableCreateDynAntifraud => - _setting.get(SettingBoxKey.enableCreateDynAntifraud, defaultValue: false); - static bool get coinWithLike => _setting.get(SettingBoxKey.coinWithLike, defaultValue: false); - static bool get isPureBlackTheme => - _setting.get(SettingBoxKey.isPureBlackTheme, defaultValue: false); - - static bool get antiGoodsDyn => - _setting.get(SettingBoxKey.antiGoodsDyn, defaultValue: false); - - static bool get antiGoodsReply => - _setting.get(SettingBoxKey.antiGoodsReply, defaultValue: false); - - static bool get expandDynLivePanel => - _setting.get(SettingBoxKey.expandDynLivePanel, defaultValue: false); - static bool get slideDismissReplyPage => _setting.get( SettingBoxKey.slideDismissReplyPage, defaultValue: Platform.isIOS, ); - static bool get showFSActionItem => - _setting.get(SettingBoxKey.showFSActionItem, defaultValue: true); - - static bool get showDynActionBar => - _setting.get(SettingBoxKey.showDynActionBar, defaultValue: true); - - static bool get darkVideoPage => - _setting.get(SettingBoxKey.darkVideoPage, defaultValue: false); - - static bool get enableSlideVolumeBrightness => _setting.get( - SettingBoxKey.enableSlideVolumeBrightness, - defaultValue: true, - ); - - static bool get enableSlideFS => - _setting.get(SettingBoxKey.enableSlideFS, defaultValue: true); - static int get retryCount => _setting.get(SettingBoxKey.retryCount, defaultValue: 2); @@ -545,27 +329,9 @@ abstract final class Pref { defaultValue: LiveQuality.superHD.code, ); - static bool get enableDragSubtitle => - _setting.get(SettingBoxKey.enableDragSubtitle, defaultValue: false); - static int get fastForBackwardDuration => _setting.get(SettingBoxKey.fastForBackwardDuration, defaultValue: 10); - static bool get recordSearchHistory => - _setting.get(SettingBoxKey.recordSearchHistory, defaultValue: true); - - static String get webdavUri => - _setting.get(SettingBoxKey.webdavUri, defaultValue: ''); - - static String get webdavUsername => - _setting.get(SettingBoxKey.webdavUsername, defaultValue: ''); - - static String get webdavPassword => - _setting.get(SettingBoxKey.webdavPassword, defaultValue: ''); - - static String get webdavDirectory => - _setting.get(SettingBoxKey.webdavDirectory, defaultValue: '/'); - static bool get showPgcTimeline => _setting.get(SettingBoxKey.showPgcTimeline, defaultValue: true); @@ -588,73 +354,11 @@ abstract final class Pref { static bool get enableLog => _setting.get(SettingBoxKey.enableLog, defaultValue: true); - static bool get disableAudioCDN => - _setting.get(SettingBoxKey.disableAudioCDN, defaultValue: false); - - static int get minDurationForRcmd => - _setting.get(SettingBoxKey.minDurationForRcmd, defaultValue: 0); - - static int get minPlayForRcmd => - _setting.get(SettingBoxKey.minPlayForRcmd, defaultValue: 0); - - static int get minLikeRatioForRecommend => - _setting.get(SettingBoxKey.minLikeRatioForRecommend, defaultValue: 0); - - static bool get exemptFilterForFollowed => - _setting.get(SettingBoxKey.exemptFilterForFollowed, defaultValue: true); - - static bool get applyFilterToRelatedVideos => _setting.get( - SettingBoxKey.applyFilterToRelatedVideos, - defaultValue: true, - ); - - static bool get enableBackgroundPlay => - _setting.get(SettingBoxKey.enableBackgroundPlay, defaultValue: true); - - static bool get autoExitFullscreen => - _setting.get(SettingBoxKey.enableAutoExit, defaultValue: true); - - static bool get autoPlayEnable => - _setting.get(SettingBoxKey.autoPlayEnable, defaultValue: false); - - static bool get pipNoDanmaku => - _setting.get(SettingBoxKey.pipNoDanmaku, defaultValue: false); - - static bool get enableVerticalExpand => - _setting.get(SettingBoxKey.enableVerticalExpand, defaultValue: false); - - static double get defaultTextScale => - _setting.get(SettingBoxKey.defaultTextScale, defaultValue: 1.0); - - static double get uiScale => - _setting.get(SettingBoxKey.uiScale, defaultValue: 1.0); - static bool get dynamicsWaterfallFlow => _setting.get( SettingBoxKey.dynamicsWaterfallFlow, defaultValue: horizontalScreen, ); - static bool get hideTopBar => _setting.get( - SettingBoxKey.hideTopBar, - defaultValue: PlatformUtils.isMobile, - ); - - static bool get hideBottomBar => _setting.get( - SettingBoxKey.hideBottomBar, - defaultValue: PlatformUtils.isMobile, - ); - - static BarHideType get barHideType => - BarHideType.values[_setting.get( - SettingBoxKey.barHideType, - defaultValue: BarHideType.sync.index, - )]; - - static bool get dynamicsShowAllFollowedUp => _setting.get( - SettingBoxKey.dynamicsShowAllFollowedUp, - defaultValue: false, - ); - static bool get enableShowDanmaku => _setting.get(SettingBoxKey.enableShowDanmaku, defaultValue: true); @@ -664,9 +368,6 @@ abstract final class Pref { static bool get enableQuickFav => _setting.get(SettingBoxKey.enableQuickFav, defaultValue: false); - static bool get p1080 => - _setting.get(SettingBoxKey.p1080, defaultValue: true); - static int get customColor => _setting.get(SettingBoxKey.customColor, defaultValue: 0); @@ -674,21 +375,9 @@ abstract final class Pref { !Platform.isIOS && _setting.get(SettingBoxKey.dynamicColor, defaultValue: true); - static bool get autoClearCache => - _setting.get(SettingBoxKey.autoClearCache, defaultValue: false); - - static bool get enableSystemProxy => - _setting.get(SettingBoxKey.enableSystemProxy, defaultValue: false); - static bool get enableHttp2 => _setting.get(SettingBoxKey.enableHttp2, defaultValue: false); - static ReplySortType get replySortType => - ReplySortType.values[_setting.get( - SettingBoxKey.replySortType, - defaultValue: ReplySortType.hot.index, - )]; - static DynamicBadgeMode get dynamicBadgeMode => DynamicBadgeMode.values[_setting.get( SettingBoxKey.dynamicBadgeMode, @@ -701,21 +390,9 @@ abstract final class Pref { defaultValue: Transition.native.index, )]; - static bool get enableQuickDouble => - _setting.get(SettingBoxKey.enableQuickDouble, defaultValue: true); - - static bool get fullScreenGestureReverse => - _setting.get(SettingBoxKey.fullScreenGestureReverse, defaultValue: false); - - static bool get autoPiP => - _setting.get(SettingBoxKey.autoPiP, defaultValue: false); - static bool get enableSponsorBlock => _setting.get(SettingBoxKey.enableSponsorBlock, defaultValue: false); - static bool get enableHA => - _setting.get(SettingBoxKey.enableHA, defaultValue: true); - static Set get danmakuBlockType => Set.from( _setting.get(SettingBoxKey.danmakuBlockType, defaultValue: const {}), ); @@ -750,44 +427,20 @@ abstract final class Pref { defaultValue: PlatformUtils.isMobile ? 5 : 6, ); - static bool get expandBuffer => - _setting.get(SettingBoxKey.expandBuffer, defaultValue: false); - static String get audioOutput => _setting.get( SettingBoxKey.audioOutput, defaultValue: AudioOutput.defaultValue, ); - static bool get enableAi => - _setting.get(SettingBoxKey.enableAi, defaultValue: false); - static bool get enableOnlineTotal => _setting.get(SettingBoxKey.enableOnlineTotal, defaultValue: false); - static bool get autoEnterFullScreen => - _setting.get(SettingBoxKey.enableAutoEnter, defaultValue: false); - - static bool get enableAutoLongPressSpeed => - _setting.get(SettingBoxKey.enableAutoLongPressSpeed, defaultValue: false); - static double get playSpeedDefault => _video.get(VideoBoxKey.playSpeedDefault, defaultValue: 1.0); static double get longPressSpeedDefault => _video.get(VideoBoxKey.longPressSpeedDefault, defaultValue: 3.0); - static bool get defaultShowComment => - _setting.get(SettingBoxKey.defaultShowComment, defaultValue: false); - - static bool get enableTrending => - _setting.get(SettingBoxKey.enableHotKey, defaultValue: true); - - static bool get enableSearchRcmd => - _setting.get(SettingBoxKey.enableSearchRcmd, defaultValue: true); - - static bool get enableSaveLastData => - _setting.get(SettingBoxKey.enableSaveLastData, defaultValue: true); - static PlayRepeat get playRepeat => PlayRepeat.values[_video.get( VideoBoxKey.playRepeat, @@ -800,51 +453,12 @@ abstract final class Pref { static bool get continuePlayInBackground => _setting.get(SettingBoxKey.continuePlayInBackground, defaultValue: false); - static bool get directExitOnBack => - _setting.get(SettingBoxKey.directExitOnBack, defaultValue: false); - static bool get historyPause => _localCache.get(LocalCacheKey.historyPause, defaultValue: false); static int? get quickFavId => _setting.get(SettingBoxKey.quickFavId); - static bool get tempPlayerConf => - _setting.get(SettingBoxKey.tempPlayerConf, defaultValue: false); - - static bool get showFsScreenshotBtn => - _setting.get(SettingBoxKey.showFsScreenshotBtn, defaultValue: true); - - static bool get showFsLockBtn => - _setting.get(SettingBoxKey.showFsLockBtn, defaultValue: true); - - static bool get silentDownImg => - _setting.get(SettingBoxKey.silentDownImg, defaultValue: false); - - static String get buvid { - String? buvid = _localCache.get(LocalCacheKey.buvid); - if (buvid == null) { - buvid = LoginUtils.generateBuvid(); - _localCache.put(LocalCacheKey.buvid, buvid); - } - return buvid; - } - - static bool get showMemberShop => - _setting.get(SettingBoxKey.showMemberShop, defaultValue: false); - - static SuperChatType get superChatType => - SuperChatType.values[_setting.get( - SettingBoxKey.superChatType, - defaultValue: SuperChatType.valid.index, - )]; - - static double get fullScreenSCWidth => _setting.get( - SettingBoxKey.fullScreenSCWidth, - defaultValue: kFullScreenSCWidth, - ); - - static bool get minimizeOnExit => - _setting.get(SettingBoxKey.minimizeOnExit, defaultValue: true); + static final String buvid = LoginUtils.generateBuvid(); static Size get windowSize { final List? size = (_setting.get(SettingBoxKey.windowSize) as List?) @@ -863,12 +477,6 @@ abstract final class Pref { defaultValue: PlatformUtils.isDesktop, ); - static bool get pauseOnMinimize => - _setting.get(SettingBoxKey.pauseOnMinimize, defaultValue: false); - - static bool get showWindowTitleBar => - _setting.get(SettingBoxKey.showWindowTitleBar, defaultValue: true); - static double get desktopVolume => _setting.get(SettingBoxKey.desktopVolume, defaultValue: 1.0); @@ -883,15 +491,6 @@ abstract final class Pref { static bool get enablePlayAll => _setting.get(SettingBoxKey.enablePlayAll, defaultValue: true); - static bool get enableTapDm => - _setting.get(SettingBoxKey.enableTapDm, defaultValue: true); - - static bool get showTrayIcon => - _setting.get(SettingBoxKey.showTrayIcon, defaultValue: true); - - static bool get setSystemBrightness => - _setting.get(SettingBoxKey.setSystemBrightness, defaultValue: false); - static String? get downloadPath => _setting.get(SettingBoxKey.downloadPath); static String? get liveCdnUrl => _setting.get(SettingBoxKey.liveCdnUrl); @@ -910,18 +509,9 @@ abstract final class Pref { static bool get enableImgMenu => _setting.get(SettingBoxKey.enableImgMenu, defaultValue: false); - static bool get showDynDispute => - _setting.get(SettingBoxKey.showDynDispute, defaultValue: false); - static double get touchSlopH => _setting.get(SettingBoxKey.touchSlopH, defaultValue: 24.0); - static bool get saveReply => - _setting.get(SettingBoxKey.saveReply, defaultValue: true); - static bool get floatingNavBar => _setting.get(SettingBoxKey.floatingNavBar, defaultValue: false); - - static bool get removeSafeArea => - _setting.get(SettingBoxKey.removeSafeArea, defaultValue: false); } diff --git a/lib/utils/theme_utils.dart b/lib/utils/theme_utils.dart index 5415ee6d2..75a5a3e7f 100644 --- a/lib/utils/theme_utils.dart +++ b/lib/utils/theme_utils.dart @@ -1,6 +1,5 @@ import 'package:PiliPlus/common/style.dart'; import 'package:PiliPlus/utils/extension/theme_ext.dart'; -import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:flutter/cupertino.dart' show CupertinoThemeData; import 'package:flutter/foundation.dart' show PlatformDispatcher; import 'package:flutter/material.dart'; @@ -118,62 +117,6 @@ abstract final class ThemeUtils { }, ), ); - if (isDark) { - if (Pref.isPureBlackTheme) { - themeData = darkenTheme(themeData); - } - } return themeData; } - - static ThemeData darkenTheme(ThemeData themeData) { - final colorScheme = themeData.colorScheme; - final color = colorScheme.surfaceContainerHighest.darken(0.7); - return themeData.copyWith( - scaffoldBackgroundColor: Colors.black, - appBarTheme: themeData.appBarTheme.copyWith( - backgroundColor: Colors.black, - ), - cardTheme: themeData.cardTheme.copyWith( - color: Colors.black, - ), - dialogTheme: themeData.dialogTheme.copyWith( - backgroundColor: color, - ), - bottomSheetTheme: themeData.bottomSheetTheme.copyWith( - backgroundColor: color, - ), - bottomNavigationBarTheme: themeData.bottomNavigationBarTheme.copyWith( - backgroundColor: color, - ), - navigationBarTheme: themeData.navigationBarTheme.copyWith( - backgroundColor: color, - ), - navigationRailTheme: themeData.navigationRailTheme.copyWith( - backgroundColor: Colors.black, - ), - colorScheme: colorScheme.copyWith( - primary: colorScheme.primary.darken(0.1), - onPrimary: colorScheme.onPrimary.darken(0.1), - primaryContainer: colorScheme.primaryContainer.darken(0.1), - onPrimaryContainer: colorScheme.onPrimaryContainer.darken(0.1), - inversePrimary: colorScheme.inversePrimary.darken(0.1), - secondary: colorScheme.secondary.darken(0.1), - onSecondary: colorScheme.onSecondary.darken(0.1), - secondaryContainer: colorScheme.secondaryContainer.darken(0.1), - onSecondaryContainer: colorScheme.onSecondaryContainer.darken(0.1), - error: colorScheme.error.darken(0.1), - surface: Colors.black, - onSurface: colorScheme.onSurface.darken(0.15), - surfaceTint: colorScheme.surfaceTint.darken(), - inverseSurface: colorScheme.inverseSurface.darken(), - onInverseSurface: colorScheme.onInverseSurface.darken(), - surfaceContainer: colorScheme.surfaceContainer.darken(), - surfaceContainerHigh: colorScheme.surfaceContainerHigh.darken(), - surfaceContainerHighest: colorScheme.surfaceContainerHighest.darken( - 0.4, - ), - ), - ); - } } diff --git a/lib/utils/url_utils.dart b/lib/utils/url_utils.dart index 0ab631c66..95ad2cb1a 100644 --- a/lib/utils/url_utils.dart +++ b/lib/utils/url_utils.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/search.dart'; import 'package:PiliPlus/utils/accounts/account.dart'; +import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart'; import 'package:dio/dio.dart'; @@ -60,7 +61,7 @@ abstract final class UrlUtils { } } else { if (redirectUrl.isNotEmpty) { - PageUtils.handleWebview(redirectUrl); + PiliScheme.routePushFromUrl(redirectUrl); } else { SmartDialog.showToast('matchUrlPush: $pathSegment'); } diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 1b7258109..2e936878c 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -30,14 +30,8 @@ abstract final class Utils { ); } - static Future copyText( - String text, { - bool needToast = true, - String? toastText, - }) { - if (needToast) { - SmartDialog.showToast(toastText ?? '已复制'); - } + static Future copyText(String text, {String? toastText}) { + SmartDialog.showToast(toastText ?? '已复制'); return Clipboard.setData(ClipboardData(text: text)); } diff --git a/lib/utils/video_utils.dart b/lib/utils/video_utils.dart index c82b7b710..f945cb01c 100644 --- a/lib/utils/video_utils.dart +++ b/lib/utils/video_utils.dart @@ -6,7 +6,6 @@ import 'package:flutter/foundation.dart' show kDebugMode, debugPrint; abstract final class VideoUtils { static CDNService cdnService = Pref.defaultCDNService; static String? liveCdnUrl = Pref.liveCdnUrl; - static bool disableAudioCDN = Pref.disableAudioCDN; static const _proxyTf = 'proxy-tf-all-ws.bilivideo.com'; @@ -41,8 +40,7 @@ abstract final class VideoUtils { // upos-sz-mirrorcoso1.bilivideo.com os=mcdn mcdnUpgcxcode = url; } else { - if (defaultCDNService == CDNService.backupUrl || - (isAudio && disableAudioCDN)) { + if (defaultCDNService == CDNService.backupUrl) { return url; } return uri.replace(host: defaultCDNService.host).toString(); diff --git a/pubspec.lock b/pubspec.lock index b8c7ace28..9ffc3ad73 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -355,14 +355,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" - url: "https://pub.dev" - source: hosted - version: "1.0.9" dart_style: dependency: transitive description: @@ -379,15 +371,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.12" - desktop_webview_window: - dependency: "direct main" - description: - path: "." - ref: main - resolved-ref: b429f8ba6b8a99cd0f7eb5fe8d1621f325635c3d - url: "https://github.com/Predidit/linux_webview_window" - source: git - version: "0.2.4" device_info_plus: dependency: "direct main" description: @@ -428,14 +411,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" - dlna_dart: - dependency: "direct main" - description: - name: dlna_dart - sha256: "8a4f0e4f378615c99f2af679dc9f0c72fe4a0fb2f3eea96b637fe691dfcf0649" - url: "https://pub.dev" - source: hosted - version: "0.1.0" dynamic_color: dependency: "direct main" description: @@ -460,14 +435,6 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.3" - equatable: - dependency: transitive - description: - name: equatable - sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" - url: "https://pub.dev" - source: hosted - version: "2.0.8" expandable: dependency: "direct main" description: @@ -573,14 +540,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" - fl_chart: - dependency: "direct main" - description: - name: fl_chart - sha256: b938f77d042cbcd822936a7a359a7235bad8bd72070de1f827efc2cc297ac888 - url: "https://pub.dev" - source: hosted - version: "1.2.0" flex_seed_scheme: dependency: "direct main" description: @@ -792,8 +751,8 @@ packages: dependency: "direct main" description: path: "." - ref: "version_4.7.2" - resolved-ref: "388fcb22ef24ac0a693949148d29fa6b4922159f" + ref: dev + resolved-ref: "4cd4a190e71281bfdf8a4562b771f99427514f10" url: "https://github.com/bggRGjQaUbCoE/getx.git" source: git version: "4.7.2" @@ -813,22 +772,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" - gt3_flutter_plugin: - dependency: "direct main" - description: - name: gt3_flutter_plugin - sha256: "9cf4070f3f1811b7aa7a1daebdec5886dbda8e64f932a713dab21d8128d7dad2" - url: "https://pub.dev" - source: hosted - version: "0.1.1" gtk: dependency: transitive description: name: gtk - sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c + sha256: "4ff85b2a16724029dd9e5bbb5a94b6918f9973f74ba571c949d2002801879cf5" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" hive_ce: dependency: "direct main" description: @@ -1596,10 +1547,10 @@ packages: dependency: transitive description: name: sentry - sha256: "1f78300740739ff4b4920802687879231554350eab73eb229778f463aabda440" + sha256: f04095a25ff02b202a914174c73ec309570aa93d61098cb4a0a9e715b4aaa465 url: "https://pub.dev" source: hosted - version: "9.19.0" + version: "9.20.0" share_plus: dependency: "direct main" description: @@ -1729,10 +1680,10 @@ packages: dependency: transitive description: name: sqflite_common - sha256: "5e8377564d95166761a968ed96104e0569b6b6cc611faac92a36ab8a169112c3" + sha256: f8a08a13fb8f0f8c590df89d745000bed44a673ed94bac846739e1a016875c21 url: "https://pub.dev" source: hosted - version: "2.5.6+1" + version: "2.5.7" sqflite_darwin: dependency: transitive description: @@ -1906,10 +1857,10 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f + sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" url_launcher_windows: dependency: transitive description: @@ -1946,10 +1897,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74" + sha256: "06f0c50f88a1a020f95138dcc14ef4d5a039ced3f89b386209e6763dfa2cefa0" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" vector_math: dependency: "direct main" description: @@ -2030,23 +1981,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - webdav_client: - dependency: "direct main" - description: - path: "." - ref: main - resolved-ref: "2f669c98fb81cff1c64fee93466a1475c77e4273" - url: "https://github.com/wgh136/webdav_client.git" - source: git - version: "1.2.2" win32: dependency: transitive description: name: win32 - sha256: ba7d5750e3441caa1bbe31d9e516348fcf8dfcb32aa29ef87a844a59f4d1f1d0 + sha256: a1fc9eb9248baa05dfc12ed5b66e377b3e23f095eec078e0371622b9033810d9 url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.0" win32_registry: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index f30a20f8e..aa34c4f51 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,285 +34,182 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.8 - # 动态取色 - dynamic_color: ^1.8.1 - # get: ^4.7.2 - get: - git: - url: https://github.com/bggRGjQaUbCoE/getx.git - ref: version_4.7.2 - - # 网络 - dio: ^5.9.1 - cookie_jar: ^4.0.8 - connectivity_plus: ^7.1.1 - dio_http2_adapter: ^2.5.3 - - # 图片 - cached_network_image: ^3.4.1 - # extended_image: ^9.0.7 - saver_gallery: ^4.1.0 - - # QRCode - # qr_flutter: ^4.1.0 - pretty_qr_code: ^3.3.0 - - # 存储 - path_provider: ^2.1.5 - hive_ce: ^2.19.3 - - # 设备信息 - device_info_plus: ^13.1.0 - # 权限 - # permission_handler: ^12.0.0+1 - permission_handler_apple: ^9.4.7 - permission_handler_android: ^13.0.1 - permission_handler_platform_interface: ^4.3.0 - # 分享 - share_plus: ^13.1.0 - # cookie 管理 - # webview_cookie_manager: ^2.0.6 - # 浏览器 - # webview_flutter: ^4.10.0 - flutter_inappwebview: ^6.1.5 - desktop_webview_window: - git: - url: https://github.com/Predidit/linux_webview_window - ref: main - # 解决sliver滑动不同步 - # extended_nested_scroll_view: ^6.2.1 - extended_nested_scroll_view: - git: - url: https://github.com/bggRGjQaUbCoE/extended_nested_scroll_view.git - ref: mod - # 上拉加载 - # loading_more_list: ^7.1.0 - # 下拉刷新 - # pull_to_refresh_notification: ^3.1.0 - # 图标 - font_awesome_flutter: 10.9.0 - # material_design_icons_flutter: ^7.0.7296 - material_design_icons_flutter: - git: - url: https://github.com/bggRGjQaUbCoE/material_design_icons_flutter.git - ref: const - # toast - flutter_smart_dialog: - git: - url: https://github.com/bggRGjQaUbCoE/flutter_smart_dialog.git - ref: main - # 下滑关闭 - # dismissible_page: ^1.0.2 - # custom_sliding_segmented_control: ^1.8.4 - # 加密 - crypto: ^3.0.6 - encrypt: ^5.0.3 - - # 视频播放器 - media_kit: 1.1.11 # Primary package. - # media_kit_video: ^1.2.5 # For video rendering. - media_kit_video: - git: - url: https://github.com/bggRGjQaUbCoE/media-kit.git - path: media_kit_video - ref: version_1.2.5 - media_kit_libs_video: 1.0.5 - - # 媒体通知 + app_links: ^7.0.0 + archive: ^4.0.0 audio_service: ^0.18.15 audio_session: ^0.2.2 - - # 音量、亮度、屏幕控制 - flutter_volume_controller: ^1.3.3 - wakelock_plus: ^1.2.8 - # universal_platform: ^1.1.0 - # auto_orientation: - # git: - # url: https://github.com/bggRGjQaUbCoE/auto_orientation.git - # ref: master - native_device_orientation: - git: - url: https://github.com/bggRGjQaUbCoE/flutter_native_device_orientation.git - ref: master - protobuf: ^6.0.0 - # animations: ^2.0.11 - - # 获取appx信息 - package_info_plus: ^10.1.0 - url_launcher: ^6.3.1 - # 防抖节流 - easy_debounce: ^2.0.3 - # 高帧率 - # flutter_displaymode: ^0.7.0 - # scheme跳转 - app_links: ^7.0.0 - # 弹幕 - # ns_danmaku: - # git: - # url: https://github.com/bggRGjQaUbCoE/flutter_ns_danmaku.git - # ref: master + battery_plus: ^7.0.0 + brotli: ^0.6.0 + cached_network_image: ^3.4.1 canvas_danmaku: git: url: https://github.com/bggRGjQaUbCoE/canvas_danmaku.git ref: main - # 状态栏图标控制 - # status_bar_control: ^3.2.1 - # 代理 - # system_proxy: ^0.1.0 - # pip - # floating: ^3.0.0 - floating: - git: - url: https://github.com/bggRGjQaUbCoE/floating.git - ref: version-3 - # html解析 - html: ^0.15.4 - # html渲染 - flutter_html: ^3.0.0-beta.2 - # 极验 - gt3_flutter_plugin: ^0.1.0 - uuid: ^4.5.1 - # scrollable_positioned_list: ^0.3.8 - # nil: ^1.1.1 catcher_2: ^2.1.0 - logger: ^2.5.0 - #瀑布流 - waterfall_flow: ^3.1.0 - #跑马灯 - # marquee: ^2.3.0 - #富文本 - # extended_text: ^14.1.0 - # chat_bottom_container: ^0.2.0 + characters: ^1.4.1 chat_bottom_container: git: url: https://github.com/bggRGjQaUbCoE/flutter_chat_packages.git ref: main path: packages/chat_bottom_container - image_picker: ^1.1.2 - intl: ^0.20.2 - archive: ^4.0.0 - flutter_svg: ^2.0.14 - image_cropper: ^12.0.0 - #解压直播消息 - brotli: ^0.6.0 + collection: ^1.19.1 + connectivity_plus: ^7.1.1 + cookie_jar: ^4.0.8 + crypto: ^3.0.6 + device_info_plus: ^13.1.0 + dio: ^5.9.1 + dio_http2_adapter: ^2.5.3 + dynamic_color: ^1.8.1 + easy_debounce: ^2.0.3 + encrypt: ^5.0.3 expandable: ^5.0.1 - flex_seed_scheme: ^4.0.1 - live_photo_maker: ^0.0.6 - fl_chart: ^1.0.0 - synchronized: ^3.3.0 - # document_file_save_plus: ^2.0.0 - # webdav_client: ^1.2.2 - webdav_client: + extended_nested_scroll_view: git: - url: https://github.com/wgh136/webdav_client.git + url: https://github.com/bggRGjQaUbCoE/extended_nested_scroll_view.git + ref: mod + file_picker: ^12.0.0-beta.1 + fixnum: ^1.1.1 + flex_seed_scheme: ^4.0.1 + floating: + git: + url: https://github.com/bggRGjQaUbCoE/floating.git + ref: version-3 + flutter_cache_manager: ^3.4.1 + flutter_html: ^3.0.0-beta.2 + flutter_inappwebview: ^6.1.5 + flutter_smart_dialog: + git: + url: https://github.com/bggRGjQaUbCoE/flutter_smart_dialog.git ref: main - re_highlight: ^0.0.3 flutter_sortable_wrap: git: url: https://github.com/bggRGjQaUbCoE/flutter_sortable_wrap.git ref: master + flutter_svg: ^2.0.14 + flutter_volume_controller: ^1.3.3 + font_awesome_flutter: 10.9.0 + get: + git: + url: https://github.com/bggRGjQaUbCoE/getx.git + ref: dev + hive_ce: ^2.19.3 + html: ^0.15.4 + http2: ^2.3.1 + image_cropper: ^12.0.0 + image_picker: ^1.1.2 + intl: ^0.20.2 + json_annotation: ^4.11.0 + live_photo_maker: ^0.0.6 + logger: ^2.5.0 + material_color_utilities: ^0.13.0 + material_design_icons_flutter: + git: + url: https://github.com/bggRGjQaUbCoE/material_design_icons_flutter.git + ref: const + material_new_shapes: ^1.0.0 + media_kit: 1.1.11 + media_kit_libs_video: 1.0.5 + media_kit_video: + git: + url: https://github.com/bggRGjQaUbCoE/media-kit.git + path: media_kit_video + ref: version_1.2.5 + mime: ^2.0.0 + native_device_orientation: + git: + url: https://github.com/bggRGjQaUbCoE/flutter_native_device_orientation.git + ref: master + package_info_plus: ^10.1.0 + path: ^1.9.1 + path_provider: ^2.1.5 + permission_handler_android: ^13.0.1 + permission_handler_apple: ^9.4.7 + permission_handler_platform_interface: ^4.3.0 + pretty_qr_code: ^3.3.0 + protobuf: ^6.0.0 + re_highlight: ^0.0.3 + saver_gallery: ^4.1.0 + screen_brightness_platform_interface: ^2.1.0 + screen_retriever: ^0.2.0 + share_plus: ^13.1.0 + stream_transform: ^2.1.1 + super_sliver_list: + git: + url: https://github.com/bggRGjQaUbCoE/super_sliver_list.git + ref: mod + synchronized: ^3.3.0 + tray_manager: ^0.5.1 + url_launcher: ^6.3.1 + uuid: ^4.5.1 + vector_math: ^2.2.0 + wakelock_plus: ^1.2.8 + waterfall_flow: ^3.1.0 web_socket_channel: ^3.0.3 - # image: ^4.7.1 - # window_manager: ^0.5.1 window_manager: git: url: https://github.com/bggRGjQaUbCoE/window_manager.git path: packages/window_manager ref: main - tray_manager: ^0.5.1 - file_picker: ^12.0.0-beta.1 - super_sliver_list: - git: - url: https://github.com/bggRGjQaUbCoE/super_sliver_list.git - ref: mod - dlna_dart: ^0.1.0 - battery_plus: ^7.0.0 - material_new_shapes: ^1.0.0 - - vector_math: any - fixnum: any - json_annotation: any - stream_transform: any - screen_brightness_platform_interface: any - mime: any - path: any - collection: any - material_color_utilities: any - flutter_cache_manager: any - http2: any - screen_retriever: any - characters: any dependency_overrides: - # screen_brightness: ^2.1. - screen_brightness_ios: ^2.1.2 - screen_brightness_android: - git: - url: https://github.com/bggRGjQaUbCoE/screen_brightness.git - path: screen_brightness_android - ref: dev - screen_brightness_platform_interface: - git: - url: https://github.com/bggRGjQaUbCoE/screen_brightness.git - path: screen_brightness_platform_interface - ref: dev - path: ^1.9.1 - mime: ^2.0.0 - rxdart: ^0.28.0 + font_awesome_flutter: 10.9.0 media_kit: git: url: https://github.com/My-Responsitories/media-kit.git path: media_kit ref: version_1.2.5 - media_kit_video: - git: - url: https://github.com/My-Responsitories/media-kit.git - path: media_kit_video - ref: version_1.2.5 - media_kit_libs_video: - git: - url: https://github.com/My-Responsitories/media-kit.git - path: libs/universal/media_kit_libs_video - ref: version_1.2.5 - media_kit_native_event_loop: - git: - url: https://github.com/My-Responsitories/media-kit.git - path: media_kit_native_event_loop - ref: version_1.2.5 media_kit_libs_android_video: git: url: https://github.com/My-Responsitories/media-kit.git path: libs/android/media_kit_libs_android_video ref: version_1.2.5 - media_kit_libs_windows_video: - git: - url: https://github.com/My-Responsitories/media-kit.git - path: libs/windows/media_kit_libs_windows_video - ref: version_1.2.5 media_kit_libs_ios_video: git: url: https://github.com/bggRGjQaUbCoE/media-kit.git path: libs/ios/media_kit_libs_ios_video ref: dev - font_awesome_flutter: 10.9.0 + media_kit_libs_video: + git: + url: https://github.com/My-Responsitories/media-kit.git + path: libs/universal/media_kit_libs_video + ref: version_1.2.5 + media_kit_libs_windows_video: + git: + url: https://github.com/My-Responsitories/media-kit.git + path: libs/windows/media_kit_libs_windows_video + ref: version_1.2.5 + media_kit_native_event_loop: + git: + url: https://github.com/My-Responsitories/media-kit.git + path: media_kit_native_event_loop + ref: version_1.2.5 + media_kit_video: + git: + url: https://github.com/My-Responsitories/media-kit.git + path: media_kit_video + ref: version_1.2.5 + mime: ^2.0.0 + path: ^1.9.1 + rxdart: ^0.28.0 + screen_brightness_android: + git: + url: https://github.com/bggRGjQaUbCoE/screen_brightness.git + path: screen_brightness_android + ref: dev + screen_brightness_ios: ^2.1.2 + screen_brightness_platform_interface: + git: + url: https://github.com/bggRGjQaUbCoE/screen_brightness.git + path: screen_brightness_platform_interface + ref: dev dev_dependencies: flutter_test: sdk: flutter - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^6.0.0 - flutter_launcher_icons: ^0.14.4 - # hive_generator: ^2.0.1 build_runner: ^2.10.3 + flutter_launcher_icons: ^0.14.4 + flutter_lints: ^6.0.0 flutter_native_splash: ^2.4.6 flutter_launcher_icons: @@ -338,40 +235,21 @@ flutter_native_splash: image: assets/images/logo/logo_2.png image_dark: assets/images/logo/logo_2.png -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: assets: - path: assets/images/ - path: assets/images/lv/ - path: assets/images/logo/ - path: assets/images/logo/ico/ - platforms: [ windows ] + platforms: [windows] - path: assets/images/logo/desktop/ - platforms: [ linux, macos ] + platforms: [linux, macos] - path: assets/images/live/ - path: assets/images/video/ - path: assets/images/paycoins/ - - path: assets/shaders/ - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: fonts: - family: digital_id_num fonts: @@ -379,12 +257,3 @@ flutter: - family: custom_icon fonts: - asset: assets/fonts/custom_icon.ttf - # - family: Jura-Bold - # fonts: - # - asset: assets/fonts/Jura-Bold.ttf - # - family: HarmonyOS - # fonts: - # - asset: assets/fonts/HarmonyOS_Sans_SC_Regular.ttf - - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages