GRect scroll_layer_get_new_content_rect (ScrollLayer* scroll_layer,GPoint offset) { GRect to={{0,0},scroll_layer_get_content_size(scroll_layer)}; to.size.h-=scroll_layer->layer.frame.size.h; offset.y*=-1; gpoint_move_into_rect(&offset,&to); offset.y*=-1; to.size.h+=scroll_layer->layer.frame.size.h; to.origin=offset; return to; }
GRect scroll_layer_get_new_content_rect (ScrollLayer* l,GPoint offset) { SCROLL_LAYER_GET; GRect to={{0,0},scroll_layer_get_content_size(l)}; to.size.h-=scroll_layer->frame.size.h; offset.y*=-1; gpoint_move_into_rect(&offset,&to); offset.y*=-1; to.size.h+=scroll_layer->frame.size.h; to.origin=offset; return to; }
void thread_update_comments_position() { scroll_layer_size = scroll_layer_get_content_size(thread_scroll_layer); Layer *layer = text_layer_get_layer(thread_view_comments_layer); GRect rect = layer_get_frame(layer); rect.origin.y = scroll_layer_size.h; layer_set_frame(layer, rect); scroll_layer_size.h += LOAD_COMMENTS_HEIGHT; scroll_layer_set_content_size(thread_scroll_layer, scroll_layer_size); }
void scroll_layer_shadow_layer_update_func (Layer* me,GContext* ctx) { ScrollLayer* scroll_layer=(ScrollLayer*)me->parent; SDL_Surface* scroll_shadow=getSimulatorImage(SIM_IMG_SCROLL_SHADOW); GPoint topOffset=getTopOffset(); SDL_Surface* screen=getTopScreen (); GPoint offset=scroll_layer_get_content_offset (scroll_layer); GSize size=scroll_layer_get_content_size (scroll_layer); GSize frameSize=me->frame.size; SDL_Rect src,dst; if (offset.y<0) { src=(SDL_Rect){0,15,144,15}; dst=(SDL_Rect){topOffset.x,topOffset.y,144,15}; SDL_gfxBlitRGBA(scroll_shadow,&src,screen,&dst); } if (offset.y-((Layer*)scroll_layer)->frame.size.h!=-size.h) { src=(SDL_Rect){0,0,144,15}; dst=(SDL_Rect){topOffset.x,topOffset.y+frameSize.h-15,144,15}; SDL_gfxBlitRGBA(scroll_shadow,&src,screen,&dst); } }