⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 2 页
字号:
	}#endifexit:	group_reset_children((GroupingNode*)st);	if (eff->traversing_mode==TRAVERSE_GET_BOUNDS) gf_bbox_from_rect(&eff->bbox, &st->clip);	form_reset(st);}void R3D_InitForm(Render3D *sr, GF_Node *node){	FormStack *stack;	GF_SAFEALLOC(stack, FormStack);	SetupGroupingNode((GroupingNode*)stack, sr->compositor, node, & ((M_Form *)node)->children);	stack->grouplist = gf_list_new();	gf_node_set_private(node, stack);	gf_node_set_callback_function(node, RenderForm);}/*			FORM CONSTRAINTS*/static void shin_apply(FormStack *st, u32 *group_idx, u32 count){	u32 i, len;	Fixed tot_len, inter_space;	tot_len = 0;	inter_space = st->clip.width;	len = 0;	for (i=0; i<count; i++) {		if (group_idx[i] != 0) {			tot_len += form_get_group(st, group_idx[i])->final.width;			len++;		}	}	inter_space -= tot_len;	inter_space /= (len+1);	for (i=0; i<count; i++) {		if(group_idx[i] == 0) continue;		if (!i) {			form_get_group(st, group_idx[0])->final.x = st->clip.x + inter_space;		} else {			form_get_group(st, group_idx[i])->final.x = 				form_get_group(st, group_idx[i-1])->final.x + form_get_group(st, group_idx[i-1])->final.width 				+ inter_space;		}		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void sh_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	u32 i, k;	GF_Rect *l, *r;	Fixed inter_space, tot_len;	tot_len = 0;	if (space == -FIX_ONE) {		r = &form_get_group(st, group_idx[count-1])->final;		l = &form_get_group(st, group_idx[0])->final;		inter_space = r->x - l->x;		if(group_idx[0] != 0) inter_space -= l->width;		for (i=1; i<count-1; i++) tot_len += form_get_group(st, group_idx[i])->final.width;		inter_space -= tot_len;		inter_space /= (count-1);	} else {		inter_space = space;	}			k = count - 1;	if (space != -1) k += 1;	for (i=1; i<k; i++) {		if (group_idx[i] ==0) continue;		l = &form_get_group(st, group_idx[i-1])->final;		r = &form_get_group(st, group_idx[i])->final;		r->x = l->x + inter_space;		if(group_idx[i-1] != 0) r->x += l->width;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void svin_apply(FormStack *st, u32 *group_idx, u32 count){	u32 i, len;	Fixed tot_len, inter_space;	tot_len = 0;	inter_space = st->clip.height;	len = 0;	for (i=0; i<count;i++) {		if (group_idx[i] != 0) {			tot_len += form_get_group(st, group_idx[i])->final.height;			len++;		}	}	inter_space -= tot_len;	inter_space /= (len+1);					for (i=0; i<count; i++) {		if (group_idx[i] == 0) continue;		if (!i) {			form_get_group(st, group_idx[0])->final.y = st->clip.y - inter_space;		} else {			form_get_group(st, group_idx[i])->final.y =				form_get_group(st, group_idx[i-1])->final.y - form_get_group(st, group_idx[i-1])->final.height -				inter_space;						}		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void sv_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	u32 i, k;	Fixed tot_len, inter_space;	GF_Rect *t, *b;	tot_len = 0;	if(space > -FIX_ONE) {		inter_space = space;	} else {		t = &form_get_group(st, group_idx[count-1])->final;		b = &form_get_group(st, group_idx[0])->final;		inter_space = b->y - t->y;		if (group_idx[0]!=0) inter_space -= t->height;		for (i=1; i<count-1; i++) tot_len += form_get_group(st, group_idx[i])->final.height;		inter_space -= tot_len;		inter_space /= count-1;	}			k = count-1;	if (space > -1) k += 1;	for (i=1; i<k; i++) {		if (group_idx[i] == 0) continue;		form_get_group(st, group_idx[i])->final.y = form_get_group(st, group_idx[i-1])->final.y - inter_space;		if (group_idx[i-1] != 0) {			form_get_group(st, group_idx[i])->final.y -= form_get_group(st, group_idx[i-1])->final.height;		}		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void al_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	Fixed min_x;	GF_Rect *rc;	u32 i, start;	start = 0;	min_x = form_get_group(st, group_idx[0])->final.x;	if (space>-FIX_ONE) {		start = 1;		min_x += space;	} else {		for (i=1; i<count; i++) {			rc = &form_get_group(st, group_idx[0])->final;			if (group_idx[i]==0) {				min_x = rc->x;				break;			}			if (rc->x < min_x) min_x = rc->x;		}	}	for (i=start; i<count; i++) {		if( group_idx[i] == 0) continue;		form_get_group(st, group_idx[i])->final.x = min_x;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void ar_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	Fixed max_x;	u32 i, start;	GF_Rect *rc;	start = 0;	rc = &form_get_group(st, group_idx[0])->final;	max_x = rc->x + rc->width;		if(space>-FIX_ONE) {		max_x -= space;		start = 1;	} else {		for (i=1; i<count; i++) {			rc = &form_get_group(st, group_idx[i])->final;			if (group_idx[i]==0) {				max_x = rc->x + rc->width;				break;			}			if (rc->x + rc->width > max_x) max_x = rc->x + rc->width;		}	}	for (i=start; i<count; i++) {		if(group_idx[i] == 0) continue;		rc = &form_get_group(st, group_idx[i])->final;		rc->x = max_x - rc->width;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void at_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	Fixed max_y;	u32 i, start;	GF_Rect *rc;	start = 0;	max_y = form_get_group(st, group_idx[0])->final.y;	if(space>-FIX_ONE) {		start = 1;		max_y -= space;	} else {		for (i=1; i<count; i++) {			rc = &form_get_group(st, group_idx[i])->final;			if (group_idx[i]==0) {				max_y = rc->y;				break;			}			if (rc->y > max_y) max_y = rc->y;		}	}	for (i=start; i<count; i++) {		if(group_idx[i] == 0) continue;		form_get_group(st, group_idx[i])->final.y = max_y;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void ab_apply(FormStack *st, Fixed space, u32 *group_idx, u32 count){	Fixed min_y;	u32 i, start;	GF_Rect *rc;	start = 0;	rc = &form_get_group(st, group_idx[0])->final;	min_y = rc->y - rc->height;	if(space>-FIX_ONE) {		start = 1;		min_y += space;	} else {		for (i=1; i<count; i++) {			rc = &form_get_group(st, group_idx[i])->final;			if (group_idx[i]==0) {				min_y = rc->y - rc->height;				break;			}			if (rc->y - rc->height < min_y) min_y = rc->y - rc->height;		}	}	for (i=start; i<count; i++) {		if(group_idx[i] == 0) continue;		rc = &form_get_group(st, group_idx[i])->final;		rc->y = min_y + rc->height;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void ah_apply(FormStack *st, u32 *group_idx, u32 count){	GF_Rect *rc;	u32 i;	Fixed left, right, center;	left = right = center = 0;	for (i=0; i<count; i++) {		rc = &form_get_group(st, group_idx[i])->final;		if(group_idx[i] == 0) {			center = rc->x + rc->width / 2;			break;		}		if (left > rc->x) left = rc->x;		if (right < rc->x + rc->width) right = rc->x + rc->width;		center = (left+right)/2;	}	for (i=0; i<count; i++) {		if(group_idx[i] == 0) continue;		rc = &form_get_group(st, group_idx[i])->final;		rc->x = center - rc->width/2;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}static void av_apply(FormStack *st, u32 *group_idx, u32 count){	u32 i;	Fixed top, bottom, center;	GF_Rect *rc;	top = bottom = center = 0;	for (i=0; i<count; i++) {		rc = &form_get_group(st, group_idx[i])->final;		if (group_idx[i] == 0) {			center = rc->y - rc->height / 2;			break;		}		if (top < rc->y) top = rc->y;		if (bottom > rc->y - rc->height) bottom = rc->y - rc->height;		center = (top+bottom)/2;	}	for (i=0; i<count; i++) {		if(group_idx[i] == 0) continue;		rc = &form_get_group(st, group_idx[i])->final;		rc->y = center + rc->height/2;		fg_update_bounds(form_get_group(st, group_idx[i]));	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -