4/15/2013

Kırpma aracının ilk parçaları

Vize haftasının bitmesinin ardından projeye kaldığım yerden yoğun bir tempoyla devam ediyorum. İlk haftamı Evernote API'lerini ve bunları projeye nasıl uygulayacağımı araştırarak geçirmiştim, bu haftaki uğraşım ise projenin diğer kısmı olan kırpma aracı oldu. Öncelikle kırpma aracının görev tanımını yapmakta fayda görüyorum, kısaca bu araçtan beklenenleri şöyle listeleyebiliriz;
  • Ekran görüntüsü yakalayabilmeli
  • Ekrandaki aktif pencerenin görüntüsünü yakalayabilmeli
  • İmleç ile seçilen bir alanın görüntüsünü yakalayabilmeli
  • Pano'dan görüntü alabilmeli
  • Kısayol tuşları ile bu işlemleri daha hızlı yapabilmeli
Tüm bu görüntü yakalama işlerinde bize yardımcı olacak bileşen ise Gdk içerisinde yer alan Pixbuf, bu nesne istediğimiz boyutta resimler oluşturmak, onları bellekte tutmak, üzerinde işlem yapmak ve diske kaydetmek gibi amaçlarla kullanılıyor, aynı zamanda bir pencerenin istenilen koordinatlarından resim oluşturabilme gibi hayatı kolaylaştıran bir özelliği de var. Bu noktada karşımıza root window kavramı çıkıyor.

X pencere sisteminde, her pencere içerisinde dinamik olarak yeni pencereler oluşturulabilir, tüm bu pencereleri kapsayan pencereye ise root window denir. Masaüstü arkaplanı değiştirdiğinizde aslında yaptığınız iş bu root window'u boyamaktır, aynı şekilde masaüstündeki simgeleriniz, panelleriniz, açtığınız pencereler bu root window üzerine çizilmektedir. Yani ekran görüntüsünü almak için tek yapmamız gereken Pixbuf yardımıyla root window'dan bir imaj oluşturmak kadar basit, C++ ile yazdığım örnek koda buradan ulaşabilirsiniz.

İmleç ile bir alan seçtirmek için ise aldığımız bu ekran görüntüsünü, ekran ile aynı boyutta yeni bir pencere içerisinde açıp kullanıcının alan seçmesini sağlayacak bir arayüze ihtiyaç var, önümüzdeki günlerde bu arayüzü hazırlamayı düşünüyorum. 

Son olarak kullanıcının kısayol tuşlarıyla tüm bu işlemleri başlatabilmesi için libkeybinder kullanmayı düşünüyorum. Bir önceki projemde kullanıcı tarafından belirlenen bir tuşla pencerenin açılıp kapanması için bu kütüphaneyi kullanmıştım, fazlasıyla baş ağrıtan bir deneyim olmuştu, sonraki haftalarda bu kütüphaneyi kullanırken karşılaştığım sorunlardan ve çalışma mantığından bahsetmeyi düşünüyorum.

0 yorum:

Yorum Gönder