Skip to content

Commit

Permalink
Fix partial screen updates
Browse files Browse the repository at this point in the history
  • Loading branch information
ka010 committed Jun 12, 2012
1 parent cfabaec commit 1225924
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
6 changes: 4 additions & 2 deletions MWMetaWatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
@interface MWMetaWatch : NSObject <MWConnectionControllerDelegate>{
BOOL isConnected;
MWConnectionController *connectionController;
unsigned char displayBuffer[96*96];
}

+(MWMetaWatch *) sharedWatch;
Expand Down Expand Up @@ -107,8 +108,9 @@
-(void)readBatteryVoltage;

-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode;
-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode linesPerWrite:(int)numLines;
-(void)writeImage:(NSData*)imgData inRect:(CGRect)clippingRect forMode:(unsigned char)mode linesPerWrite:(int)numLines;
-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode clearOnWrite:(BOOL)clear;
-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode clearOnWrite:(BOOL)clear linesPerWrite:(int)numLines;
-(void)writeImage:(NSData*)imgData inRect:(CGRect)clippingRect forMode:(unsigned char)mode clearOnWrite:(BOOL)clear linesPerWrite:(int)numLines;
-(void)writeText:(NSString*)text;
-(void)writeNotification:(NSString*)title withContent:(NSString*)text fromSource:(NSString*)src;
-(void)writeIdleScreenWithData:(NSMutableDictionary*)dataDict;
Expand Down
36 changes: 27 additions & 9 deletions MWMetaWatch.m
Original file line number Diff line number Diff line change
Expand Up @@ -198,22 +198,34 @@ -(void)resetMode {

-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode {

[self writeImage:imgData forMode:mode linesPerWrite:1];
[self writeImage:imgData forMode:mode clearOnWrite:YES];
}

-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode linesPerWrite:(int)numLines {
[self writeImage:imgData inRect:kMWFullscreenRect forMode:mode linesPerWrite:numLines];
-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode clearOnWrite:(BOOL)clear {
[self writeImage:imgData forMode:mode clearOnWrite:clear linesPerWrite:1];

}

-(void)writeImage:(NSData*)imgData forMode:(unsigned char)mode clearOnWrite:(BOOL)clear linesPerWrite:(int)numLines {
[self writeImage:imgData inRect:kMWFullscreenRect forMode:mode clearOnWrite:clear linesPerWrite:numLines];
}

-(void)writeImage:(NSData*)imgData inRect:(CGRect)clippingRect forMode:(unsigned char)mode linesPerWrite:(int)numLines {
[self loadTemplate:mode];
-(void)writeImage:(NSData*)imgData inRect:(CGRect)clippingRect forMode:(unsigned char)mode clearOnWrite:(BOOL)clear linesPerWrite:(int)numLines {


if (clear) {
[self loadTemplate:mode];
}

const char* data = [imgData bytes];

int row=0;

int fromRow = clippingRect.origin.y;
int toRow = fromRow + clippingRect.size.height;
int toRow = fromRow + clippingRect.size.height;

int fromCol = clippingRect.origin.x;
int toCol = fromCol + clippingRect.size.width;

switch (numLines) {
case 1:
Expand All @@ -226,22 +238,28 @@ -(void)writeImage:(NSData*)imgData inRect:(CGRect)clippingRect forMode:(unsigned
for (col=0; col<96; col+=8) {
unsigned char byte=0x00;
unsigned char part[8];
memcpy(part, data+row*96+col, 8);

if ( (col>=fromCol) && (col<=toCol) ) {
memcpy(part, data+row*96+col, 8);
memcpy((void*)displayBuffer+row*96+col, data+row*96+col, 8);

}else {
memcpy(part, displayBuffer+row*96+col, 8);
}

int x=0;
for (x=0; x<8; x++) {
if( part[x]==0xFF) {
byte|=1<<x;
}
}

rowData[col/8]=byte;

}

[self writeBuffer:mode row:row data:rowData];

}
// displayBuffer = data;
break;
case 2:
// FIXME: use clippingRect
Expand Down

0 comments on commit 1225924

Please sign in to comment.