Index: class.doc ================================================================== --- class.doc +++ class.doc @@ -1546,11 +1546,11 @@ of all objects of the specified class to zero. If the class is -1, then all objects are flushed in this way, and during the input phase, it also skips the beginning and ending phases if the class is -1. FlushObj ( -- ) ** - Resets this object's Arrived, Departed, Inertia, Moved, and UserSignal. + Resets this object's Arrived, Busy, Departed, Inertia, Moved, UserSignal. ,FlushObj ( obj -- ) ** Resets the Arrived, Busy, Departed, Inertia, Moved, and UserSignal flags of the specified object only. Index: default.heromeshrc ================================================================== --- default.heromeshrc +++ default.heromeshrc @@ -192,5 +192,8 @@ ?.?.ctrl.T: ^T ?.?.ctrl.Y: ^Y ?.?.shift.ctrl.M: select ':s'; ?.?.f10: select ':x'; +! Picture editor macros +?.picedit.macro.M: insert into graph(x,y,c) select s-x-1,y,c from graph where xpos%cur_pic->size:n==1?cur->pos/cur_pic->size:cur_pic->data[cur->pos+cur_pic->size]); + switch(n) { + case 0: sqlite3_result_int(cxt,cur->pos%cur_pic->size); break; + case 1: sqlite3_result_int(cxt,cur->pos/cur_pic->size); break; + case 2: sqlite3_result_int(cxt,cur_pic->data[cur->pos+cur_pic->size]); break; + case 3: sqlite3_result_int(cxt,cur_pic->size); break; + } return SQLITE_OK; } static int vt_graph_next(sqlite3_vtab_cursor*cc) { Cursor*cur=(void*)cc; @@ -162,11 +167,11 @@ return SQLITE_OK; } static int vt_graph_update(sqlite3_vtab*vt,int argc,sqlite3_value**argv,sqlite3_int64*rowid) { int x,y; - if(argc!=5) return SQLITE_CONSTRAINT_VTAB; + if(argc!=6) return SQLITE_CONSTRAINT_VTAB; if(sqlite3_value_type(argv[0])==SQLITE_NULL) { x=sqlite3_value_int(argv[2]); y=sqlite3_value_int(argv[3]); if(x<0 || x>=cur_pic->size || y<0 || y>=cur_pic->size) return SQLITE_CONSTRAINT_VTAB; x+=y*cur_pic->size; Index: picedit.doc ================================================================== --- picedit.doc +++ picedit.doc @@ -135,11 +135,13 @@ Enter a SQL statement to edit the current picture. This should be a UPDATE statement which updates the column called "C" of the table called "GRAPH". It has columns "X" and "Y" which are the coordinates of the pixel, and "C" which is the colour of the pixel. It may also be a SELECT statement in order to query it, and the response is then displayed - (which must be a single row and single column only). + (which must be a single row and single column only). This table also has + a column "S" which is the same for all rows, and is the size of the + picture, which can be used in macros (see config.doc). ` or = Exchange the current picture with the spare page. (The spare page is not stored in the puzzle set; it is lost when Free Hero Mesh is terminated.)