Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/enterminus/src/bin


Modified Files:
        main.c pty.c smart.c term.h ui.c 


Log Message:
some cleanups and comments

===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/main.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- main.c      8 Feb 2005 11:45:58 -0000       1.4
+++ main.c      11 Feb 2005 13:07:55 -0000      1.5
@@ -3,7 +3,7 @@
 int main(int argc, char **argv) {
 
    Ecore_Evas  *ee;     /* ecore_evas */
-   Evas        *evas;   /* evas */
+   Evas        *evas;   /* evas       */
    Evas_Object *term;   /* terminal   */
       
    ee = ecore_evas_software_x11_new(0, 0, 0, 0, 0, 0);
@@ -11,8 +11,7 @@
    evas = ecore_evas_get(ee);
       
    term = term_new(evas);
-   evas_object_show(term);
-   //evas_object_resize(term, 640, 480);
+   evas_object_show(term);   
    
    enterm_init(ee, term);   
    
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/pty.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- pty.c       8 Feb 2005 11:45:58 -0000       1.3
+++ pty.c       11 Feb 2005 13:07:56 -0000      1.4
@@ -1,5 +1,14 @@
 #include "term.h"
 
+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;
+}
+
 int get_pty(Term *term)
 {
    /* do we need this here? */
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/smart.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- smart.c     8 Feb 2005 11:45:58 -0000       1.1
+++ smart.c     11 Feb 2005 13:07:56 -0000      1.2
@@ -2,24 +2,16 @@
 
 /* Evas Smart Object API Wrapping methods */
 
-/* move this elsewhere */
-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;
-}
-
 static Evas_Smart *smart;
 
+/* instantiate a new terminal */
 Evas_Object *term_new(Evas *evas) {
    Evas_Object *term;
    term = evas_object_smart_add(evas, term_smart_get());
    return term;
 }
 
+/* knit smart object with its functions */
 Evas_Smart *term_smart_get() {   
    if(smart) return smart;
    smart = evas_smart_new ("term",
@@ -42,6 +34,7 @@
    return smart;
 }
 
+/* add the term object */
 void term_smart_add(Evas_Object *o) {   
    Term *data;
    
@@ -50,6 +43,7 @@
    evas_object_smart_data_set(o, data);
 }
 
+/* delete the term object */
 void term_smart_del(Evas_Object *o) {
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/term.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- term.h      8 Feb 2005 11:45:58 -0000       1.3
+++ term.h      11 Feb 2005 13:07:56 -0000      1.4
@@ -22,6 +22,13 @@
 #define NPAR 16
 #define DATADIR PACKAGE_DATA_DIR"/"
 
+#ifdef DEBUG
+#define DPRINT(stuff) fprintf stuff;
+#else
+#define DPRINT(stuff)
+#endif
+
+
 enum Term_Key_Modifiers
 {
      TERM_KEY_MODIFIER_SHIFT = 0x1,
@@ -112,65 +119,66 @@
 
 typedef struct _Term Term;
 
-Term          *term_init(Evas_Object *o);
-Term_TCanvas  *term_tcanvas_new();
-int            term_tcanvas_data(void *data);
-void           term_tcanvas_glyph_push(Term *term, char c);
-void           term_tcanvas_fg_color_set(Term *term, int c);
-void           term_tcanvas_bg_color_set(Term *term, int c);
-int            term_font_get_width(Term *term);
-int            term_font_get_height(Term *term);
-
-void           term_handler_xterm_seq(int op, Term *term);
-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);
-
-int            get_pty(Term *term);
-int            get_tty(Term *term);
-void           sigchld_handler(int a);
-struct passwd *find_user(void);
-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);
-void           term_redraw(void *data);
-
-int            term_cursor_move_up(Term *term, int n);
-int            term_cursor_move_down(Term *term, int n);
-int            term_cursor_move_left(Term *term, int n);
-int            term_cursor_move_right(Term *term, int n);
-int            term_cursor_move_col(Term *term, int n);
-int            term_cursor_move_row(Term *term, int n);
-void           term_cursor_goto(Term *term, int x, int y);
-void           term_cursor_rego(Term *term);
-void           term_delete_rows(Term *term, int start, int n);
-void           term_add_rows(Term *term, int pos, int n);
-void           term_tcanvas_save(Term *term);
-void           term_tcanvas_restore(Term *term);
-void           term_clear_area(Term *term, int x1, int y1, int x2, int y2);
-void           term_scroll_up(Term *term, int rows);
-void           term_scroll_down(Term *term, int rows);
+Term           *term_init(Evas_Object *o);
+Term_TCanvas   *term_tcanvas_new();
+int             term_tcanvas_data(void *data);
+void            term_tcanvas_glyph_push(Term *term, char c);
+void            term_tcanvas_fg_color_set(Term *term, int c);
+void            term_tcanvas_bg_color_set(Term *term, int c);
+int             term_font_get_width(Term *term);
+int             term_font_get_height(Term *term);
+
+void            term_handler_xterm_seq(int op, Term *term);
+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);
+
+struct winsize *get_font_dim(Term *term);
+int             get_pty(Term *term);
+int             get_tty(Term *term);
+void            sigchld_handler(int a);
+struct passwd  *find_user(void);
+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);
+void            term_redraw(void *data);
+
+int             term_cursor_move_up(Term *term, int n);
+int             term_cursor_move_down(Term *term, int n);
+int             term_cursor_move_left(Term *term, int n);
+int             term_cursor_move_right(Term *term, int n);
+int             term_cursor_move_col(Term *term, int n);
+int             term_cursor_move_row(Term *term, int n);
+void            term_cursor_goto(Term *term, int x, int y);
+void            term_cursor_rego(Term *term);
+void            term_delete_rows(Term *term, int start, int n);
+void            term_add_rows(Term *term, int pos, int n);
+void            term_tcanvas_save(Term *term);
+void            term_tcanvas_restore(Term *term);
+void            term_clear_area(Term *term, int x1, int y1, int x2, int y2);
+void            term_scroll_up(Term *term, int rows);
+void            term_scroll_down(Term *term, int rows);
    
-void           term_smart_add(Evas_Object *o);
-void           term_smart_del(Evas_Object *o);
-void           term_smart_layer_set(Evas_Object *o, int l);
-void           term_smart_raise(Evas_Object *o);
-void           term_smart_lower(Evas_Object *o);
-void           term_smart_stack_above(Evas_Object *o, Evas_Object *above);
-void           term_smart_stack_below(Evas_Object *o, Evas_Object *below);
-void           term_smart_move(Evas_Object *o, Evas_Coord x, Evas_Coord y);
-void           term_smart_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h);
-void           term_smart_show(Evas_Object *o);
-void           term_smart_hide(Evas_Object *o);
-void           term_smart_color_set(Evas_Object *o, int r, int g, int b, int 
a);
-void           term_smart_clip_set(Evas_Object *o, Evas_Object *clip);
-void           term_smart_clip_unset(Evas_Object *o);
-Evas_Smart    *term_smart_get();
+void            term_smart_add(Evas_Object *o);
+void            term_smart_del(Evas_Object *o);
+void            term_smart_layer_set(Evas_Object *o, int l);
+void            term_smart_raise(Evas_Object *o);
+void            term_smart_lower(Evas_Object *o);
+void            term_smart_stack_above(Evas_Object *o, Evas_Object *above);
+void            term_smart_stack_below(Evas_Object *o, Evas_Object *below);
+void            term_smart_move(Evas_Object *o, Evas_Coord x, Evas_Coord y);
+void            term_smart_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h);
+void            term_smart_show(Evas_Object *o);
+void            term_smart_hide(Evas_Object *o);
+void            term_smart_color_set(Evas_Object *o, int r, int g, int b, int 
a);
+void            term_smart_clip_set(Evas_Object *o, Evas_Object *clip);
+void            term_smart_clip_unset(Evas_Object *o);
+Evas_Smart     *term_smart_get();
 
-void           enterm_init(Ecore_Evas *ee, Evas_Object *term);   
-void           enterm_cb_resize(Ecore_Evas *ee);
+void            enterm_init(Ecore_Evas *ee, Evas_Object *term);   
+void            enterm_cb_resize(Ecore_Evas *ee);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/enterminus/src/bin/ui.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- ui.c        8 Feb 2005 11:45:58 -0000       1.10
+++ ui.c        11 Feb 2005 13:07:56 -0000      1.11
@@ -11,6 +11,11 @@
 #define COLOR7 250, 250, 250
 #define COLOR8 231, 105, 50
 
+/* set the bg */
+/* TODO: This should now be here, what we need to have is a rectangle
+ * that will simply capture keys. This should be set by the application
+ * that uses the smart object
+ */
 void term_term_bg_set(Term *term, char *img) {
 
    if(!term->bg) {
@@ -37,32 +42,42 @@
    Evas_Object *ob;
    Term_EGlyph *gl;
    Term_TGlyph *tgl;   
-      
-   i2 = term->tcanvas->scroll_region_start;
    
+   i2 = term->tcanvas->scroll_region_start;
+
+   /* loop over all rows, see what has changed */
+   /* the general idea is to only inspect as many rows from the tcanvas
+    * as we have in the term->grid. We loop that man times, which is
+    * term->tcanvas->rows times, and look for changed flags in each row.
+    * Since i (0 -> rows) cant be used to subscript the current rows, we
+    * start it from scroll_region_start.
+    */
    for(i = 0; i < term->tcanvas->rows; i++) {
       if(term->tcanvas->changed_rows[i2] != 1) {
+        /* unchanged row, increment i2 and continue */
         i2++;
         continue;
       }
-      /* printf("Rendering c-row %d  g-row %d\n",i2,i); */
+      
+      /* fetch the text glyph */
       for(j = 0; j < term->tcanvas->cols; j++) {
-        tgl = &term->tcanvas->grid[j + 
-                                   (term->tcanvas->cols * 
-                                    (i2)
-                                    )];         
+        tgl = &term->tcanvas->grid[j + (term->tcanvas->cols * i2)];     
         if(tgl->changed != 1) {
+           /* unchanged glyph, continue */
            continue;
         }
+        /* unsure as to why this is here, I dont think we need it */
         if(tgl->c == '\033') {
            printf("Got escape in term_redraw()!\n");
            continue;
         }
         
+        /* check if start pointer has gone past virtual scroll buffer */
+        /* when we overflow, we store row numbers in ig */
         if(i + term->tcanvas->scroll_region_start <= (term->tcanvas->rows - 
1)*term->tcanvas->scroll_size) {
            gl = &term->grid[j + (term->tcanvas->cols * i)];
         } else {
-           printf("Overflowing: [cur_row=%d] [start: %d, end: %d] 
[ig=%d]\n",term->tcanvas->cur_row,term->tcanvas->scroll_region_start,term->tcanvas->scroll_region_end,ig);
       
+           DPRINT((stderr,"Overflowing: [cur_row=%d] [start: %d, end: %d] 
[ig=%d]\n",term->tcanvas->cur_row,term->tcanvas->scroll_region_start,term->tcanvas->scroll_region_end,ig));
            gl = &term->grid[j + (term->tcanvas->cols * ig)];
         }
         
@@ -196,13 +211,14 @@
 }
 
 /* Save the current screen */
-void term_tcanvas_save(Term *term) {
+void term_tcanvas_save(Term *term) {   
 }
 
 /* Restore the last saved screen */
 void term_tcanvas_restore(Term *term) {
 }
 
+/* clear a certain part of the screen */
 void term_clear_area(Term *term, int x1, int y1, int x2, int y2) {
    int i, j;  
    Term_TGlyph *tgl;
@@ -225,76 +241,81 @@
    }
 }
 
+/* scroll window / region upwards */
 void term_scroll_up(Term *term, int rows) {
 
    
    int i, i2, j;
    int x,y;
    Term_TGlyph *gl;   
+
+   if(term->tcanvas->scroll_in_region) {
+      /* TODO: implement this */
+      DPRINT((stderr,"Scrolling: in region\n"));
+   } else {
+      DPRINT((stderr,"Scrolling: window\n"));
+      /* Going past the virtual scroll buffer, we need to wrap  */
+      if(term->tcanvas->scroll_region_end + rows >
+        (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
+        DPRINT((stderr,"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'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++) {
+              gl = & term->tcanvas->grid[j + (term->tcanvas->cols * i)];
+              gl->c = ' ';
+              gl->changed = 1;
+           }
+        }
+      } else {
+        /* normal scrolling */
+        term->tcanvas->scroll_region_end+=rows;      
+      }
       
-   if(term->tcanvas->scroll_region_end + rows >
-      (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
-      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'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++) {
-           gl = & term->tcanvas->grid[j + (term->tcanvas->cols * i)];
-           gl->c = ' ';
-           gl->changed = 1;
+      /* Start pointer going past virtual scroll buffer */
+      if(term->tcanvas->scroll_region_start + rows >
+        (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
+        DPRINT((stderr,"Start gone past scroll area max, going back to 
start\n"));
+        term->tcanvas->scroll_region_start = rows - (((term->tcanvas->rows-1) 
* 
+                                                      
term->tcanvas->scroll_size) -  term->tcanvas->scroll_region_start);
+      } else {
+        /* normal scrolling */
+        term->tcanvas->scroll_region_start+= rows;
+      }
+      
+      /* set changed flags on chars */
+      /* if start and end are havent gone past virtual scroll buffer */
+      if(term->tcanvas->scroll_region_start < term->tcanvas->scroll_region_end)
+       i2 = term->tcanvas->scroll_region_end;
+      else {
+        /* we now have two areas to modify:
+         * the first being at the end of the virtual scroll buffer
+         * the second being at the start
+         */
+        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;
       }
-   } else {
-      term->tcanvas->scroll_region_end+=rows;
       
-   }
-   
-   if(term->tcanvas->scroll_region_start + rows >
-      (term->tcanvas->rows-1) * term->tcanvas->scroll_size) {
-      printf("Start gone past scroll area max, going back to start\n");      
-      term->tcanvas->scroll_region_start = rows - (((term->tcanvas->rows-1) * 
-       term->tcanvas->scroll_size) -  term->tcanvas->scroll_region_start);
-   } else {
-      term->tcanvas->scroll_region_start+= rows;
-   }
-            
-   /* fix this and make it set changed flags properly */
-
-   if(term->tcanvas->scroll_region_start < term->tcanvas->scroll_region_end)
-     i2 = term->tcanvas->scroll_region_end;
-   else {
-      for(i = 0; i <= term->tcanvas->scroll_region_end; i++) {
+      /* set changed flag from start until determined end */
+      for(i = term->tcanvas->scroll_region_start; i <= i2; 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;
-       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;
-      }
-   }
-
-
-   return;
-   
-   if(term->tcanvas->scroll_in_region) {
-      printf("SCROLL IN REGION!!!!!!!!!!!!!!!!!!!!\n");
-   } else {
-      
+        }
+      }        
    }
 }
 
+/* scroll window / region down */
 void term_scroll_down(Term *term, int rows) {
    if(term->tcanvas->scroll_in_region) {
       




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to