/*
 * Copyright 2007 Google (Dan Hipschman)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "ocidl.idl"

[
    helpstring("Standard Font"),
    progid("StdFont"),
    threading(both),
    uuid(0be35203-8f91-11ce-9de3-00aa004bb851)
]
coclass StdFont { interface IFont; }

[
    helpstring("Obsolete Font"),
    progid("OldFont"),
    threading(both),
    uuid(46763ee0-cab2-11ce-8c20-00aa0051e5d4)
]
coclass OldFont { interface IFont; }

[
    helpstring("Standard Picture"),
    progid("StdPicture"),
    threading(apartment),
    uuid(0be35204-8f91-11ce-9de3-00aa004bb851)
]
coclass StdPicture { interface IPicture; }
