Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/enterminus/src/bin


Modified Files:
        handlers.c main.c term.c term.h ui.c 


Log Message:
1- added stepped resizing.
2- cleaned up bg code.
3- we have a segfault when we resize and try to use the new area (height wise
only)

===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/handlers.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- handlers.c  28 Jan 2005 00:15:18 -0000      1.2
+++ handlers.c  7 Feb 2005 03:06:18 -0000       1.3
@@ -449,3 +449,42 @@
 
    }
 }
+
+struct winsize *get_font_dim(Term *term)
+{
+   static struct winsize w;
+   w.ws_row = term->tcanvas->rows;
+   w.ws_col = term->tcanvas->cols;
+   w.ws_xpixel = w.ws_ypixel = 0;
+   return &w;
+}
+
+
+void term_cb_resize(Ecore_Evas *ee) {
+   int x, y, w, h, w_char, h_char, num_chars_w, num_chars_h;
+   Term *term;
+   
+   term = (Term*)ecore_evas_data_get(ee, "term");
+   
+   w_char = term_font_get_width(term);
+   h_char = term_font_get_height(term);   
+   
+   num_chars_w = (int)((float)w/(float)w_char);
+   num_chars_h = (int)((float)h/(float)h_char);
+   
+      
+   term->tcanvas->cols = num_chars_w;
+   term->tcanvas->rows = num_chars_h;
+   
+   term->tcanvas->scroll_region_start = 0;
+   term->tcanvas->scroll_region_end = term->tcanvas->rows - 1;      
+   
+   if(ioctl(term->cmd_fd.sys, TIOCSWINSZ, get_font_dim(term)) < 0)
+     {
+       fprintf(stderr, "Couldn't set window size: %m\n");
+       return -1;
+     }
+   
+   term_term_bg_set(term, DATADIR"white.png");
+   
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/main.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- main.c      6 Feb 2005 13:06:16 -0000       1.2
+++ main.c      7 Feb 2005 03:06:18 -0000       1.3
@@ -3,18 +3,15 @@
 int main(int argc, char **argv) {
 
    Ecore_Evas  *ee;     /* ecore_evas */
-   Evas        *evas;   /* evas       */
-//   Evas_Object *ob,*bg; /* background */   
    Term        *term;   /* terminal   */
    
    //term_window_init(ee, evas);
    ee = ecore_evas_software_x11_new(0, 0, 0, 0, 640, 480);
-   evas =  ecore_evas_get(ee);
    ecore_evas_show(ee);
    
-   term = term_new(evas);
+   term = term_new(ee);
    
-   term_term_bg_set(term, DATADIR"white.png", ee);
+   term_term_bg_set(term, DATADIR"white.png");
 
    execute_command(term, argc, argv);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/term.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- term.c      6 Feb 2005 11:57:21 -0000       1.6
+++ term.c      7 Feb 2005 03:06:18 -0000       1.7
@@ -117,7 +117,7 @@
    canvas->canvas_id = 1; /* change later */
    canvas->rows = 24; /* multiply by a number or scrollback */  
    canvas->cols = 80;
-   canvas->scroll_size = 3; /* this means rows * 3 total rows */
+   canvas->scroll_size = 30; /* this means rows * 3 total rows */
    canvas->cur_row = 0;   /* between 0 and rows-1 */
    canvas->cur_col = 0;
    canvas->grid = calloc(canvas->cols * 
@@ -157,7 +157,6 @@
    evas_object_text_font_set(ob, term->font.face, term->font.size);
    evas_object_text_text_set(ob, "W");
    evas_object_geometry_get(ob,&x,&y,&w,&h);
-   w = evas_object_text_horiz_advance_get(ob);
    evas_object_del(ob);
    return w;
 }
@@ -173,17 +172,17 @@
    evas_object_text_font_set(ob, term->font.face, term->font.size);
    evas_object_text_text_set(ob, "W");
    evas_object_geometry_get(ob,&x,&y,&w,&h);
-   evas_object_geometry_get(ob,&x,&y,&w,&h);
-   h = evas_object_text_vert_advance_get(ob);
    evas_object_del(ob);
-   return h+10;
+   return h;
 }
 
-Term *term_new(Evas *evas) {
+Term *term_new(Ecore_Evas *ee) {
    int i, j;
    Term_EGlyph *gl;
-   Term *term = malloc(sizeof(Term));
+   Term *term = malloc(sizeof(Term));   
    term->term_id = 0;
+   term->ee = ee;
+   term->evas = ecore_evas_get(ee);   
    term->tcanvas = term_tcanvas_new();
    term->grid = calloc(term->tcanvas->cols * term->tcanvas->rows,
                       sizeof(Term_EGlyph));
@@ -191,19 +190,28 @@
    for(i = 0; 
        i < term->tcanvas->cols * term->tcanvas->rows; i++) {
       gl = &term->grid[i];
-      gl->text = evas_object_text_add(evas);      
+      gl->text = evas_object_text_add(term->evas);      
    }   
    
    term->bg = NULL;
    strcpy(term->font.path, DATADIR);
    strcpy(term->font.face, "VeraMono");
    term->font.size = 10;
-   term->evas = evas;
    term->data_ptr = 0;   
    term->font.width = term_font_get_width(term);
    term->font.height = term_font_get_height(term);
    evas_font_path_append(term->evas, term->font.path);
-   ecore_timer_add(0.1, term_timers, term);
-
+   ecore_timer_add(0.1, term_timers, term);   
+   
+   
ecore_x_window_prop_step_size_set(ecore_evas_software_x11_window_get(term->ee),
+                                     term_font_get_width(term),
+                                     term_font_get_height(term));
+   
+   ecore_evas_resize(term->ee, 
+                    term->tcanvas->cols*term_font_get_width(term), 
+                    term->tcanvas->rows*term_font_get_height(term));
+   
+   ecore_evas_data_set(term->ee, "term", term);
+   
    return term;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/term.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- term.h      24 Jan 2005 10:57:27 -0000      1.1
+++ term.h      7 Feb 2005 03:06:18 -0000       1.2
@@ -92,6 +92,7 @@
 
 struct _Term {
    int           term_id;
+   Ecore_Evas   *ee;
    Term_TCanvas *tcanvas;
    Term_EGlyph  *grid;
    Evas_Object  *bg;
@@ -104,11 +105,12 @@
    int           data_len;  
    int           font_width;
    int           font_height;
+   
 };
 
 typedef struct _Term Term;
 
-Term          *term_new(Evas *evas);
+Term          *term_new(Ecore_Evas *ee);
 Term_TCanvas  *term_tcanvas_new();
 int            term_tcanvas_data(void *data);
 void           term_tcanvas_glyph_push(Term *term, char c);
@@ -121,6 +123,7 @@
 int            term_handler_escape_seq(Term *term);
 
 void           term_cb_key_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+void           term_cb_resize(Ecore_Evas *ee);
 
 static void    strupper(char *str);
 int            term_timers(void *data);
@@ -132,7 +135,7 @@
 int            execute_command(Term *term, int argc, const char **argv);
 
 void           term_window_init(Ecore_Evas *ee, Evas *evas);
-void           term_term_bg_set(Term *term, char *img, Ecore_Evas *ee);
+void           term_term_bg_set(Term *term, char *img);
 void           term_redraw(void *data);
 
 int            term_cursor_move_up(Term *term, int n);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/ui.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ui.c        6 Feb 2005 11:57:21 -0000       1.7
+++ ui.c        7 Feb 2005 03:06:18 -0000       1.8
@@ -8,9 +8,10 @@
 #define COLOR4 20, 20, 200
 #define COLOR5 46, 75, 100
 #define COLOR6 98, 175, 200
-#define COLOR7 200, 200, 200 
+#define COLOR7 50, 50, 50 
 #define COLOR8 231, 105, 50
 
+/* this isnt used right now */
 void term_window_init(Ecore_Evas *ee, Evas *evas) {
 
    ee = ecore_evas_software_x11_new(0, 0, 0, 0, 640, 480);
@@ -18,26 +19,25 @@
    ecore_evas_show(ee);
 }
 
-void term_term_bg_set(Term *term, char *img, Ecore_Evas *ee) {
-   int w, h;
-   Evas_Object *bg;
+void term_term_bg_set(Term *term, char *img) {
+   int x, y, w, h;
 
-   w = term->tcanvas->cols*term_font_get_width(term);
-   h = term->tcanvas->rows*term_font_get_height(term);
+   ecore_evas_geometry_get(term->ee, &x, &y, &w, &h);
+      
+   if(!term->bg) {
+      term->bg = evas_object_image_add(term->evas);
+      evas_object_event_callback_add(term->bg, EVAS_CALLBACK_KEY_DOWN, 
+                                    term_cb_key_down,
+                                    term);
+      ecore_evas_callback_resize_set(term->ee, term_cb_resize);
+   }
    
-   ecore_evas_resize(ee, w, h);
-
-   bg = evas_object_image_add(term->evas);
-   evas_object_resize(bg, w, h);
-   evas_object_image_file_set(bg, img, NULL);
-   evas_object_layer_set(bg, 0);
-   //evas_object_image_size_get(ob, &w, &h);
-   evas_object_image_fill_set(bg, 0, 0, w, h);
-   evas_object_focus_set(bg,1);
-   evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, term_cb_key_down,
-                                 term);
-   //evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_UP, cb_key_up, term);
-   evas_object_show(bg);
+   evas_object_resize(term->bg, w, h);
+   evas_object_image_file_set(term->bg, img, NULL);
+   evas_object_layer_set(term->bg, 0);
+   evas_object_image_fill_set(term->bg, 0, 0, w, h);
+   evas_object_focus_set(term->bg,1);   
+   evas_object_show(term->bg);
 
 }
 
@@ -252,7 +252,7 @@
       printf("End gone past max scroll buffer, wrapping\n");                  
       term->tcanvas->scroll_region_end = rows - (((term->tcanvas->rows-1) * 
        term->tcanvas->scroll_size) -  term->tcanvas->scroll_region_end);
-      /* we going back to the top, clear the rows we want to overwrite */
+      /* we're going back to the top, clear the rows we want to overwrite */
       for(i = 0; i <= term->tcanvas->scroll_region_end; i++) {
         term->tcanvas->changed_rows[i] = 1;
         for(j = 0; j <= term->tcanvas->cols; j++) {
@@ -279,8 +279,16 @@
 
    if(term->tcanvas->scroll_region_start < term->tcanvas->scroll_region_end)
      i2 = term->tcanvas->scroll_region_end;
-   else
-     i2 = (term->tcanvas->rows - 1) * term->tcanvas->scroll_size;
+   else {
+      for(i = 0; i <= term->tcanvas->scroll_region_end; i++) {
+        term->tcanvas->changed_rows[i] = 1;
+        for(j = 0; j <= term->tcanvas->cols; j++) {
+           gl = & term->tcanvas->grid[j + (term->tcanvas->cols * i)];
+           gl->changed = 1;
+        }       
+      }
+      i2 = (term->tcanvas->rows - 1) * term->tcanvas->scroll_size;
+   }
    
    for(i = term->tcanvas->scroll_region_start;
        i <= i2;
@@ -296,7 +304,7 @@
    
    
    if(term->tcanvas->scroll_in_region) {
-      
+      printf("SCROLL IN REGION!!!!!!!!!!!!!!!!!!!!\n");
    } else {
       
    }




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to