#rust#2d_graphics#art#compositor#design#graphic_design#graphics_editor#image_generation#image_manipulation#image_processing#node_editor#node_graph#photo_editing#photo_editor#procedural#procedural_art#procedural_drawing#svg_editor#vector_editor
Graphite is a free, open-source 2D graphics editor that combines vector and raster tools with a unique hybrid workflow using layers and nodes. It lets you create detailed vector art and designs with nondestructive editing, meaning you can change your work anytime without losing quality. The node-based system offers powerful, flexible control like visual programming, while the layer system keeps things simple and familiar. This makes it easy to create complex graphics, animations, and effects all in one tool. Graphite is still evolving but aims to be a versatile, all-in-one creative platform accessible to everyone, helping you unleash your artistic potential efficiently[1][2][4].
https://github.com/GraphiteEditor/Graphite
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js