Пример #1
0
static void
html_write_border_style_40_for_merged_cell (GsfOutput *output, GnmStyle const *style,
					    Sheet *sheet, gint row, gint col)
{
	GnmBorder *border;
	GnmRange const *merge_range;
	GnmCellPos pos;
	pos.col = col;
	pos.row = row;


	border = gnm_style_get_border (style, MSTYLE_BORDER_TOP);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-top");
	border = gnm_style_get_border (style, MSTYLE_BORDER_LEFT);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-left");

	merge_range = gnm_sheet_merge_contains_pos (sheet, &pos);
	if (merge_range != NULL) {
		style = sheet_style_get (sheet, merge_range->end.col, merge_range->end.row);
		if (style == NULL)
			return;
	}

	border = gnm_style_get_border (style, MSTYLE_BORDER_BOTTOM);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-bottom");
	border = gnm_style_get_border (style, MSTYLE_BORDER_RIGHT);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-right");
}
Пример #2
0
static void
html_write_border_style_40 (GsfOutput *output, GnmStyle const *style)
{
	GnmBorder *border;

	border = gnm_style_get_border (style, MSTYLE_BORDER_TOP);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-top");
	border = gnm_style_get_border (style, MSTYLE_BORDER_BOTTOM);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-bottom");
	border = gnm_style_get_border (style, MSTYLE_BORDER_LEFT);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-left");
	border = gnm_style_get_border (style, MSTYLE_BORDER_RIGHT);
	if (!gnm_style_border_is_blank (border))
		html_write_one_border_style_40 (output, border, "border-right");
}
Пример #3
0
static gboolean
style_border_vmargins (GnmBorder const * const * prev_vert,
		       GnmStyleRow const *sr, int col,
		       int offsets [2][2])
{
	GnmBorder const *border = sr->vertical [col];
	GnmBorder const *l0 = sr->top [col-1];
	GnmBorder const *r0 = sr->top [col];
	GnmBorder const *l1 = sr->bottom [col-1];
	GnmBorder const *r1 = sr->bottom [col];

	if (border->line_type == GNM_STYLE_BORDER_DOUBLE) {
		/* pull inwards or outwards */
		if (!gnm_style_border_is_blank (l0))
			offsets [1][0] =  l0->end_margin;
		else if (!gnm_style_border_is_blank (r0))
			offsets [1][0] = -r0->begin_margin;
		else
			offsets [1][0] = 0;

		if (!gnm_style_border_is_blank (l1))
			offsets [1][1] = -l1->begin_margin;
		else if (!gnm_style_border_is_blank (r1))
			offsets [1][1] =  r1->end_margin;
		else
			offsets [1][1] = 0;

		if (!gnm_style_border_is_blank (r0))
			offsets [0][0] = r0->end_margin;
		else if (!gnm_style_border_is_blank (l0))
			offsets [0][0] = -l0->begin_margin;
		else
			offsets [0][0] = 0;

		if (!gnm_style_border_is_blank (r1))
			offsets [0][1] = -r1->begin_margin;
		else if (!gnm_style_border_is_blank (l1))
			offsets [0][1] =  l1->end_margin;
		else
			offsets [0][1] = 0;
		return TRUE;
	}

	offsets [0][0] = offsets [0][1] = 0;
	if (border->line_type == GNM_STYLE_BORDER_NONE) {
		/* No need to check for show grid.  That is done when the
		 * borders are loaded.
		 */
		if (!gnm_style_border_is_blank (r0))
			offsets [0][0] = 1 + r0->end_margin;
		else if (!gnm_style_border_is_blank (l0))
			offsets [0][0] = 1 + l0->end_margin;
		/* Do not over write background patterns */
		else if (prev_vert [col] == NULL)
			offsets [0][0] = 1;

		if (!gnm_style_border_is_blank (r1))
			offsets [0][1] = -1 - r1->begin_margin;
		else if (!gnm_style_border_is_blank (l1))
			offsets [0][1] = -1 - l1->begin_margin;
		/* Do not over write background patterns */
		else if (sr->vertical [col] == NULL)
			offsets [0][1] = -1;
	} else {
		/* pull inwards */
		int offset = 0;
		if (!gnm_style_border_is_blank (r0))
			offset = 1 + r0->end_margin;
		if (!gnm_style_border_is_blank (l0)) {
			int tmp = 1 + l0->end_margin;
			if (offset < tmp)
				offset = tmp;
		}
		offsets [0][0] = offset;

		offset = 0;
		if (!gnm_style_border_is_blank (r1))
			offset = 1 + r1->begin_margin;
		if (!gnm_style_border_is_blank (l1)) {
			int tmp = 1 + l1->begin_margin;
			if (offset < tmp)
				offset = tmp;
		}
		offsets [0][1] = -offset;
	}
	return FALSE;
}
Пример #4
0
static gboolean
style_border_hmargins (GnmBorder const * const * prev_vert,
		       GnmStyleRow const *sr, int col,
		       int offsets [2][2], int dir)
{
	GnmBorder const *border = sr->top [col];
	GnmBorder const *t0 = prev_vert [col];
	GnmBorder const *t1 = prev_vert [col+1];
	GnmBorder const *b0 = sr->vertical [col];
	GnmBorder const *b1 = sr->vertical [col+1];

	if (border->line_type == GNM_STYLE_BORDER_DOUBLE) {
		/* pull inwards or outwards */
		if (!gnm_style_border_is_blank (t0)) {
			if (t0->line_type == GNM_STYLE_BORDER_DOUBLE)
				offsets [1][0] =  dir * t0->end_margin;
			else
				offsets [1][0] = -dir * t0->begin_margin;
		} else if (!gnm_style_border_is_blank (b0))
			offsets [1][0] = -dir * b0->begin_margin;
		else
			offsets [1][0] = 0;

		if (!gnm_style_border_is_blank (t1)) {
			if (t1->line_type == GNM_STYLE_BORDER_DOUBLE)
				offsets [1][1] = -dir * t1->begin_margin;
			else
				offsets [1][1] =  dir * t1->end_margin;
		} else if (!gnm_style_border_is_blank (b1))
			offsets [1][1] =  dir * b1->end_margin;
		else
			offsets [1][1] = 0;

		if (!gnm_style_border_is_blank (b0)) {
			if (b0->line_type == GNM_STYLE_BORDER_DOUBLE)
				offsets [0][0] =  dir * b0->end_margin;
			else
				offsets [0][0]= -dir * b0->begin_margin;
		} else if (!gnm_style_border_is_blank (t0))
			offsets [0][0]= -dir * t0->begin_margin;
		else
			offsets [0][0]= 0;

		if (!gnm_style_border_is_blank (b1)) {
			if (b1->line_type == GNM_STYLE_BORDER_DOUBLE)
				offsets [0][1] = -dir * b1->begin_margin;
			else
				offsets [0][1] =  dir * b1->end_margin;
		} else if (!gnm_style_border_is_blank (t1))
			offsets [0][1] =  dir * t1->end_margin;
		else
			offsets [0][1] = 0;
		return TRUE;
	}

	offsets [0][0] = offsets [0][1] = 0;
	if (border->line_type == GNM_STYLE_BORDER_NONE) {
		/* No need to check for show grid.  That is done when the
		 * borders are loaded.  Do not over write background patterns
		 */
		if (!gnm_style_border_is_blank (b0))
			offsets [0][0] = dir *(1 + b0->end_margin);
		else if (!gnm_style_border_is_blank (t0))
			offsets [0][0] = dir *(1 + t0->end_margin);
		else if (sr->top [col-1] == NULL)
			offsets [0][0] = dir;

		if (!gnm_style_border_is_blank (b1))
			offsets [0][1] = -dir * (1 - b1->begin_margin);
		else if (!gnm_style_border_is_blank (t1))
			offsets [0][1] = -dir * (1 - t1->begin_margin);
		else if (sr->top [col+1] == NULL)
			offsets [0][1] = -dir;
	} else {
		/* pull outwards */
		if (gnm_style_border_is_blank (sr->top [col-1])) {
			int offset = 0;
			if (!gnm_style_border_is_blank (b0))
				offset = b0->begin_margin;
			if (!gnm_style_border_is_blank (t0)) {
				int tmp = t0->begin_margin;
				if (offset < tmp)
					offset = tmp;
			}
			offsets [0][0] = -dir * offset;
		}

		if (gnm_style_border_is_blank (sr->top [col+1])) {
			int offset = 0;
			if (!gnm_style_border_is_blank (b1))
				offset = b1->end_margin;
			if (!gnm_style_border_is_blank (t1)) {
				int tmp = t1->end_margin;
				if (offset < tmp)
					offset = tmp;
			}
			offsets [0][1] = dir * offset;
		}
	}
	return FALSE;
}