Skip to content

Grafik tasarım, dijital sanat ve etkileşimli gerçek zamanlı hareketli grafikler için açık kaynaklı, kapsamlı 2B içerik oluşturma araç paketi; düğüm tabanlı prosedürel düzenleme özelliğine sahiptir.

License

Notifications You must be signed in to change notification settings

truncgil/draw

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,470 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trunçgil Draw

Trunçgil Draw, vektör ve raster grafik düzenleme yeteneklerini prosedürel içerik oluşturma ile birleştiren, açık kaynaklı ve güçlü bir grafik motorudur. Bu proje, sanatçılar ve geliştiriciler için esnek, düğüm tabanlı (node-based) bir iş akışı sunar.

Trunçgil Draw, Rust performansını WebAssembly (WASM) teknolojisiyle tarayıcıya taşır ve Svelte ile geliştirilmiş modern bir kullanıcı arayüzü sunar.

🚀 Gereksinimler

Projeyi geliştirmek ve çalıştırmak için aşağıdaki araçların sisteminizde kurulu olması gerekmektedir:

  1. Rust: Sistemin programlama dili (Backend ve Core Logic).
  2. Node.js: Frontend bağımlılıkları ve geliştirme sunucusu için (LTS sürümü önerilir).
  3. wasm-pack: Rust kodunu WebAssembly'e derlemek için gereklidir.
    • Kurulum: cargo install wasm-pack
  4. Geliştirme Araçları (Linux için):
    • build-essential, libssl-dev, pkg-config gibi temel paketler.

🛠️ Kurulum ve Çalıştırma

Aşağıdaki adımları takiperek geliştirme ortamınızı kurabilirsiniz.

1. Hazırlık

Gerekli sistem paketlerini ve araçları yüklediğinizden emin olun.

# Ubuntu/Debian için örnek hazırlık
sudo apt update
sudo apt install build-essential libssl-dev pkg-config

2. Bağımlılıkların Yüklenmesi

Frontend klasörüne giderek Node.js bağımlılıklarını yükleyin.

cd frontend
npm install

3. Uygulamayı Çalıştırma (Web)

Geliştirme sunucusunu başlatın. Bu komut hem Rust kodunu WASM'a derleyecek hem de yerel bir web sunucusu başlatacaktır.

# Gerekli Rust araçlarını yükleyin (eğer yüklü değilse)
cargo install cargo-watch

# frontend klasörü içerisindeyken
npm start

Sunucu başladığında tarayıcınızda http://localhost:5173 (varsayılan Vite portu) üzerinden uygulamaya erişebilirsiniz.

📂 Proje Yapısı ve Dosya Sistemi

Proje, genişletilebilir ve modüler bir mimari ile tasarlanmıştır. Aşağıda projenin dosya yapısı görselleştirilmiştir:

truncgil-draw/
├── editor/                  # 🧠 Çekirdek Uygulama (Rust - İş Mantığı)
│   ├── src/                 # Ana uygulama mantığı
│   ├── messages/            # Mesaj tabanlı mimari (Event Bus)
│   └── dispatcher/          # Mesaj dağıtıcıları
├── frontend/                # 🎨 Kullanıcı Arayüzü (Svelte + TypeScript)
│   ├── src/                 # UI bileşenleri
│   ├── wasm/                # WebAssembly köprüsü (Rust <-> JS)
│   └── assets/              # Görseller ve ikonlar
├── node-graph/              # 🕸️ Grafik Motoru
│   ├── nodes/               # Efekt ve işlem düğümleri
│   └── graph-craft/         # Grafik derleme mantığı
├── libraries/               # 📚 Yardımcı Rust Kütüphaneleri
└── desktop/                 # 🖥️ Masaüstü Uygulaması (Platform Wrapper)

Proje, modern bir "monorepo" yapısına sahiptir ve Rust (Cargo) workspace çalışma alanı olarak düzenlenmiştir. Aşağıda temel dizinler ve işlevleri detaylandırılmıştır:

🔹 1. Çekirdek Uygulama (editor/)

Uygulamanın beyni burasıdır. Tüm iş mantığı, durum yönetimi ve araçlar burada Rust ile geliştirilmiştir.

  • src/lib.rs: Editör kütüphanesinin giriş noktası.
  • src/messages/: Uygulamanın mesaj tabanlı mimarisini (Message Bus) barındırır. UI olayları ve dahili işlemler burada mesajlar aracılığıyla yönetilir.
  • src/dispatcher/: Mesajları ilgili işleyicilere (handler) dağıtan mekanizma.
  • src/application.rs: Uygulama durumunu tutan ana yapı.

🔹 2. Kullanıcı Arayüzü (frontend/)

Tarayıcıda çalışan Web arayüzüdür. Svelte framework'ü ve TypeScript kullanılır.

  • src/: Svelte bileşenleri ve TypeScript kodları.
  • src/components/: Paneller, butonlar, katman listesi gibi UI bileşenleri.
  • wasm/: Rust kodunun (editor/) WebAssembly olarak paketlendiği ve JS ile köprü kurduğu katman.
  • assets/: İkonlar ve statik dosyalar.
  • vite.config.ts: Frontend derleme ve sunucu ayarları (Vite).

🔹 3. Grafik Motoru (node-graph/)

Trunçgil Draw'un en güçlü yanı olan düğüm tabanlı (node-based) görüntü işleme motorudur.

  • graph-craft/: Grafiğin derlenmesi ve yapılandırılması ile ilgili mantık.
  • graphene-cli/: Grafik motorunu komut satırından test etmek için kullanılan araç.
  • nodes/: Her biri belirli bir işlemi (bulanıklaştırma, karıştırma, dönüştürme vb.) yapan düğüm uygulamaları.
  • interpreted-executor/: Grafiği çalışma zamanında yorumlayıp çalıştıran yürütücü.

🔹 4. Yardımcı Kütüphaneler (libraries/)

Proje genelinde tekrar kullanılan özelleştirilmiş Rust kütüphaneleri.

  • dyn-any/: Dinamik tipleme ve veri taşıma yardımcıları.
  • rawkit/: RAW fotoğraf işleme yetenekleri.
  • math-parser/: Matematiksel ifadeleri ayrıştırmak için kullanılan modül.

🔹 5. Masaüstü Uygulaması (desktop/)

Web uygulamasını yerel bir masaüstü uygulamasına (Windows, macOS, Linux) dönüştüren sarmalayıcı (wrapper) katmanıdır.

  • Tauri/Wry benzeri bir yapı kullanarak web içeriğini yerel pencerede gösterir.

🔹 6. Web Sitesi (website/)

Projenin tanıtım ve dokümantasyon web sitesidir. Genellikle Hugo gibi statik site oluşturucularla çalışır.

🤝 Katkıda Bulunma Rehberi

  1. Kod Standartları: Rust için cargo fmt ve clippy, Frontend için eslint ve prettier kullanın.
  2. Mesaj Mimarisi: Yeni bir özellik eklerken, editor/src/messages altındaki mesaj hiyerarşisine uygun hareket edin.
  3. Node Sistemi: Yeni bir görüntü efekti ekleyecekseniz, bunu node-graph/nodes altında yeni bir node olarak tanımlayın.

Trunçgil Teknoloji tarafından geliştirilmektedir.

About

Grafik tasarım, dijital sanat ve etkileşimli gerçek zamanlı hareketli grafikler için açık kaynaklı, kapsamlı 2B içerik oluşturma araç paketi; düğüm tabanlı prosedürel düzenleme özelliğine sahiptir.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 85.7%
  • Svelte 7.7%
  • TypeScript 4.0%
  • SCSS 1.0%
  • JavaScript 0.9%
  • HTML 0.4%
  • Other 0.3%