Skip to content

Commit

Permalink
Add docs from 2.4
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremy-visionaid committed Nov 18, 2024
1 parent 449df1e commit 48b6034
Show file tree
Hide file tree
Showing 9 changed files with 352 additions and 0 deletions.
Binary file added docs/img/LOGO_OpenMcdf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/LOGO_OpenMcdf_H.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/PartialStream.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/read_stream.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/structured_storage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/visit_entries.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/img/write_stream.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
219 changes: 219 additions & 0 deletions docs/index.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="main.css" rel="Stylesheet" />
<title>OpenMCDF - .net component for ole compound file storage format</title>
<meta name="description" content="OpenMCDF is a free structured storage component for .net. MPL licensed, full source included" />
<meta name="keywords" content="Structured storage,compound document, .net, free, component, com, ole" />
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script type="text/javascript">
function hideElement(elemId){
var el = document.getElementById(elemId);
$(el).fadeOut(300);
}

function showElement(elemId){
var el = document.getElementById(elemId);

el.style.top = -10000;
el.style.left= -10000;
el.style.display = "block";

var height = el.scrollHeight;
var width = el.scrollWidth;

el.style.display = "none";

height = height / 2;
height = String("-" + height + "px");

width = width / 2;
width = String("-" + width + "px");

el.style.position="absolute";
el.style.top = "50%";
el.style.left= "50%";
el.style.marginTop = height;
el.style.marginLeft = width;

$(el).fadeIn(300);
}
</script>
</head>
<body>
<div id="container">

<div id="header">
<a href="https://github.com/ironfede/openmcdf" ><img style="border-width:0px" src="img/LOGO_OpenMcdf_H.png" height="60px" width="380px" alt="OpenMCDF Logo" /></a>
</div>
<div id="main">
<h2>
What is OpenMCDF ?
</h2>
<p>
OpenMCDF is a 100% managed .net component that allows client applications to manipulate
COM structured storage files, also known as Microsoft Compound Document Format files.
</p>
<h2>
Ok, so what's 'structured storage' anyway ?
</h2>
<p>
This file format is used under the hood by a lot of applications: the files created
by Microsoft Office until the 2007 product release are all structured storage files.
They include multiple streams of information (document summary, user data) in a
single physical container (the file). Also the omnipresent Thumbs.db, used by Windows as thumbnails
cache, is a structured storage file.
</p>
<h2>
How does it work ?
</h2>
<p>
OpenMCDF makes available to the developer an easy interface to <a href="javascript:showElement('modReadStream');">
read</a>, <a href="javascript:showElement('modWriteStream');">write</a>, add
and remove structured storage primitives. Items are organized
in a <a href="javascript:showElement('modStructuredStorage');">hierarchical tree</a>
where 'storage' nodes act like a directory and 'stream' nodes like a file. Developers
can use OpenMCDF to view storages and streams, <a href="javascript:showElement('modVisitEntries');">
traverse</a> hierarchical trees of items, explore existing compound file and modify them or
create a new compound file from scratch.
</p>
<h2>
...mmm yes, but I've already seen a lot of wrappers...
</h2>

<ul>
<li>OpenMCDF is <strong>NOT</strong> a wrapper component: it's 100% pure C#, nothing else.</li>
<li>There are <strong>NO</strong> ActiveX, COM or P/Invoke dependencies</li>
<li>OpenMCDF supports large files and Version 4 of Compound File Format</li>
<li>Low memory footprint: <a href="javascript:showElement('modIncrementalUpdate');">incremental data updating</a> and <a href="javascript:showElement('modPartialData');">partial stream data reading</a> </li>
<li>Works on Mono platform out of the box</li>
</ul>
<p></p>
<h2>
Well, can I try it ?
</h2>
<p>
You can get OpenMCDF from <a href="https://github.com/ironfede/openmcdf/"><strong>Github</strong></a>
or use <a href="https://nuget.org/packages/OpenMcdf/">NuGet</a> to install it into your projects. OpenMCDF is MPL 2.0 licensed.
</p>
</div>
<div id="footer">
Copyright 2010-2017, Federico Blaseotto
</div>

</div>
<!-- Popup windows -->
<div id="modStructuredStorage" class="modal_popup" style="display: none;">
<div id="fader1" class="fader">
</div>
<div id="imgBlock1" class="popup_block" style="width:350px">
<h3>The structured storage entries tree</h3>
<p>
<br/>
<img src="img/structured_storage.png" width="260px" alt="Structured Storage hierarchy" />
</p>
<div id="imgBlockFooter1" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modStructuredStorage');">Close</a>
</div>
</div>
</div>
</div>
<!-- Popup windows -->
<div id="modReadStream" class="modal_popup" style="display: none;">
<div id="fader2" class="fader">
</div>

<div id="imgBlock2" class="popup_block" style="width:550px">
<h3>Sample code to read a stream entry</h3>
<p>
<img src="img/read_stream.PNG" alt="Stream reading" />
</p>
<div id="imgBlockFooter2" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modReadStream');">Close</a>
</div>
</div>
</div>
</div>
<!-- Popup windows -->
<div id="modWriteStream" class="modal_popup" style="display: none;">
<div id="fader3" class="fader">
</div>

<div id="imgBlock3" class="popup_block" style="width:550px">
<h3>Sample code to write a stream entry</h3>
<p>
<img src="img/write_stream.PNG" alt="Stream writing" />
</p>
<div id="imgBlockFooter3" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modWriteStream');">Close</a>
</div>
</div>
</div>
</div>
<!-- Popup windows -->
<div id="modVisitEntries" class="modal_popup" style="display: none;">
<div id="fader4" class="fader">
</div>
<div id="imgBlock4" class="popup_block" style="width:600px">
<h3>Sample code to traverse entries tree</h3>
<p>
<img src="img/visit_entries.PNG" alt="Structured Storage items visiting" />
</p>
<div id="imgBlockFooter4" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modVisitEntries');">Close</a>
</div>
</div>
</div>
</div>
<!-- Popup windows -->
<div id="modIncrementalUpdate" class="modal_popup" style="display: none;">
<div id="fader5" class="fader">
</div>
<div id="imgBlock5" class="popup_block" style="width:400px">
<div>
<h3>Incremental Update</h3>
<p>
This feature allows to commit changes to file in order to save memory and reduce
the size of subsequent write operations. Only data blocks marked as "dirty" will be
persisted on the storage media (file or stream) while clean data will stay untouched.
This feature is also useful to avoid the need for temporary files while using OpenMCDF.
</p>
</div>
<div id="imgBlockFooter5" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modIncrementalUpdate');">Close</a>
</div>
</div>
</div>
</div>
<!-- Popup windows -->
<div id="modPartialData" class="modal_popup" style="display: none;">
<div id="fader6" class="fader">
</div>
<div id="imgBlock6" class="popup_block" style="width:480px">
<h3>Partial data reading</h3>
<p>
OpenMCDF can load fragments of data streams without a full structure load.
That means that if you want to read 100 bytes from a specified offset
of a 1 GB stream , you will only need to load
<strong>1&nbsp;sector&nbsp;(usually 512 bytes) </strong> of user data and a couple of sectors for FAT indexing.
</p>
<br/>
You will get the <i>required</i> amount of data without being forced to use large buffers
<br/><br/> <div><img src="img/PartialStream.PNG" alt="Structured Storage items visiting" style="width:480px" /></div>
<div id="imgBlockFooter6" class="popup_footer">
<div style="float: right">
<a href="javascript:hideElement('modPartialData');">Close</a>
</div>
</div>
</div>
</div>
</body>
</html>
133 changes: 133 additions & 0 deletions docs/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
body
{
/*overflow:hidden;*/
position: relative;
background-color: white;
/*font-family: Segoe UI;*/
font-family: "wf_SegoeUILight","wf_SegoeUI","Segoe UI Light","Segoe WP Light","Segoe UI","Segoe","Segoe WP","Tahoma","Verdana","Arial","sans-serif";
/*font-weight: lighter;*/
font-size:14pt;
text-align: center;
margin: 0px;
margin-top: 10px;
padding: 0px;
display: block;
}

li
{
margin-top: 3px;
}

div#container
{
margin-top: 0px;
margin-left: auto;
margin-bottom: 14px;
margin-right: auto;
width: 760px;
text-align: center;
}

div#header
{
width: 780px;
height: 120px;
}

div#main
{
width: 780px; /*border-color: green; border-width: 1px; border-style: solid;*/
text-align: justify;
}

div#footer
{
width: 780px; /*border-color: green; border-width: 1px; border-style: solid;*/
font-size: 8pt;
text-align: right;
}

p
{
margin-bottom: 65px;
}

strong
{
font-weight: 600;
}

h1
{
font-size: 16pt;
font-weight: 600;
}

h2
{
font-size: 16pt;
font-weight: bold;
}

#header
{
width: 780px;
height: 130px; /*border-color: red; border-width: 1px; border-style: solid;*/
}

.modal_popup
{

position: absolute;
z-index: 10000;

}

.popup_block
{
border:2px solid;
border-color:Black;
background-color: White;
position:relative;
z-index: 10000;
padding: 30px;
}

.popup_footer
{
position: relative;
background-color: White;
z-index: 10000;
padding-top:20px;
bottom: 0px;
}

.fader
{
background: black;

background: -webkit-gradient(
linear,
right top,
left bottom,
color-stop(0.18, rgb(5,3,0)),
color-stop(0.59, rgb(148,147,143)));

background: -moz-linear-gradient(
right top,
rgb(5,3,0) 18%,
rgb(148,147,143) 59%
);

position: fixed;
width: 100%;
height: 100%;
filter: alpha(opacity=70);
opacity: .70;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
left: 0;
top: 0;
z-index: 10;
}

0 comments on commit 48b6034

Please sign in to comment.