Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

sketchfont tweaks and added info file

  • Loading branch information...
commit 5692d7f71325e03b9d76b29cb36d3488c4a2da80 1 parent 2acb4b9
@lcuk authored
View
116 media/liqbase.info.txt
@@ -0,0 +1,116 @@
+Liqbase Info.
+
+Liqbase changes everything. It's a ground up rethink of how Touch UIs should work.
+
+It is faster than paper.
+
+I like to draw and sketch things which make me smile.
+I try to build things in Liqbase to bring those sketches to life.
+It is a playground for all my ideas.
+
+##### Motivation
+
+Ever since I was a boy, I have been fascinated with touch screens, from using a light pen on the ZX Spectrum through my Amiga and onwards into Windows until finally diving into Maemo Linux and implementing and coalescing the ideas within what became Liqbase.
+I wanted design to account for touching.
+I have written and drawn my ideas of in-numerous notepads and wished all along to bring them to life and touch them.
+There are hundreds of similar simpler projects written in every language I ever learn to program inside of!
+
+Combined with a dedication and desire to optimize and make the best of things to hand Liqbase ends up behaving like the computer I always dreamt of.
+It is quick, simple and personal.
+
+##### Licensing
+
+Liqbase Playground and my applications are licensed under version 2 of the GPL.
+The Liqbase library is currently licensed as GPL v2, whilst under discussion to be re-licensed as LGPL v2.
+These are Open Source licenses which encourage participation and teamwork.
+
+##### I vs We
+
+I can do some things, but we can do so much more.
+
+##### Contributors
+
+List of contributors who have assisted with this Open Source Liqbase implementation.
+
+These people have offered input in numerous areas of Liqbase.
+Usually in the form of advice and discussions then I plough in and try to code it.
+My code is poor and I do not have enough fingers, therefore implementations are usually streamlined and bare bones.
+These are mainly linked to discussions about implementation specifics on topics I know nothing about.
+
+Kot c low levelness, Linux tutoring, x86 consideration
+Seb tag cloud
+Zack textbox bugfixes, mon
+W00t c++guard, fixes and cleanup
+Qwerty install and hildon
+Simon gst cam,detection talks
+Stskeeps late night chats, irc
+Lbt git help, advice
+Sampo dedication and strength
+Johnx late night chats
+Daniels xvideo mode which liqbase uses
+Jaffa bright buttons prototype
+Spyro mic, optimising buddy
+Kath sheep, confidence
+Tammy supercoder :)
+Rm_you brightness, advice
+Jott advice, rotated thinking
+Kees debian package advice
+Jeremiah debian package advice
+Qole cheerleader
+X-fade builder help
+Andre bugzilla help
+Texrat grassroots community strength
+Wazd art critique!
+Robot101 url link history, team building
+Adele UX advice, cats
+Sanna UX and trying hard :)
+Timeless its vs it's and language and mxr
+Vlad live bg support for liqflow!
+Ciroip clock
+Alban alban art
+Ryan web layout
+Javispedro packaging and many idle chats
+Timsamoff chats and meegon
+Jussi driving to hospital
+Quim devices and conf
+Danielw running mate
+Timoph importance of testing
+Frals mms, walking through a non trivial app with me :)
+Valario chats
+vgrade doc formatting
+AlterEgo qml/widget considerations
+Dawn devices and conf
+Amy devices and conf
+Digia rocket icon and layouts
+Forum Nokia UX advice
+WK OneDotZero linkup!
+OneDotZero OneDotZero of course!
+Karsten OneDotZero
+Tracy lover, mother of kids etc, helps me with clear English
+Luke tester #1 style
+Jacob tester #2 tictactoe
+Richard many things, his bowl polishing story
+Craig movember motivator
+Leigh music sheets are for guidance only
+Barry ed, fractint, the stone soup group, beard advice :)
+
+
+As well as a load of other people from Maemo and MeeGo. :)
+I have spoken with literally hundreds of people and discussed how things could be achieved.
+If I have omitted your name from this list, please get in contact.
+
+Different widgets in Liqbase have been inspired based on drawing a sketch whilst talking to someone.
+For instance, the clock widget was first drawn when talking with ciroip.
+This clock still retains his name to this day even though he has never actively touched Liqbase code.
+
+##### Core ideas
+
+Whilst there have been many contributors to different parts of Liqbase, the driving force behind it has been my love for sketching and fluid motion.
+The cell and sketches have been implemented by myself in numerous languages.
+It is like birdsong to me; when I think of code, I know those sorts of items will not be far behind.
+
+Gary Birkett,
+Smile Architect.
+
+
+
View
136 src/liq_xsurface.c
@@ -615,6 +615,21 @@ void xsurface_drawimage_color(liqimage *surface,liqimage *image,int x,int y)
//####################################################################################### ScaleLine variations Std
//#######################################################################################
+// testing InstaBlur to see how it effects rendering if it is inlined
+// make it fast for normal, make it a general option.
+#define InstaBlurInternal(NumPixels,s,Source)\
+ if(NumPixels>1)\
+ {\
+ unsigned char b4[4]={0,0,0,0};\
+ long *bp = (long *)b4;\
+ long *sp = (long *)(Source-2);\
+ *bp = *sp;\
+ s = ( ((int)b4[0]) + ((int)b4[1]) + ((int)b4[2]) + ((int)b4[3]) ) / 4;\
+ }\
+
+
+#define InstaBlur(NumPixels,s,Source)\
+ // InstaBlurInternal(NumPixels,s,Source)
void ScaleLine_grey_slow(unsigned char *Target, unsigned char *Source, int SrcWidth, int TgtWidth,int TgtDrawStartOffset, int TgtDrawPixelCount)
{
@@ -626,7 +641,12 @@ void ScaleLine_grey_slow(unsigned char *Target, unsigned char *Source, int SrcWi
{
if(NumPixels>=TgtDrawStartOffset)
{
- *Target++ = *Source;
+ int s=*Source;
+ InstaBlur(NumPixels,s,Source)
+ *Target++ = s;
+
+
+ //*Target++ = *Source;
}
else
{
@@ -662,31 +682,12 @@ void ScaleLine_grey(unsigned char *Target, unsigned char *Source, int SrcWidth,
{
if(NumPixels>=TgtDrawStartOffset)
{
- *Target++ = *Source;
- /* switch(tbufused)
- {
- case 0:
- tbuf=(unsigned int)*Source;
- tbufused++;
- break;
- case 1:
- tbuf=(tbuf<<8) | *Source;
- tbufused++;
- break;
- case 2:
- tbuf=(tbuf<<8) | *Source;
- tbufused++;
- break;
- case 3:
-
- tbuf=(tbuf<<8) | *Source;
-
- *(unsigned int*)Target = tbuf;
- Target+=4;
- tbufused=0;
- break;
- }*/
-
+ int s=*Source;
+ InstaBlur(NumPixels,s,Source)
+ *Target++ = s;
+
+
+ //*Target++ = *Source;
}
else
{
@@ -701,26 +702,6 @@ void ScaleLine_grey(unsigned char *Target, unsigned char *Source, int SrcWidth,
Source++;
}
}
- /* switch(tbufused)
- {
- case 0:
- // nothing to do
- break;
- case 1:
- *Target++ = tbuf;
- break;
- case 2:
- *(unsigned short*)Target = (unsigned short)tbuf;
- Target+=2;
- break;
- case 3:
- *Target++ = (tbuf>>16);
-
- *(unsigned short*)Target = (unsigned short)tbuf;
- Target+=2;
- break;
-
- }*/
}
@@ -737,30 +718,13 @@ void ScaleLine_uv(unsigned char *Target,unsigned char *Source, int SrcWidth, in
{
if(NumPixels>=TgtDrawStartOffset)
{
- *Target++ = *Source;
- /*switch(tbufused)
- {
- case 0:
- tbuf=(unsigned int)*Source;
- tbufused++;
- break;
- case 1:
- tbuf=(tbuf<<8) | *Source;
- tbufused++;
- break;
- case 2:
- tbuf=(tbuf<<8) | *Source;
- tbufused++;
- break;
- case 3:
-
- tbuf=(tbuf<<8) | *Source;
-
- *(unsigned int*)Target = tbuf;
- Target+=4;
- tbufused=0;
- break;
- }*/
+
+ int s=*Source;
+ InstaBlur(NumPixels,s,Source)
+ *Target++ = s;
+
+
+ //*Target++ = *Source;
}
else
{
@@ -775,26 +739,6 @@ void ScaleLine_uv(unsigned char *Target,unsigned char *Source, int SrcWidth, in
Source++;
}
}
- /* switch(tbufused)
- {
- case 0:
- // nothing to do
- break;
- case 1:
- *Target++ = tbuf;
- break;
- case 2:
- *(unsigned short*)Target = (unsigned short)tbuf;
- Target+=2;
- break;
- case 3:
- *Target++ = (tbuf>>16);
-
- *(unsigned short*)Target = (unsigned short)tbuf;
- Target+=2;
- break;
-
- }*/
}
//#######################################################################################
@@ -817,6 +761,8 @@ void ScaleLine_alphablend_grey(unsigned char *Target, unsigned char *Source, int
int s=*Source;
int t=*Target;
int a=*Src_alphachannelfullres;
+
+ InstaBlur(NumPixels,s,Source)
//*Target++ = t+((s-t)*a)/256;
*Target++ = t+(((s-t)*blend*a) >>16);// /65536;
}
@@ -854,9 +800,12 @@ void ScaleLine_alphablend_uv(unsigned char *Target, unsigned char *Source, int S
// alpha blending from an actual alpha channel
int s=*Source;
int t=*Target;
+
+ int a=*Src_alphachanneldoubleres;
+
+ InstaBlur(NumPixels,s,Source)
if(!s)s=128;
if(!t)t=128;
- int a=*Src_alphachanneldoubleres;
//*Target++ = t+((s-t)*a)/256;
int r= t+( ((s-t)*blend*a) >>16) ;// /65536;
if(!r)r=1;
@@ -904,6 +853,9 @@ void ScaleLine_blend_grey(unsigned char *Target, unsigned char *Source, int SrcW
// simple blending
int s=*Source;
int t=*Target;
+
+ InstaBlur(NumPixels,s,Source)
+
*Target++ = (t+((s-t)*blend)/256);
// blend blending from an actual blend channel
@@ -943,6 +895,8 @@ void ScaleLine_blend_uv(unsigned char *Target, unsigned char *Source, int SrcWid
// do some blend blending :)
int s=*Source;
int t=*Target;
+
+ InstaBlur(NumPixels,s,Source)
if(!s)s=128;
if(!t)t=128;
View
17 src/liqcell_easypaint.c
@@ -43,7 +43,7 @@ extern "C" {
int liqcell_showdebugboxes=0;
int liqcell_showfps=0;
-
+int liqcell_liqfloat_drunkenmode=0;
liqimage *easypaint_isloading_image = NULL;
@@ -1011,10 +1011,17 @@ __tz_one("imageprep");
char *fstr=liqcell_propgets(self,"imagefloat",NULL);
+ // LOL! drunken mode
+ // really, doing this makes the UI totally amazingly swimmingly dizzyfying it's unreal
+ // do not enable this unless at student partys or workmates desks
+ if(liqcell_liqfloat_drunkenmode)
+ if( (!fstr) || (*fstr==0) ){ fstr="0"; }
+
if(fstr && *fstr)
+
{
- // liqapp_log("imagefloat: start '%s' %i,%i",self->name,w,h);
+ //liqapp_log("imagefloat: start '%s' %i,%i, '%s'",self->name,w,h,fstr);
{
@@ -1029,13 +1036,13 @@ __tz_one("imageprep");
- liqcell_propsets_printf(self,"imagefloat","%f,%f,%f,%f",secs+0.1,0,0,0);
+ liqcell_propsets_printf(self,"imagefloat","%f",secs+0.1);
- unsigned int rndofname = *(unsigned int *)self->name;
+ unsigned int rndofname = *(unsigned short *)self->name;
secs+=rndofname;
@@ -1066,7 +1073,7 @@ __tz_one("imageprep");
- //liqapp_log("imagefloat: '%s' orig %4i,%4i - %4i,%4i into %4i,%4i - %4i,%4i",self->name,x,y,w,h, xx,yy,rw,rh );
+ //liqapp_log("imagefloat: '%s' orig %4i,%4i - %4i,%4i into %4i,%4i - %4i,%4i s=%f",self->name,x,y,w,h, xx,yy,rw,rh , secs );
if(liqcell_propgeti(self,"lockaspect",1)==1)
View
12 src/liqcell_easyrun.c
@@ -2065,6 +2065,18 @@ liqcell *jumpprev=NULL;
}
+
+ // find out if orientation flipped.
+ if(liqcell_handlerfind(self,"layout"))
+ {
+ if( canvas.pixelwidth != liqcell_getw(self) )
+ {
+ // something changed, a glitch in the matrix.
+ liqcell_handlerrun(self,"layout",NULL);
+ }
+ }
+
+
#ifdef LIQBASE_WALLMOUNT
if(infoback && infoclose && (liqcell_easyrun_hide_back==0) )
View
41 src/liqcell_historystore.c
@@ -76,9 +76,44 @@ int liqcell_historystore_historythumb(liqcell *self)
if(liqapp_fileexists(buf))
{
- // ok, there is a file already existing, no point in regenerting right now
- // tho in future it would be better storing a live thumb, its just a bit worrysome with my drive
- return 0;
+ // ok, there is a file already existing, no point in regenerating right now
+ // tho' in future it would be better storing a live thumb, its just a bit worrysome with my drive
+ // compromise: going to store new file if its been ~1 minute. :)
+ char filedatestamp[64];
+ char nowdatestamp[64];
+
+ //##################################################### get the file datestamp
+ {
+ struct stat statbuf;
+ if(stat(buf, &statbuf) == -1)
+ {
+ liqapp_log("liqcell_historystore_historythumb stat failed: '%s'",buf);
+ return -1;
+ }
+
+ struct tm *pictm;
+ pictm = localtime(&statbuf.st_mtime);
+
+ strftime(filedatestamp,sizeof(filedatestamp), "%Y%m%d_%H%M",pictm);
+ }
+ //##################################################### get the system datestamp
+ {
+ time_t now;
+ struct tm *ts;
+
+ time(&now);
+ ts = localtime(&now);
+ strftime(nowdatestamp, sizeof(nowdatestamp), "%Y%m%d_%H%M", ts);
+ }
+
+ liqapp_log("liqcell_historystore_historythumb test: %s : %s (%d) '%s'",filedatestamp,nowdatestamp,strcmp(filedatestamp,nowdatestamp),buf );
+
+ //##################################################### compare
+ if( strcmp(filedatestamp,nowdatestamp)==0 )
+ {
+ return 0;
+ }
+
}
liqcell_hold(self);
View
21 src/liqcliprect.c
@@ -609,6 +609,16 @@ liqfontglyph *g = liqfont_getglyph(font,glyph);
if(g->sketchlink){ //liqapp_log("glyph ahoy: %d, wh(%d,%d), swh(%d,%d)",glyph,gw,gh, g->sketchlink->pixelwidth,g->sketchlink->pixelheight);
+ {
+ liqstroke *s=g->sketchlink->strokefirst;
+ while(s)
+ {
+ s->pen_y=255;
+ s->pen_u=128;
+ s->pen_v=128;
+ s=s->linknext;
+ }
+ }
liqcliprect_drawsketch(self,g->sketchlink, x,y,gw,gh,2); return; }
@@ -756,7 +766,16 @@ liqfontglyph *g = liqfont_getglyph(font,glyph);
int gh =g->glyphh; // font->glyphheights[glyph];
if(g->sketchlink){ //liqapp_log("glyph ahoy: %d, wh(%d,%d), swh(%d,%d)",glyph,gw,gh, g->sketchlink->pixelwidth,g->sketchlink->pixelheight);
-
+ {
+ liqstroke *s=g->sketchlink->strokefirst;
+ while(s)
+ {
+ s->pen_y=grey;
+ s->pen_u=u;
+ s->pen_v=v;
+ s=s->linknext;
+ }
+ }
liqcliprect_drawsketch(self,g->sketchlink, x,y,gw,gh,2); return; }
View
8 src/liqimage.c
@@ -160,7 +160,7 @@ liqimage *liqimage_cache_getfile(const char *filename,int maxw,int maxh,int allo
char cachekey[256];
int f;
snprintf(cachekey,256,"image:%s,%i,%i,%i",filename,maxw,maxh,allowalpha);
- //liqapp_log( "image cache seeking %s", cachekey );
+ liqapp_log( "image cache seeking %s", cachekey );
if(cacheused>=cachemax)
{
//liqapp_log( "image cache cleaning %s", cachekey );
@@ -179,7 +179,7 @@ liqimage *liqimage_cache_getfile(const char *filename,int maxw,int maxh,int allo
if(strcmp(cachestack[f].key,cachekey)==0)
{
// no differences..
- //liqapp_log( "image cache matched %s %i", cachekey ,cachestack[f].data->usagecount);
+ liqapp_log( "image cache matched %s %i", cachekey ,cachestack[f].data->usagecount);
self = cachestack[f].data;
//self->usagecount++;
liqimage_hold(self);
@@ -214,7 +214,7 @@ liqimage *liqimage_cache_getfile(const char *filename,int maxw,int maxh,int allo
//self->usagecount=1;
- //liqapp_log( "TTF cache inserting %s", cachekey );
+ liqapp_log( "image cache inserting %s", cachekey );
// todo: fix the bug here when threaded loading occuring
@@ -229,7 +229,7 @@ liqimage *liqimage_cache_getfile(const char *filename,int maxw,int maxh,int allo
pthread_mutex_unlock(&cachestack_lock);
- ////liqapp_log( "TTF cache completed %s", cachekey );
+ liqapp_log( "image cache completed %s", cachekey );
return self;
}
Please sign in to comment.
Something went wrong with that request. Please try again.