libopc
mce_write.c

Demonstrates basic MCE proprocessing.

#include <opc/opc.h>
#include <mce/textwriter.h>
#include <stdio.h>
#ifdef WIN32
#include <crtdbg.h>
#endif
const char v1_ns[]="http://schemas.openxmlformats.org/Circles/v1";
const char v2_ns[]="http://schemas.openxmlformats.org/Circles/v2";
const char v3_ns[]="http://schemas.openxmlformats.org/Circles/v3";
/*
Produces sample 10-3 from ISO-IEC-29500 Part 3:
<Circles xmlns="http://schemas.openxmlformats.org/Circles/v1"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:v2="http://schemas.openxmlformats.org/Circles/v2"
mc:Ignorable="v2"
mc:ProcessContent="v2:Blink" >
<v2:Watermark Opacity="v0.1">
<Circle Center="0,0" Radius="20" Color="Blue" />
<Circle Center="25,0" Radius="20" Color="Black" />
<Circle Center="50,0" Radius="20" Color="Red" />
</v2:Watermark>
<v2:Blink>
<Circle Center="13,0" Radius="20" Color="Yellow" />
<Circle Center="38,0" Radius="20" Color="Green" />
</v2:Blink>
</Circles>
*/
int main( int argc, const char* argv[] )
{
#ifdef WIN32
_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
if (OPC_ERROR_NONE==opcInitLibrary()) {
if (2==argc) {
opcContainer *c=opcContainerOpen(_X(argv[1]), OPC_OPEN_WRITE_ONLY, NULL, NULL);
opcExtensionRegister(c, _X("xml"), _X("text/xml"));
opcPart part=opcPartCreate(c, _X("sample.xml"), NULL, 0);
mceTextWriter *w=mceTextWriterOpen(c, part, OPC_COMPRESSIONOPTION_FAST);
mceTextWriterProcessContent(w, _X(v2_ns), _X("Blink"));
mceTextWriterStartElement(w, _X(v1_ns), _X("Circles"));
mceTextWriterStartElement(w, _X(v2_ns), _X("Watermark"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Opacity"), "v0.1");
mceTextWriterStartElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Center"), "0,0");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Radius"), "20");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Color"), "Blue");
mceTextWriterEndElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterStartElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Center"), "25,0");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Radius"), "20");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Color"), "Black");
mceTextWriterEndElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterStartElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Center"), "50,0");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Radius"), "20");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Color"), "Red");
mceTextWriterEndElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterEndElement(w, _X(v2_ns), _X("Watermark"));
mceTextWriterStartElement(w, _X(v2_ns), _X("Blink"));
mceTextWriterStartElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Center"), "13,0");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Radius"), "20");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Color"), "Yellow");
mceTextWriterEndElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterStartElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterAttributeF(w, _X(v1_ns), _X("Center"), "38,0");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Radius"), "20");
mceTextWriterAttributeF(w, _X(v1_ns), _X("Color"), "Green");
mceTextWriterEndElement(w, _X(v1_ns), _X("Circle"));
mceTextWriterEndElement(w, _X(v2_ns), _X("Blink"));
mceTextWriterEndElement(w, _X(v1_ns), _X("Circles"));
} else {
printf("mce_write sample.zip\n");
}
}
return 0;
}