Esempio n. 1
0
void officeooo_annotation::pptx_convert(oox::pptx_conversion_context & Context)
{
    const double x = 8 * office_annotation_attr_.svg_x_.get_value_or(length(0)).get_value_unit(length::pt);
    const double y = 8 * office_annotation_attr_.svg_y_.get_value_or(length(0)).get_value_unit(length::pt);
 /////////////////////////////////
	std::wstring date;
	std::wstring author;
 	std::pair<int,int> id_idx;
	
	if (dc_date_)
	{
		date = xml::utils::replace_text_to_xml(dynamic_cast<dc_date * >(dc_date_.get())->content_);
	}
	if (dc_creator_)
	{
		author = xml::utils::replace_text_to_xml(dynamic_cast<dc_creator * >(dc_creator_.get())->content_);
	}
	id_idx = Context.add_author_comments(author);

	Context.get_comments_context().start_comment(x, y,id_idx.first,id_idx.second);//author & idx (uniq number for author
	
	Context.get_text_context().start_comment_content();
	for (size_t i = 0; i < content_.size(); i++)//текст + текстовый стиль
    {
        content_[i]->pptx_convert(Context);
    }

	Context.get_comments_context().add_date(date);
	Context.get_comments_context().add_content(Context.get_text_context().end_comment_content());
	
//////////////////////////////////////////////////////////////////
    /// Обрабатываем стиль draw
	std::vector<const odf_reader::style_instance *> instances;
	style_instance* styleInst = Context.root()->odf_context().styleContainer().style_by_name(
				office_annotation_attr_.draw_style_name_.get_value_or(L""), odf_types::style_family::Graphic,false/*Context.process_headers_footers_*/);
	if (styleInst)
	{
		style_instance * defaultStyle = Context.root()->odf_context().styleContainer().style_default_by_type(odf_types::style_family::Graphic);
		if (defaultStyle)instances.push_back(defaultStyle);

		instances.push_back(styleInst);
	}
	graphic_format_properties graphicProperties = calc_graphic_properties_content(instances);	

	graphicProperties.apply_to(Context.get_comments_context().get_draw_properties());

	const std::wstring textStyleName = office_annotation_attr_.draw_text_style_name_.get_value_or(L"");

	Context.get_comments_context().end_comment();
}
Esempio n. 2
0
void draw_page::pptx_convert_placeHolder(oox::pptx_conversion_context & Context, std::wstring styleName, presentation_class::type PresentationClass)
{
	office_element_ptr elm = Context.root()->odf_context().drawStyles().find_by_style_name(styleName);
	//todooo если это элемент datatime -нужно вытащить формат поля

	if (!elm)return;

	int index=-1;

    const std::wstring masterName = draw_page_attr_.master_page_name_.get_value_or(L"");
	style_master_page * master = Context.root()->odf_context().pageLayoutContainer().master_page_by_name(masterName);

	if (master)
		index = master->find_placeHolderIndex(PresentationClass, Context.last_idx_placeHolder);


	Context.get_slide_context().start_shape(1);
	Context.get_slide_context().set_placeHolder_type(presentation_class(PresentationClass).get_type_ms());
	Context.get_slide_context().set_placeHolder_idx(index);
	
	Context.get_text_context().start_object();
	
	if (PresentationClass == presentation_class::date_time)
	{
		Context.get_text_context().start_field(oox::datetime, L"");
	}
	
	elm->pptx_convert(Context);
	
	std::wstring text_content_ = Context.get_text_context().end_object();

	if (text_content_.length()>0)
	{
		Context.get_slide_context().set_property(_property(L"text-content",text_content_));
	}
	Context.get_slide_context().set_property(_property(L"no_rect",true));
	Context.get_slide_context().end_shape();

}