]> code.bitgloo.com Git - clyne/arabtype.git/commitdiff
cleanup
authorElOraiby <wael.eloraiby@gmail.com>
Sat, 30 May 2015 19:21:07 +0000 (15:21 -0400)
committerElOraiby <wael.eloraiby@gmail.com>
Sat, 30 May 2015 19:21:07 +0000 (15:21 -0400)
arabtype.c
mainwindow.cpp

index 0136bc570a9c3c6581f948b40ca5ab1061c0264a..89163a1dd34f243409099a4c6b60cae11f97f311 100644 (file)
@@ -16,6 +16,8 @@
 #define INITIAL                2
 #define MEDIAL         3
 
+#define UNICODE_LAM    0x644
+
 //
 // 0: isolated form
 // 1: ending form
@@ -73,10 +75,10 @@ static all_form_t arabic_forms_b[]  = {
 
 
 static inline bool is_arabic_letter(uint32_t cp)               { return ( cp >= ARABIC_LETTER_START && cp <=  ARABIC_LETTER_END ); }
-static inline bool is_lam_alef(uint32_t cp, uint32_t next)     { return cp == 0x644 &&
+static inline bool is_lam_alef(uint32_t cp, uint32_t next)     { return cp == UNICODE_LAM &&
                                                                         is_arabic_letter(next) &&
                                                                         arabic_forms_b[next - ARABIC_LETTER_START][1][INITIAL] != 0; }
-static inline bool is_alef_prev_lam(uint32_t prev, uint32_t cp)        { return prev == 0x644 &&
+static inline bool is_alef_prev_lam(uint32_t prev, uint32_t cp)        { return prev == UNICODE_LAM &&
                                                                         is_arabic_letter(cp) &&
                                                                         arabic_forms_b[cp - ARABIC_LETTER_START][1][INITIAL] != 0; }
 static inline bool is_linking_type(uint32_t cp) {
index 60d9d511ac3987ecf73ca8e093f886602a4112b6..015bcb73a9d8ed460522c82d8a35756e5ab3a126 100644 (file)
@@ -51,6 +51,10 @@ MainWindow::MainWindow(QWidget *parent) :
 {
        ui__->setupUi(this);
 
+       int     width   = 480;
+       int     height  = 320;
+       int     font_size       = 24;
+
        std::ifstream   ifs("arabic_test.txt");
        assert( ifs.is_open() );
        std::vector<uchar>      arabic_string;
@@ -86,7 +90,7 @@ MainWindow::MainWindow(QWidget *parent) :
        assert( !error && "unable to load font file" );
 
        // set font size
-       error           = FT_Set_Pixel_Sizes(face, 0, 24);
+       error           = FT_Set_Pixel_Sizes(face, 0, font_size);
        assert( !error && "Error setting font size" );
 
        // setup glyph
@@ -97,18 +101,18 @@ MainWindow::MainWindow(QWidget *parent) :
        FT_Render_Mode  render_flags    = FT_RENDER_MODE_NORMAL;
 
 
-       data__  = new uchar[1024 * 1024 * 4];
-       memset(data__, 0, 1024 * 1024 * 4);
-       int     col     = 1024 - 1;
-       int     line    = 100;
-       QImage  img(data__, 1024, 1024, QImage::Format_RGB32);
+       data__  = new uchar[width * height * 4];
+       memset(data__, 0, width * height * 4);
+       int     col     = width - font_size;
+       int     line    = font_size;
+       QImage  img(data__, width, height, QImage::Format_RGB32);
        // render the arabic glyphs
        for( size_t idx = 0; idx < arabic_cp.size(); ++idx )
        {
                uint ch = get_arabic_form(arabic_cp, idx);
                if( ch == 0xA ) {
-                       line    += 30;
-                       col     = 1024 - 1;
+                       line    += font_size;
+                       col     = width - font_size;
                        continue;
                }
 
@@ -137,17 +141,16 @@ MainWindow::MainWindow(QWidget *parent) :
                FT_BBox box;
                FT_Glyph_Get_CBox(glyph, FT_GLYPH_BBOX_TRUNCATE, &box);
 
-               int     temp_col        = col - (slot->advance.x >> 6);//slot->bitmap.width;
+               int     temp_col        = col - (slot->advance.x >> 6);
 
                for( int y = 0; y < slot->bitmap.rows; y++ )
                {
                        for( int x = 0; x < slot->bitmap.width; x++ )
                        {
                                uchar   co      = slot->bitmap.buffer[x + y * slot->bitmap.pitch];
-                               if( co && x + temp_col < 1024 && x + temp_col >= 0 )
+                               if( co && x + temp_col < width && x + temp_col >= 0 )
                                {
                                        uint rgb = img.pixel(x + temp_col + slot->bitmap_left, y - slot->bitmap_top + line);
-
                                        img.setPixel(x + temp_col + slot->bitmap_left, y - slot->bitmap_top + line, rgb | qRgb(co, co, co));
                                }
 
@@ -164,9 +167,6 @@ MainWindow::MainWindow(QWidget *parent) :
        }
 
 
-       for( int i = 0; i < 1024; ++i )
-               //data__[i + 128 * 512 * 4 + 1] = 0xFF;
-               img.setPixel(i, 128, 0xFF000000);
        QPixmap pixmap = QPixmap::fromImage(img);
        ui__->label->setPixmap(pixmap);