зеркало из https://github.com/mozilla/pjs.git
Merge with m-c
This commit is contained in:
Коммит
8332fbce83
|
@ -51,7 +51,6 @@ CPPSRCS = \
|
|||
nsAccessibleWrap.cpp \
|
||||
nsTextAccessibleWrap.cpp \
|
||||
nsDocAccessibleWrap.cpp \
|
||||
nsRootAccessibleWrap.cpp \
|
||||
nsHTMLWin32ObjectAccessible.cpp \
|
||||
nsARIAGridAccessibleWrap.cpp \
|
||||
nsXULMenuAccessibleWrap.cpp \
|
||||
|
|
|
@ -219,10 +219,16 @@ __try {
|
|||
nsIView *rootView;
|
||||
viewManager->GetRootView(rootView);
|
||||
if (rootView == view) {
|
||||
// If the current object has a widget but was created by an
|
||||
// outer object with its own outer window, then
|
||||
// we want the native accessible for that outer window
|
||||
hwnd = ::GetParent(hwnd);
|
||||
// If the client accessible (OBJID_CLIENT) has a window but its window
|
||||
// was created by an outer window then we want the native accessible
|
||||
// for that outer window. If the accessible was created for outer
|
||||
// window (if the outer window has inner windows then they share the
|
||||
// same client accessible with it) then return native accessible for
|
||||
// the outer window.
|
||||
HWND parenthwnd = ::GetParent(hwnd);
|
||||
if (parenthwnd)
|
||||
hwnd = parenthwnd;
|
||||
|
||||
NS_ASSERTION(hwnd, "No window handle for window");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,62 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 2003
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Original Author: Aaron Leventhal (aaronl@netscape.com)
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsRootAccessibleWrap.h"
|
||||
#include "nsIAccessible.h"
|
||||
#include "nsIAccessibleDocument.h"
|
||||
#include "nsIServiceManager.h"
|
||||
|
||||
/* For documentation of the accessibility architecture,
|
||||
* see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsRootAccessibleWrap
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
nsRootAccessibleWrap::
|
||||
nsRootAccessibleWrap(nsIDocument *aDocument, nsIContent *aRootContent,
|
||||
nsIWeakReference *aShell) :
|
||||
nsRootAccessible(aDocument, aRootContent, aShell)
|
||||
{
|
||||
}
|
||||
|
||||
nsRootAccessibleWrap::~nsRootAccessibleWrap()
|
||||
{
|
||||
}
|
||||
|
|
@ -43,15 +43,8 @@
|
|||
#ifndef _nsRootAccessibleWrap_H_
|
||||
#define _nsRootAccessibleWrap_H_
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsRootAccessible.h"
|
||||
|
||||
class nsRootAccessibleWrap: public nsRootAccessible
|
||||
{
|
||||
public:
|
||||
nsRootAccessibleWrap(nsIDocument *aDocument, nsIContent *aRootContent,
|
||||
nsIWeakReference *aShell);
|
||||
virtual ~nsRootAccessibleWrap();
|
||||
};
|
||||
typedef class nsRootAccessible nsRootAccessibleWrap;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -48,14 +48,14 @@
|
|||
label="&openLinkCmdInCurrent.label;"
|
||||
accesskey="&openLinkCmdInCurrent.accesskey;"
|
||||
oncommand="gContextMenu.openLinkInCurrent();"/>
|
||||
<menuitem id="context-openlink"
|
||||
label="&openLinkCmd.label;"
|
||||
accesskey="&openLinkCmd.accesskey;"
|
||||
oncommand="gContextMenu.openLink();"/>
|
||||
<menuitem id="context-openlinkintab"
|
||||
label="&openLinkCmdInTab.label;"
|
||||
accesskey="&openLinkCmdInTab.accesskey;"
|
||||
oncommand="gContextMenu.openLinkInTab();"/>
|
||||
<menuitem id="context-openlink"
|
||||
label="&openLinkCmd.label;"
|
||||
accesskey="&openLinkCmd.accesskey;"
|
||||
oncommand="gContextMenu.openLink();"/>
|
||||
<menuseparator id="context-sep-open"/>
|
||||
<menuitem id="context-bookmarklink"
|
||||
label="&bookmarkThisLinkCmd.label;"
|
||||
|
@ -250,14 +250,14 @@
|
|||
label="&showOnlyThisFrameCmd.label;"
|
||||
accesskey="&showOnlyThisFrameCmd.accesskey;"
|
||||
oncommand="gContextMenu.showOnlyThisFrame();"/>
|
||||
<menuitem id="context-openframe"
|
||||
label="&openFrameCmd.label;"
|
||||
accesskey="&openFrameCmd.accesskey;"
|
||||
oncommand="gContextMenu.openFrame();"/>
|
||||
<menuitem id="context-openframeintab"
|
||||
label="&openFrameCmdInTab.label;"
|
||||
accesskey="&openFrameCmdInTab.accesskey;"
|
||||
oncommand="gContextMenu.openFrameInTab();"/>
|
||||
<menuitem id="context-openframe"
|
||||
label="&openFrameCmd.label;"
|
||||
accesskey="&openFrameCmd.accesskey;"
|
||||
oncommand="gContextMenu.openFrame();"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="context-reloadframe"
|
||||
label="&reloadFrameCmd.label;"
|
||||
|
|
|
@ -42,16 +42,16 @@
|
|||
<menu id="file-menu" label="&fileMenu.label;"
|
||||
accesskey="&fileMenu.accesskey;">
|
||||
<menupopup id="menu_FilePopup">
|
||||
<menuitem id="menu_newNavigator"
|
||||
label="&newNavigatorCmd.label;"
|
||||
accesskey="&newNavigatorCmd.accesskey;"
|
||||
key="key_newNavigator"
|
||||
command="cmd_newNavigator"/>
|
||||
<menuitem id="menu_newNavigatorTab"
|
||||
label="&tabCmd.label;"
|
||||
command="cmd_newNavigatorTab"
|
||||
key="key_newNavigatorTab"
|
||||
accesskey="&tabCmd.accesskey;"/>
|
||||
<menuitem id="menu_newNavigator"
|
||||
label="&newNavigatorCmd.label;"
|
||||
accesskey="&newNavigatorCmd.accesskey;"
|
||||
key="key_newNavigator"
|
||||
command="cmd_newNavigator"/>
|
||||
<menuitem id="menu_openLocation"
|
||||
label="&openLocationCmd.label;"
|
||||
command="Browser:OpenLocation"
|
||||
|
@ -62,17 +62,17 @@
|
|||
command="Browser:OpenFile"
|
||||
key="openFileKb"
|
||||
accesskey="&openFileCmd.accesskey;"/>
|
||||
<menuitem id="menu_close"
|
||||
label="&closeCmd.label;"
|
||||
key="key_close"
|
||||
accesskey="&closeCmd.accesskey;"
|
||||
command="cmd_close"/>
|
||||
<menuitem id="menu_closeWindow"
|
||||
hidden="true"
|
||||
command="cmd_closeWindow"
|
||||
key="key_closeWindow"
|
||||
label="&closeWindow.label;"
|
||||
accesskey="&closeWindow.accesskey;"/>
|
||||
<menuitem id="menu_close"
|
||||
label="&closeCmd.label;"
|
||||
key="key_close"
|
||||
accesskey="&closeCmd.accesskey;"
|
||||
command="cmd_close"/>
|
||||
<menuseparator/>
|
||||
<menuitem id="menu_savePage"
|
||||
label="&savePageCmd.label;"
|
||||
|
|
|
@ -80,8 +80,8 @@
|
|||
<menulist id="openWhereList">
|
||||
<menupopup>
|
||||
<menuitem value="0" id="currentWindow" label="&topTab.label;"/>
|
||||
<menuitem value="1" label="&newWindow.label;"/>
|
||||
<menuitem value="3" label="&newTab.label;"/>
|
||||
<menuitem value="1" label="&newWindow.label;"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
<spacer flex="1"/>
|
||||
|
|
|
@ -54,6 +54,9 @@ var EXPORTED_SYMBOLS = ["style"];
|
|||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var style = {
|
||||
|
||||
|
|
|
@ -14,11 +14,6 @@ function nextLeftElement() elementFromPoint(left(scrollbox) - 1);
|
|||
function nextRightElement() elementFromPoint(right(scrollbox) + 1);
|
||||
|
||||
function test() {
|
||||
if (TabsOnTop.enabled) {
|
||||
todo(false, "need to figure out why this doesn't work with tabs on top on OS X and Windows 7 (bug 575748)");
|
||||
return;
|
||||
}
|
||||
|
||||
waitForExplicitFinish();
|
||||
|
||||
// If the previous (or more) test finished with cleaning up the tabs,
|
||||
|
@ -52,29 +47,29 @@ function runOverflowTests(aEvent) {
|
|||
isLeft(tabContainer.firstChild, "Selecting the first tab scrolls it into view");
|
||||
|
||||
element = nextRightElement();
|
||||
EventUtils.synthesizeMouse(downButton, 0, 0, {});
|
||||
EventUtils.synthesizeMouse(downButton, 1, 1, {});
|
||||
isRight(element, "Scrolled one tab to the right with a single click");
|
||||
|
||||
gBrowser.selectedTab = tabContainer.lastChild;
|
||||
isRight(tabContainer.lastChild, "Selecting the last tab scrolls it into view");
|
||||
|
||||
element = nextLeftElement();
|
||||
EventUtils.synthesizeMouse(upButton, 0, 0, {});
|
||||
EventUtils.synthesizeMouse(upButton, 1, 1, {});
|
||||
isLeft(element, "Scrolled one tab to the left with a single click");
|
||||
|
||||
element = elementFromPoint(left(scrollbox) - width(scrollbox));
|
||||
EventUtils.synthesizeMouse(upButton, 0, 0, {clickCount: 2});
|
||||
EventUtils.synthesizeMouse(upButton, 1, 1, {clickCount: 2});
|
||||
isLeft(element, "Scrolled one page of tabs with a double click");
|
||||
|
||||
EventUtils.synthesizeMouse(upButton, 0, 0, {clickCount: 3});
|
||||
EventUtils.synthesizeMouse(upButton, 1, 1, {clickCount: 3});
|
||||
isLeft(tabContainer.firstChild, "Scrolled to the start with a triple click");
|
||||
|
||||
for (var i = 2; i; i--)
|
||||
EventUtils.synthesizeMouseScroll(scrollbox, 0, 0, {axis: "horizontal", delta: -1});
|
||||
EventUtils.synthesizeMouseScroll(scrollbox, 1, 1, {axis: "horizontal", delta: -1});
|
||||
isLeft(tabContainer.firstChild, "Remained at the start with the mouse wheel");
|
||||
|
||||
element = nextRightElement();
|
||||
EventUtils.synthesizeMouseScroll(scrollbox, 0, 0, {axis: "horizontal", delta: 1});
|
||||
EventUtils.synthesizeMouseScroll(scrollbox, 1, 1, {axis: "horizontal", delta: 1});
|
||||
isRight(element, "Scrolled one tab to the right with the mouse wheel");
|
||||
|
||||
while (tabContainer.childNodes.length > 1)
|
||||
|
|
|
@ -182,8 +182,8 @@ function runTest(testNum) {
|
|||
|
||||
case 3:
|
||||
// Context menu for text link
|
||||
checkContextMenu(["context-openlink", true,
|
||||
"context-openlinkintab", true,
|
||||
checkContextMenu(["context-openlinkintab", true,
|
||||
"context-openlink", true,
|
||||
"---", null,
|
||||
"context-bookmarklink", true,
|
||||
"context-savelink", true,
|
||||
|
@ -303,8 +303,8 @@ function runTest(testNum) {
|
|||
"context-selectall", true,
|
||||
"frame", null,
|
||||
["context-showonlythisframe", true,
|
||||
"context-openframe", true,
|
||||
"context-openframeintab", true,
|
||||
"context-openframe", true,
|
||||
"---", null,
|
||||
"context-reloadframe", true,
|
||||
"---", null,
|
||||
|
|
|
@ -134,12 +134,6 @@
|
|||
default="true"
|
||||
selectiontype="single"
|
||||
selection="link"/>
|
||||
<menuitem id="placesContext_open:newwindow"
|
||||
command="placesCmd_open:window"
|
||||
label="&cmd.open_window.label;"
|
||||
accesskey="&cmd.open_window.accesskey;"
|
||||
selectiontype="single"
|
||||
selection="link"/>
|
||||
<menuitem id="placesContext_open:newtab"
|
||||
command="placesCmd_open:tab"
|
||||
label="&cmd.open_tab.label;"
|
||||
|
@ -162,6 +156,12 @@
|
|||
accesskey="&cmd.open_all_in_tabs.accesskey;"
|
||||
selectiontype="multiple"
|
||||
selection="link"/>
|
||||
<menuitem id="placesContext_open:newwindow"
|
||||
command="placesCmd_open:window"
|
||||
label="&cmd.open_window.label;"
|
||||
accesskey="&cmd.open_window.accesskey;"
|
||||
selectiontype="single"
|
||||
selection="link"/>
|
||||
<menuseparator id="placesContext_openSeparator"/>
|
||||
<menuitem id="placesContext_new:bookmark"
|
||||
command="placesCmd_new:bookmark"
|
||||
|
|
|
@ -1 +1 @@
|
|||
4.0b2pre
|
||||
4.0b3pre
|
||||
|
|
|
@ -288,16 +288,16 @@
|
|||
<!ENTITY searchFocus.commandkey2 "e">
|
||||
<!ENTITY searchFocusUnix.commandkey "j">
|
||||
|
||||
<!ENTITY openLinkCmdInTab.label "Open Link in New Tab">
|
||||
<!ENTITY openLinkCmdInTab.accesskey "T">
|
||||
<!ENTITY openLinkCmd.label "Open Link in New Window">
|
||||
<!ENTITY openLinkCmd.accesskey "W">
|
||||
<!ENTITY openLinkCmdInCurrent.label "Open Link">
|
||||
<!ENTITY openLinkCmdInCurrent.accesskey "O">
|
||||
<!ENTITY openLinkCmdInTab.label "Open Link in New Tab">
|
||||
<!ENTITY openLinkCmdInTab.accesskey "T">
|
||||
<!ENTITY openFrameCmd.label "Open Frame in New Window">
|
||||
<!ENTITY openFrameCmd.accesskey "W">
|
||||
<!ENTITY openFrameCmdInTab.label "Open Frame in New Tab">
|
||||
<!ENTITY openFrameCmdInTab.accesskey "T">
|
||||
<!ENTITY openFrameCmd.label "Open Frame in New Window">
|
||||
<!ENTITY openFrameCmd.accesskey "W">
|
||||
<!ENTITY showOnlyThisFrameCmd.label "Show Only This Frame">
|
||||
<!ENTITY showOnlyThisFrameCmd.accesskey "S">
|
||||
<!ENTITY reloadCmd.commandkey "r">
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
<!ENTITY enter.label "Enter the web location (URL), or specify the local file you would like to open:">
|
||||
<!ENTITY chooseFile.label "Choose File…">
|
||||
<!ENTITY newWindow.label "New Window">
|
||||
<!ENTITY newTab.label "New Tab">
|
||||
<!ENTITY newWindow.label "New Window">
|
||||
<!ENTITY topTab.label "Current Tab">
|
||||
<!ENTITY caption.label "Open Web Location">
|
||||
<!ENTITY openWhere.label "Open in:">
|
||||
|
|
|
@ -10,4 +10,4 @@
|
|||
# hardcoded milestones in the tree from these two files.
|
||||
#--------------------------------------------------------
|
||||
|
||||
2.0b2pre
|
||||
2.0b3pre
|
||||
|
|
|
@ -578,7 +578,7 @@ ifdef SHARED_LIBRARY
|
|||
ifdef IS_COMPONENT
|
||||
EXTRA_DSO_LDOPTS += -bundle
|
||||
else
|
||||
EXTRA_DSO_LDOPTS += -dynamiclib -install_name @loader_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
|
||||
EXTRA_DSO_LDOPTS += -dynamiclib -install_name @executable_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -117,6 +117,12 @@ public:
|
|||
* @param aDocument The owner-document of aContent. Can be null.
|
||||
* @param aContent The piece of content that changed. Is never null.
|
||||
* @param aInfo The structure with information details about the change.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void CharacterDataWillChange(nsIDocument *aDocument,
|
||||
nsIContent* aContent,
|
||||
|
@ -133,6 +139,12 @@ public:
|
|||
* @param aDocument The owner-document of aContent. Can be null.
|
||||
* @param aContent The piece of content that changed. Is never null.
|
||||
* @param aInfo The structure with information details about the change.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void CharacterDataChanged(nsIDocument *aDocument,
|
||||
nsIContent* aContent,
|
||||
|
@ -152,6 +164,12 @@ public:
|
|||
* @param aModType Whether or not the attribute will be added, changed, or
|
||||
* removed. The constants are defined in
|
||||
* nsIDOMMutationEvent.h.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void AttributeWillChange(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
|
@ -169,6 +187,12 @@ public:
|
|||
* @param aModType Whether or not the attribute was added, changed, or
|
||||
* removed. The constants are defined in
|
||||
* nsIDOMMutationEvent.h.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void AttributeChanged(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
|
@ -186,6 +210,12 @@ public:
|
|||
* @param aFirstNewContent the node at aIndexInContainer in aContainer.
|
||||
* @param aNewIndexInContainer the index in the container of the first
|
||||
* new child
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void ContentAppended(nsIDocument *aDocument,
|
||||
nsIContent* aContainer,
|
||||
|
@ -204,6 +234,12 @@ public:
|
|||
* aDocument
|
||||
* @param aChild The newly inserted child.
|
||||
* @param aIndexInContainer The index in the container of the new child.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void ContentInserted(nsIDocument *aDocument,
|
||||
nsIContent* aContainer,
|
||||
|
@ -223,6 +259,12 @@ public:
|
|||
* @param aChild The child that was removed.
|
||||
* @param aIndexInContainer The index in the container which the child used
|
||||
* to have.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to the
|
||||
* observer. The observer is responsible for making sure it stays
|
||||
* alive for the duration of the call as needed. The observer may
|
||||
* assume that this call will happen when there are script blockers on
|
||||
* the stack.
|
||||
*/
|
||||
virtual void ContentRemoved(nsIDocument *aDocument,
|
||||
nsIContent* aContainer,
|
||||
|
@ -241,6 +283,10 @@ public:
|
|||
* removed from the observed node, use the ContentRemoved notification.
|
||||
*
|
||||
* @param aNode The node being destroyed.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to
|
||||
* the observer. The observer is responsible for making sure it
|
||||
* stays alive for the duration of the call as needed.
|
||||
*/
|
||||
virtual void NodeWillBeDestroyed(const nsINode *aNode) = 0;
|
||||
|
||||
|
@ -254,6 +300,10 @@ public:
|
|||
* parent chain changed.
|
||||
*
|
||||
* @param aContent The piece of content that had its parent changed.
|
||||
*
|
||||
* @note Callers of this method might not hold a strong reference to
|
||||
* the observer. The observer is responsible for making sure it
|
||||
* stays alive for the duration of the call as needed.
|
||||
*/
|
||||
|
||||
virtual void ParentChainChanged(nsIContent *aContent) = 0;
|
||||
|
|
|
@ -764,6 +764,8 @@ nsDOMAttribute::AttributeChanged(nsIDocument* aDocument,
|
|||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// Just blow away our mChild and recreate it if needed
|
||||
if (mChild) {
|
||||
static_cast<nsTextNode*>(mChild)->UnbindFromAttribute();
|
||||
|
|
|
@ -2162,9 +2162,79 @@ nsDocument::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel,
|
|||
|
||||
mChannel = aChannel;
|
||||
|
||||
nsresult rv = InitCSP();
|
||||
nsresult rv = CheckFrameOptions();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = InitCSP();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Check if X-Frame-Options permits this document to be loaded as a subdocument.
|
||||
nsresult nsDocument::CheckFrameOptions()
|
||||
{
|
||||
nsAutoString xfoHeaderValue;
|
||||
this->GetHeaderData(nsGkAtoms::headerXFO, xfoHeaderValue);
|
||||
|
||||
// return early if header does not have one of the two values with meaning
|
||||
if (!xfoHeaderValue.LowerCaseEqualsLiteral("deny") &&
|
||||
!xfoHeaderValue.LowerCaseEqualsLiteral("sameorigin"))
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIDocShell> docShell = do_QueryReferent(mDocumentContainer);
|
||||
|
||||
if (docShell) {
|
||||
PRBool framingAllowed = true;
|
||||
|
||||
// We need to check the location of this window and the location of the top
|
||||
// window, if we're not the top. X-F-O: SAMEORIGIN requires that the
|
||||
// document must be same-origin with top window. X-F-O: DENY requires that
|
||||
// the document must never be framed.
|
||||
nsCOMPtr<nsIDOMWindow> thisWindow = do_GetInterface(docShell);
|
||||
nsCOMPtr<nsIDOMWindow> topWindow;
|
||||
thisWindow->GetTop(getter_AddRefs(topWindow));
|
||||
|
||||
// if the document is in the top window, it's not in a frame.
|
||||
if (thisWindow == topWindow)
|
||||
return NS_OK;
|
||||
|
||||
// If the value of the header is DENY, then the document
|
||||
// should never be permitted to load as a subdocument.
|
||||
if (xfoHeaderValue.LowerCaseEqualsLiteral("deny")) {
|
||||
framingAllowed = false;
|
||||
}
|
||||
|
||||
else if (xfoHeaderValue.LowerCaseEqualsLiteral("sameorigin")) {
|
||||
// If the X-Frame-Options value is SAMEORIGIN, then the top frame in the
|
||||
// parent chain must be from the same origin as this document.
|
||||
nsCOMPtr<nsIURI> uri = static_cast<nsIDocument*>(this)->GetDocumentURI();
|
||||
nsCOMPtr<nsIDOMDocument> topDOMDoc;
|
||||
topWindow->GetDocument(getter_AddRefs(topDOMDoc));
|
||||
nsCOMPtr<nsIDocument> topDoc = do_QueryInterface(topDOMDoc);
|
||||
if (topDoc) {
|
||||
nsCOMPtr<nsIURI> topUri = topDoc->GetDocumentURI();
|
||||
nsresult rv = nsContentUtils::GetSecurityManager()->
|
||||
CheckSameOriginURI(uri, topUri, PR_TRUE);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
framingAllowed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!framingAllowed) {
|
||||
// cancel the load and display about:blank
|
||||
mChannel->Cancel(NS_BINDING_ABORTED);
|
||||
nsCOMPtr<nsIWebNavigation> webNav(do_QueryInterface(docShell));
|
||||
if (webNav) {
|
||||
webNav->LoadURI(NS_LITERAL_STRING("about:blank").get(),
|
||||
0, nsnull, nsnull, nsnull);
|
||||
}
|
||||
return NS_ERROR_CONTENT_BLOCKED;
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -5468,13 +5538,9 @@ nsDocument::CloneNode(PRBool aDeep, nsIDOMNode** aReturn)
|
|||
NS_IMETHODIMP
|
||||
nsDocument::Normalize()
|
||||
{
|
||||
PRInt32 count = mChildren.ChildCount();
|
||||
for (PRInt32 i = 0; i < count; ++i) {
|
||||
for (PRInt32 i = 0; i < mChildren.ChildCount(); ++i) {
|
||||
nsCOMPtr<nsIDOMNode> node(do_QueryInterface(mChildren.ChildAt(i)));
|
||||
|
||||
if (node) {
|
||||
node->Normalize();
|
||||
}
|
||||
node->Normalize();
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -6442,6 +6508,7 @@ nsDocument::RetrieveRelevantHeaders(nsIChannel *aChannel)
|
|||
"x-dns-prefetch-control",
|
||||
"x-content-security-policy",
|
||||
"x-content-security-policy-report-only",
|
||||
"x-frame-options",
|
||||
// add more http headers if you need
|
||||
// XXXbz don't add content-location support without reading bug
|
||||
// 238654 and its dependencies/dups first.
|
||||
|
|
|
@ -1019,9 +1019,9 @@ protected:
|
|||
virtual nsPIDOMWindow *GetInnerWindowInternal();
|
||||
virtual nsIScriptGlobalObject* GetScriptHandlingObjectInternal() const;
|
||||
|
||||
#define NS_DOCUMENT_NOTIFY_OBSERVERS(func_, params_) \
|
||||
NS_OBSERVER_ARRAY_NOTIFY_OBSERVERS(mObservers, nsIDocumentObserver, \
|
||||
func_, params_);
|
||||
#define NS_DOCUMENT_NOTIFY_OBSERVERS(func_, params_) \
|
||||
NS_OBSERVER_ARRAY_NOTIFY_XPCOM_OBSERVERS(mObservers, nsIDocumentObserver, \
|
||||
func_, params_);
|
||||
|
||||
#ifdef DEBUG
|
||||
void VerifyRootContentState();
|
||||
|
@ -1143,6 +1143,7 @@ private:
|
|||
void PostUnblockOnloadEvent();
|
||||
void DoUnblockOnload();
|
||||
|
||||
nsresult CheckFrameOptions();
|
||||
nsresult InitCSP();
|
||||
|
||||
/**
|
||||
|
|
|
@ -1025,6 +1025,7 @@ GK_ATOM(wrap, "wrap")
|
|||
GK_ATOM(headerDNSPrefetchControl,"x-dns-prefetch-control")
|
||||
GK_ATOM(headerCSP, "x-content-security-policy")
|
||||
GK_ATOM(headerCSPReportOnly, "x-content-security-policy-report-only")
|
||||
GK_ATOM(headerXFO, "x-frame-options")
|
||||
GK_ATOM(xml, "xml")
|
||||
GK_ATOM(xmlns, "xmlns")
|
||||
GK_ATOM(xmp, "xmp")
|
||||
|
|
|
@ -86,7 +86,6 @@ using namespace mozilla::dom;
|
|||
} while (node); \
|
||||
PR_END_MACRO
|
||||
|
||||
|
||||
void
|
||||
nsNodeUtils::CharacterDataWillChange(nsIContent* aContent,
|
||||
CharacterDataChangeInfo* aInfo)
|
||||
|
|
|
@ -353,6 +353,8 @@ nsRange::ParentChainChanged(nsIContent *aContent)
|
|||
NS_ASSERTION(newRoot, "No valid boundary or root found!");
|
||||
NS_ASSERTION(newRoot == IsValidBoundary(mEndParent),
|
||||
"Start parent and end parent give different root!");
|
||||
// This is safe without holding a strong ref to self as long as the change
|
||||
// of mRoot is the last thing in DoSetRange.
|
||||
DoSetRange(mStartParent, mStartOffset, mEndParent, mEndOffset, newRoot);
|
||||
}
|
||||
|
||||
|
@ -473,6 +475,8 @@ nsRange::DoSetRange(nsINode* aStartN, PRInt32 aStartOffset,
|
|||
mEndParent = aEndN;
|
||||
mEndOffset = aEndOffset;
|
||||
mIsPositioned = !!mStartParent;
|
||||
// This needs to be the last thing this function does. See comment
|
||||
// in ParentChainChanged.
|
||||
mRoot = aRoot;
|
||||
}
|
||||
|
||||
|
|
|
@ -341,15 +341,12 @@ nsAttributeTextNode::AttributeChanged(nsIDocument* aDocument,
|
|||
{
|
||||
if (aNameSpaceID == mNameSpaceID && aAttribute == mAttrName &&
|
||||
aContent == mGrandparent) {
|
||||
// Since UpdateText notifies, do it asynchronously. Note that if we get
|
||||
// unbound while the event is up that's ok -- we'll just have no
|
||||
// grandparent when it fires, and will do nothing.
|
||||
// XXXbz ideally we'd either process this on layout flushes or do it right
|
||||
// after nsIMutationObserver notifications are over or something, instead
|
||||
// of doing it fully async.
|
||||
// Since UpdateText notifies, do it when it's safe to run script. Note
|
||||
// that if we get unbound while the event is up that's ok -- we'll just
|
||||
// have no grandparent when it fires, and will do nothing.
|
||||
void (nsAttributeTextNode::*update)() = &nsAttributeTextNode::UpdateText;
|
||||
nsCOMPtr<nsIRunnable> ev = NS_NewRunnableMethod(this, update);
|
||||
NS_DispatchToCurrentThread(ev);
|
||||
nsContentUtils::AddScriptRunner(ev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -403,6 +403,9 @@ _TEST_FILES2 = \
|
|||
file_websocket_wsh.py \
|
||||
file_websocket_http_resource.txt \
|
||||
test_bug574596.html \
|
||||
test_x-frame-options.html \
|
||||
file_x-frame-options_main.html \
|
||||
file_x-frame-options_page.sjs \
|
||||
$(NULL)
|
||||
|
||||
# This test fails on the Mac for some reason
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>X-Frame-Options tests</title>
|
||||
<script type="text/javascript">
|
||||
// This frame loading means all subframes have either loaded or errored out. We
|
||||
// can now tell the test harness to check each subframe for the expected result.
|
||||
window.addEventListener('load', parent.testFramesLoaded, false);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<iframe id="control1" src="http://mochi.test:8888/tests/content/base/test/file_x-frame-options_page.sjs?testid=control1"></iframe><br>
|
||||
<iframe id="control2" src="http://example.com/tests/content/base/test/file_x-frame-options_page.sjs?testid=control2"></iframe><br>
|
||||
<iframe id="deny" src="http://mochi.test:8888/tests/content/base/test/file_x-frame-options_page.sjs?testid=deny&xfo=deny"></iframe><br>
|
||||
<iframe id="sameorigin1" src="http://mochi.test:8888/tests/content/base/test/file_x-frame-options_page.sjs?testid=sameorigin1&xfo=sameorigin"></iframe><br>
|
||||
<iframe id="sameorigin2" src="http://example.com/tests/content/base/test/file_x-frame-options_page.sjs?testid=sameorigin2&xfo=sameorigin"></iframe><br>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,25 @@
|
|||
// SJS file for X-Frame-Options mochitests
|
||||
function handleRequest(request, response)
|
||||
{
|
||||
var query = {};
|
||||
request.queryString.split('&').forEach(function (val) {
|
||||
var [name, value] = val.split('=');
|
||||
query[name] = unescape(value);
|
||||
});
|
||||
|
||||
response.setHeader("Cache-Control", "no-cache", false);
|
||||
response.setHeader("Content-Type", "text/html", false);
|
||||
|
||||
// X-Frame-Options header value
|
||||
if (query['xfo'] == "deny") {
|
||||
for (var i = 0 ; i < 0x7fffff ; i++) { }
|
||||
response.setHeader("X-Frame-Options", "DENY", false);
|
||||
}
|
||||
else if (query['xfo'] == "sameorigin") {
|
||||
response.setHeader("X-Frame-Options", "SAMEORIGIN", false);
|
||||
}
|
||||
|
||||
// from the test harness we'll be checking for the presence of this element
|
||||
// to test if the page loaded
|
||||
response.write("<h1 id=\"test\">" + query["testid"] + "</h1>");
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test for X-Frame-Options response header</title>
|
||||
<script type="text/javascript" src="/MochiKit/packed.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none">
|
||||
|
||||
</div>
|
||||
|
||||
<iframe style="width:100%;height:300px;" id="harness"></iframe>
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
var path = "/tests/content/base/test/";
|
||||
// contains { test_frame_id : expected_result }
|
||||
var testExpectedResults = { "control1": true,
|
||||
"control2": true,
|
||||
"deny": false,
|
||||
"sameorigin1": true,
|
||||
"sameorigin2": false
|
||||
};
|
||||
|
||||
var testFramesLoaded = function() {
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
var harness = document.getElementById("harness");
|
||||
|
||||
for (var t in testExpectedResults) {
|
||||
var frame = harness.contentDocument.getElementById(t);
|
||||
// test if frame loaded by checking for a contentDocument we can access
|
||||
test = frame.contentDocument.getElementById("test");
|
||||
is(test != null, testExpectedResults[t], "test "+t);
|
||||
}
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
// load the test harness
|
||||
document.getElementById("harness").src = "file_x-frame-options_main.html";
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -306,6 +306,8 @@ PRBool nsXMLEventsManager::RemoveListener(nsIContent * aContent)
|
|||
|
||||
void nsXMLEventsManager::AddListeners(nsIDocument* aDocument)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
nsIContent *cur;
|
||||
for (int i = 0; i < mIncomplete.Count(); ++i) {
|
||||
cur = mIncomplete[i];
|
||||
|
@ -315,41 +317,21 @@ void nsXMLEventsManager::AddListeners(nsIDocument* aDocument)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsXMLEventsManager::BeginUpdate(nsIDocument* aDocument, nsUpdateType aUpdateType) {}
|
||||
void
|
||||
nsXMLEventsManager::EndUpdate(nsIDocument* aDocument, nsUpdateType aUpdateType) {}
|
||||
void
|
||||
nsXMLEventsManager::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
mIncomplete.Clear();
|
||||
mListeners.Enumerate(EnumAndUnregisterListener, this);
|
||||
mListeners.Clear();
|
||||
}
|
||||
|
||||
void
|
||||
nsXMLEventsManager::BeginLoad(nsIDocument* aDocument) {}
|
||||
|
||||
void
|
||||
nsXMLEventsManager::EndLoad(nsIDocument* aDocument)
|
||||
{
|
||||
AddListeners(aDocument);
|
||||
}
|
||||
NS_IMPL_NSIDOCUMENTOBSERVER_STATE_STUB(nsXMLEventsManager)
|
||||
void
|
||||
nsXMLEventsManager::CharacterDataWillChange(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
CharacterDataChangeInfo* aInfo) {}
|
||||
void
|
||||
nsXMLEventsManager::CharacterDataChanged(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
CharacterDataChangeInfo* aInfo) {}
|
||||
void
|
||||
nsXMLEventsManager::AttributeWillChange(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
PRInt32 aNameSpaceID,
|
||||
nsIAtom* aAttribute,
|
||||
PRInt32 aModType) {}
|
||||
|
||||
void
|
||||
nsXMLEventsManager::AttributeChanged(nsIDocument* aDocument,
|
||||
nsIContent* aContent,
|
||||
|
@ -357,6 +339,8 @@ nsXMLEventsManager::AttributeChanged(nsIDocument* aDocument,
|
|||
nsIAtom* aAttribute,
|
||||
PRInt32 aModType)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
if (aNameSpaceID == kNameSpaceID_XMLEvents &&
|
||||
(aAttribute == nsGkAtoms::event ||
|
||||
aAttribute == nsGkAtoms::handler ||
|
||||
|
@ -423,6 +407,8 @@ nsXMLEventsManager::ContentRemoved(nsIDocument* aDocument,
|
|||
//And to remember: the same observer can be referenced by many
|
||||
//XMLEventsListeners
|
||||
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
//If the content was an XML Events observer or handler
|
||||
mListeners.Enumerate(EnumAndSetIncomplete, aChild);
|
||||
|
||||
|
@ -437,11 +423,3 @@ nsXMLEventsManager::ContentRemoved(nsIDocument* aDocument,
|
|||
ContentRemoved(aDocument, aChild, aChild->GetChildAt(i), i);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsXMLEventsManager::ParentChainChanged(nsIContent *aContent)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_NSIDOCUMENTOBSERVER_STYLE_STUB(nsXMLEventsManager)
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "nsIDOMEventListener.h"
|
||||
#include "nsInterfaceHashtable.h"
|
||||
#include "nsIAtom.h"
|
||||
#include "nsStubDocumentObserver.h"
|
||||
|
||||
/*
|
||||
* The implementation of the XML Events Basic profile
|
||||
|
@ -89,12 +90,18 @@ private:
|
|||
|
||||
};
|
||||
|
||||
class nsXMLEventsManager : public nsIDocumentObserver {
|
||||
class nsXMLEventsManager : public nsStubDocumentObserver {
|
||||
public:
|
||||
nsXMLEventsManager();
|
||||
~nsXMLEventsManager();
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIDOCUMENTOBSERVER
|
||||
|
||||
NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED
|
||||
virtual void EndLoad(nsIDocument* aDocument);
|
||||
NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
|
||||
NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
|
||||
NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
|
||||
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
|
||||
|
||||
void AddXMLEventsContent(nsIContent * aContent);
|
||||
void RemoveXMLEventsContent(nsIContent * aContent);
|
||||
|
|
|
@ -986,6 +986,9 @@ nsHTMLTextAreaElement::ContentChanged(nsIContent* aContent)
|
|||
{
|
||||
if (!mValueChanged && mDoneAddingChildren &&
|
||||
nsContentUtils::IsInSameAnonymousTree(this, aContent)) {
|
||||
// Hard to say what the reset can trigger, so be safe pending
|
||||
// further auditing.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -241,6 +241,7 @@ nsSVGUseElement::ContentRemoved(nsIDocument *aDocument,
|
|||
void
|
||||
nsSVGUseElement::NodeWillBeDestroyed(const nsINode *aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
UnlinkSource();
|
||||
}
|
||||
|
||||
|
|
|
@ -231,6 +231,7 @@ nsXPathResult::SnapshotItem(PRUint32 aIndex, nsIDOMNode **aResult)
|
|||
void
|
||||
nsXPathResult::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
// Set to null to avoid unregistring unnecessarily
|
||||
mDocument = nsnull;
|
||||
Invalidate(aNode->IsNodeOfType(nsINode::eCONTENT) ?
|
||||
|
@ -380,11 +381,12 @@ nsXPathResult::Invalidate(const nsIContent* aChangeRoot)
|
|||
}
|
||||
}
|
||||
|
||||
mInvalidIteratorState = PR_TRUE;
|
||||
// Make sure nulling out mDocument is the last thing we do.
|
||||
if (mDocument) {
|
||||
mDocument->RemoveMutationObserver(this);
|
||||
mDocument = nsnull;
|
||||
}
|
||||
mInvalidIteratorState = PR_TRUE;
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
|
|
@ -1208,6 +1208,7 @@ txMozillaXSLTProcessor::ensureStylesheet()
|
|||
void
|
||||
txMozillaXSLTProcessor::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
if (NS_FAILED(mCompileResult)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -988,6 +988,8 @@ nsXULDocument::AttributeWillChange(nsIDocument* aDocument,
|
|||
// See if we need to update our ref map.
|
||||
if (aAttribute == nsGkAtoms::ref ||
|
||||
(aAttribute == nsGkAtoms::id && !aContent->GetIDAttributeName())) {
|
||||
// Might not need this, but be safe for now.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
RemoveElementFromRefMap(aContent->AsElement());
|
||||
}
|
||||
}
|
||||
|
@ -999,6 +1001,9 @@ nsXULDocument::AttributeChanged(nsIDocument* aDocument,
|
|||
{
|
||||
NS_ASSERTION(aDocument == this, "unexpected doc");
|
||||
|
||||
// Might not need this, but be safe for now.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// XXXbz once we change AttributeChanged to take Element, we can nix this line
|
||||
Element* aElement = aElementContent->AsElement();
|
||||
|
||||
|
@ -1097,6 +1102,9 @@ nsXULDocument::ContentAppended(nsIDocument* aDocument,
|
|||
{
|
||||
NS_ASSERTION(aDocument == this, "unexpected doc");
|
||||
|
||||
// Might not need this, but be safe for now.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// Update our element map
|
||||
nsresult rv = NS_OK;
|
||||
for (nsIContent* cur = aFirstNewContent; cur && NS_SUCCEEDED(rv);
|
||||
|
@ -1113,6 +1121,9 @@ nsXULDocument::ContentInserted(nsIDocument* aDocument,
|
|||
{
|
||||
NS_ASSERTION(aDocument == this, "unexpected doc");
|
||||
|
||||
// Might not need this, but be safe for now.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
AddSubtreeToDocument(aChild);
|
||||
}
|
||||
|
||||
|
@ -1124,6 +1135,9 @@ nsXULDocument::ContentRemoved(nsIDocument* aDocument,
|
|||
{
|
||||
NS_ASSERTION(aDocument == this, "unexpected doc");
|
||||
|
||||
// Might not need this, but be safe for now.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
RemoveSubtreeFromDocument(aChild);
|
||||
}
|
||||
|
||||
|
|
|
@ -1562,6 +1562,8 @@ nsXULContentBuilder::AttributeChanged(nsIDocument* aDocument,
|
|||
nsIAtom* aAttribute,
|
||||
PRInt32 aModType)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// Handle "open" and "close" cases. We do this handling before
|
||||
// we've notified the observer, so that content is already created
|
||||
// for the frame system to walk.
|
||||
|
@ -1590,6 +1592,7 @@ nsXULContentBuilder::AttributeChanged(nsIDocument* aDocument,
|
|||
void
|
||||
nsXULContentBuilder::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
// Break circular references
|
||||
mContentSupportMap.Clear();
|
||||
|
||||
|
|
|
@ -1086,6 +1086,7 @@ nsXULTreeBuilder::PerformActionOnCell(const PRUnichar* aAction, PRInt32 aRow, ns
|
|||
void
|
||||
nsXULTreeBuilder::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
if (mObservers)
|
||||
mObservers->Clear();
|
||||
|
||||
|
|
|
@ -5839,6 +5839,8 @@ nsHTMLEditor::ShouldReplaceRootElement()
|
|||
void
|
||||
nsHTMLEditor::ResetRootElementAndEventTarget()
|
||||
{
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// Need to remove the event listeners first because BeginningOfDocument
|
||||
// could set a new root (and event target is set by InstallEventListeners())
|
||||
// and we won't be able to remove them from the old event target then.
|
||||
|
|
|
@ -198,12 +198,14 @@ public:
|
|||
ImageContainer* GetContainer() { return mContainer; }
|
||||
gfxPattern::GraphicsFilter GetFilter() { return mFilter; }
|
||||
|
||||
NS_LAYER_DECL_NAME("ImageLayer", TYPE_IMAGE)
|
||||
MOZ_LAYER_DECL_NAME("ImageLayer", TYPE_IMAGE)
|
||||
|
||||
protected:
|
||||
ImageLayer(LayerManager* aManager, void* aImplData)
|
||||
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
nsRefPtr<ImageContainer> mContainer;
|
||||
gfxPattern::GraphicsFilter mFilter;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,384 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* vim: sw=2 ts=8 et :
|
||||
*/
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at:
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is Mozilla Code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* The Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2010
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Chris Jones <jones.chris.g@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "ImageLayers.h"
|
||||
#include "Layers.h"
|
||||
|
||||
#ifdef MOZ_LAYERS_HAVE_LOG
|
||||
FILE*
|
||||
FILEOrDefault(FILE* aFile)
|
||||
{
|
||||
return aFile ? aFile : stderr;
|
||||
}
|
||||
#endif // MOZ_LAYERS_HAVE_LOG
|
||||
|
||||
namespace {
|
||||
|
||||
// XXX pretty general utilities, could centralize
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const gfxPattern::GraphicsFilter& f,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
switch (f) {
|
||||
case gfxPattern::FILTER_FAST: s += "fast"; break;
|
||||
case gfxPattern::FILTER_GOOD: s += "good"; break;
|
||||
case gfxPattern::FILTER_BEST: s += "best"; break;
|
||||
case gfxPattern::FILTER_NEAREST: s += "nearest"; break;
|
||||
case gfxPattern::FILTER_BILINEAR: s += "bilinear"; break;
|
||||
case gfxPattern::FILTER_GAUSSIAN: s += "gaussian"; break;
|
||||
default:
|
||||
NS_ERROR("unknown filter type");
|
||||
s += "???";
|
||||
}
|
||||
return s += sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const gfxRGBA& c,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString(
|
||||
128, "rgba(%d, %d, %d, %g)",
|
||||
PRUint8(c.r*255.0), PRUint8(c.g*255.0), PRUint8(c.b*255.0), c.a);
|
||||
return s += sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const gfx3DMatrix& m,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
if (m.IsIdentity())
|
||||
s += "[ I ]";
|
||||
else {
|
||||
gfxMatrix matrix;
|
||||
if (m.Is2D(&matrix)) {
|
||||
s += nsPrintfCString(
|
||||
"[ %g %g; %g %g; %g %g; ]",
|
||||
96, matrix.xx, matrix.yx, matrix.xy, matrix.yy, matrix.x0, matrix.y0);
|
||||
} else {
|
||||
s += nsPrintfCString(
|
||||
256, "[ %g %g %g %g; %g %g %g %g; %g %g %g %g; %g %g %g %g; ]",
|
||||
m._11, m._12, m._13, m._14,
|
||||
m._21, m._22, m._23, m._24,
|
||||
m._31, m._32, m._33, m._34,
|
||||
m._41, m._42, m._43, m._44);
|
||||
}
|
||||
}
|
||||
return s += sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRect& r,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
s += nsPrintfCString(
|
||||
256, "(x=%d, y=%d, w=%d, h=%d)",
|
||||
r.x, r.y, r.width, r.height);
|
||||
return s += sfx;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
AppendToString(nsACString& s, const nsIntRegion& r,
|
||||
const char* pfx="", const char* sfx="")
|
||||
{
|
||||
s += pfx;
|
||||
|
||||
nsIntRegionRectIterator it(r);
|
||||
s += "< ";
|
||||
while (const nsIntRect* sr = it.Next())
|
||||
AppendToString(s, *sr) += "; ";
|
||||
s += ">";
|
||||
|
||||
return s += sfx;
|
||||
}
|
||||
|
||||
} // namespace <anon>
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
//--------------------------------------------------
|
||||
// Layer
|
||||
|
||||
PRBool
|
||||
Layer::CanUseOpaqueSurface()
|
||||
{
|
||||
// If the visible content in the layer is opaque, there is no need
|
||||
// for an alpha channel.
|
||||
if (IsOpaqueContent())
|
||||
return PR_TRUE;
|
||||
// Also, if this layer is the bottommost layer in a container which
|
||||
// doesn't need an alpha channel, we can use an opaque surface for this
|
||||
// layer too. Any transparent areas must be covered by something else
|
||||
// in the container.
|
||||
ContainerLayer* parent = GetParent();
|
||||
return parent && parent->GetFirstChild() == this &&
|
||||
parent->CanUseOpaqueSurface();
|
||||
}
|
||||
|
||||
#ifdef MOZ_LAYERS_HAVE_LOG
|
||||
|
||||
void
|
||||
Layer::Dump(FILE* aFile, const char* aPrefix)
|
||||
{
|
||||
DumpSelf(aFile, aPrefix);
|
||||
|
||||
if (Layer* kid = GetFirstChild()) {
|
||||
nsCAutoString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
kid->Dump(aFile, pfx.get());
|
||||
}
|
||||
|
||||
if (Layer* next = GetNextSibling())
|
||||
next->Dump(aFile, aPrefix);
|
||||
}
|
||||
|
||||
void
|
||||
Layer::DumpSelf(FILE* aFile, const char* aPrefix)
|
||||
{
|
||||
nsCAutoString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
fprintf(FILEOrDefault(aFile), "%s\n", str.get());
|
||||
}
|
||||
|
||||
void
|
||||
Layer::Log(const char* aPrefix)
|
||||
{
|
||||
if (!IsLogEnabled())
|
||||
return;
|
||||
|
||||
LogSelf(aPrefix);
|
||||
|
||||
if (Layer* kid = GetFirstChild()) {
|
||||
nsCAutoString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
kid->Log(pfx.get());
|
||||
}
|
||||
|
||||
if (Layer* next = GetNextSibling())
|
||||
next->Log(aPrefix);
|
||||
}
|
||||
|
||||
void
|
||||
Layer::LogSelf(const char* aPrefix)
|
||||
{
|
||||
if (!IsLogEnabled())
|
||||
return;
|
||||
|
||||
nsCAutoString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", str.get()));
|
||||
}
|
||||
|
||||
nsACString&
|
||||
Layer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
aTo += nsPrintfCString(64, "%s%s (0x%p)", mManager->Name(), Name(), this);
|
||||
|
||||
if (!mVisibleRegion.IsEmpty())
|
||||
AppendToString(aTo, mVisibleRegion, " [visible=", "]");
|
||||
if (!mTransform.IsIdentity())
|
||||
AppendToString(aTo, mTransform, " [transform=", "]");
|
||||
if (1.0 != mOpacity)
|
||||
aTo.AppendPrintf(" [opacity=%g]", mOpacity);
|
||||
if (IsOpaqueContent())
|
||||
aTo += " [opaqueContent]";
|
||||
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ThebesLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
return mValidRegion.IsEmpty() ?
|
||||
aTo : AppendToString(aTo, mValidRegion, " [valid=", "]");
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ColorLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
AppendToString(aTo, mColor, " [color=", "]");
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
CanvasLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
AppendToString(aTo, mFilter, " [filter=", "]");
|
||||
return aTo;
|
||||
}
|
||||
|
||||
nsACString&
|
||||
ImageLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
Layer::PrintInfo(aTo, aPrefix);
|
||||
AppendToString(aTo, mFilter, " [filter=", "]");
|
||||
return aTo;
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
// LayerManager
|
||||
|
||||
void
|
||||
LayerManager::Dump(FILE* aFile, const char* aPrefix)
|
||||
{
|
||||
FILE* file = FILEOrDefault(aFile);
|
||||
|
||||
DumpSelf(file, aPrefix);
|
||||
|
||||
nsCAutoString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
if (!mRoot) {
|
||||
fprintf(file, "%s(null)", pfx.get());
|
||||
return;
|
||||
}
|
||||
|
||||
mRoot->Dump(file, pfx.get());
|
||||
}
|
||||
|
||||
void
|
||||
LayerManager::DumpSelf(FILE* aFile, const char* aPrefix)
|
||||
{
|
||||
nsCAutoString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
fprintf(FILEOrDefault(aFile), "%s\n", str.get());
|
||||
}
|
||||
|
||||
void
|
||||
LayerManager::Log(const char* aPrefix)
|
||||
{
|
||||
if (!IsLogEnabled())
|
||||
return;
|
||||
|
||||
LogSelf(aPrefix);
|
||||
|
||||
nsCAutoString pfx(aPrefix);
|
||||
pfx += " ";
|
||||
if (!mRoot) {
|
||||
MOZ_LAYERS_LOG(("%s(null)", pfx.get()));
|
||||
return;
|
||||
}
|
||||
|
||||
mRoot->Log(pfx.get());
|
||||
}
|
||||
|
||||
void
|
||||
LayerManager::LogSelf(const char* aPrefix)
|
||||
{
|
||||
nsCAutoString str;
|
||||
PrintInfo(str, aPrefix);
|
||||
MOZ_LAYERS_LOG(("%s", str.get()));
|
||||
}
|
||||
|
||||
nsACString&
|
||||
LayerManager::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{
|
||||
aTo += aPrefix;
|
||||
return aTo += nsPrintfCString(64, "%sLayerManager (0x%p)", Name(), this);
|
||||
}
|
||||
|
||||
/*static*/ void
|
||||
LayerManager::InitLog()
|
||||
{
|
||||
if (!sLog)
|
||||
sLog = PR_NewLogModule("Layers");
|
||||
}
|
||||
|
||||
/*static*/ bool
|
||||
LayerManager::IsLogEnabled()
|
||||
{
|
||||
NS_ABORT_IF_FALSE(!!sLog,
|
||||
"layer manager must be created before logging is allowed");
|
||||
return PR_LOG_TEST(sLog, PR_LOG_DEBUG);
|
||||
}
|
||||
|
||||
#else // !MOZ_LAYERS_HAVE_LOG
|
||||
|
||||
void Layer::Dump(FILE* aFile, const char* aPrefix) {}
|
||||
void Layer::DumpSelf(FILE* aFile, const char* aPrefix) {}
|
||||
void Layer::Log(const char* aPrefix) {}
|
||||
void Layer::LogSelf(const char* aPrefix) {}
|
||||
nsACString&
|
||||
Layer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
nsACString&
|
||||
ThebesLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
nsACString&
|
||||
ColorLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
nsACString&
|
||||
CanvasLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
nsACString&
|
||||
ImageLayer::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
void LayerManager::Dump(FILE* aFile, const char* aPrefix) {}
|
||||
void LayerManager::DumpSelf(FILE* aFile, const char* aPrefix) {}
|
||||
void LayerManager::Log(const char* aPrefix) {}
|
||||
void LayerManager::LogSelf(const char* aPrefix) {}
|
||||
|
||||
nsACString&
|
||||
LayerManager::PrintInfo(nsACString& aTo, const char* aPrefix)
|
||||
{ return aTo; }
|
||||
|
||||
/*static*/ void LayerManager::InitLog() {}
|
||||
/*static*/ bool LayerManager::IsLogEnabled() { return false; }
|
||||
|
||||
#endif // MOZ_LAYERS_HAVE_LOG
|
||||
|
||||
PRLogModuleInfo* LayerManager::sLog;
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
|
@ -49,6 +49,17 @@
|
|||
#include "gfxColor.h"
|
||||
#include "gfxPattern.h"
|
||||
|
||||
#if defined(DEBUG) || defined(PR_LOGGING)
|
||||
# include <stdio.h> // FILE
|
||||
# include "prlog.h"
|
||||
# define MOZ_LAYERS_HAVE_LOG
|
||||
# define MOZ_LAYERS_LOG(_args) \
|
||||
PR_LOG(LayerManager::GetLog(), PR_LOG_DEBUG, _args)
|
||||
#else
|
||||
struct PRLogModuleInfo;
|
||||
# define MOZ_LAYERS_LOG(_args)
|
||||
#endif // if defined(DEBUG) || defined(PR_LOGGING)
|
||||
|
||||
class gfxContext;
|
||||
class nsPaintEvent;
|
||||
|
||||
|
@ -67,9 +78,9 @@ class ColorLayer;
|
|||
class ImageContainer;
|
||||
class CanvasLayer;
|
||||
|
||||
#define NS_LAYER_DECL_NAME(n, e) \
|
||||
virtual const char* Name() { return n; } \
|
||||
virtual LayerType GetType() { return e; }
|
||||
#define MOZ_LAYER_DECL_NAME(n, e) \
|
||||
virtual const char* Name() const { return n; } \
|
||||
virtual LayerType GetType() const { return e; }
|
||||
|
||||
/*
|
||||
* Motivation: For truly smooth animation and video playback, we need to
|
||||
|
@ -130,7 +141,10 @@ public:
|
|||
LAYERS_D3D9
|
||||
};
|
||||
|
||||
LayerManager() : mUserData(nsnull) {}
|
||||
LayerManager() : mUserData(nsnull)
|
||||
{
|
||||
InitLog();
|
||||
}
|
||||
virtual ~LayerManager() {}
|
||||
|
||||
/**
|
||||
|
@ -242,9 +256,47 @@ public:
|
|||
void SetUserData(void* aData) { mUserData = aData; }
|
||||
void* GetUserData() { return mUserData; }
|
||||
|
||||
// We always declare the following logging symbols, because it's
|
||||
// extremely tricky to conditionally declare them. However, for
|
||||
// ifndef MOZ_LAYERS_HAVE_LOG builds, they only have trivial
|
||||
// definitions in Layers.cpp.
|
||||
virtual const char* Name() const { return "???"; }
|
||||
|
||||
/**
|
||||
* Dump information about this layer manager and its managed tree to
|
||||
* aFile, which defaults to stderr.
|
||||
*/
|
||||
void Dump(FILE* aFile=NULL, const char* aPrefix="");
|
||||
/**
|
||||
* Dump information about just this layer manager itself to aFile,
|
||||
* which defaults to stderr.
|
||||
*/
|
||||
void DumpSelf(FILE* aFile=NULL, const char* aPrefix="");
|
||||
|
||||
/**
|
||||
* Log information about this layer manager and its managed tree to
|
||||
* the NSPR log (if enabled for "Layers").
|
||||
*/
|
||||
void Log(const char* aPrefix="");
|
||||
/**
|
||||
* Log information about just this layer manager itself to the NSPR
|
||||
* log (if enabled for "Layers").
|
||||
*/
|
||||
void LogSelf(const char* aPrefix="");
|
||||
|
||||
static bool IsLogEnabled();
|
||||
static PRLogModuleInfo* GetLog() { return sLog; }
|
||||
|
||||
protected:
|
||||
nsRefPtr<Layer> mRoot;
|
||||
void* mUserData;
|
||||
|
||||
// Print interesting information about this into aTo. Internally
|
||||
// used to implement Dump*() and Log*().
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
static void InitLog();
|
||||
static PRLogModuleInfo* sLog;
|
||||
};
|
||||
|
||||
class ThebesLayer;
|
||||
|
@ -354,6 +406,13 @@ public:
|
|||
virtual Layer* GetFirstChild() { return nsnull; }
|
||||
const gfx3DMatrix& GetTransform() { return mTransform; }
|
||||
|
||||
// Returns true if it's OK to save the contents of aLayer in an
|
||||
// opaque surface (a surface without an alpha channel).
|
||||
// If we can use a surface without an alpha channel, we should, because
|
||||
// it will often make painting of antialiased text faster and higher
|
||||
// quality.
|
||||
PRBool CanUseOpaqueSurface();
|
||||
|
||||
// This setter and getter can be used anytime. The user data is initially
|
||||
// null.
|
||||
void SetUserData(void* aData) { mUserData = aData; }
|
||||
|
@ -365,10 +424,8 @@ public:
|
|||
*/
|
||||
virtual ThebesLayer* AsThebesLayer() { return nsnull; }
|
||||
|
||||
#ifdef DEBUG
|
||||
virtual const char* Name() = 0;
|
||||
#endif
|
||||
virtual LayerType GetType() = 0;
|
||||
virtual const char* Name() const =0;
|
||||
virtual LayerType GetType() const =0;
|
||||
|
||||
/**
|
||||
* Only the implementation should call this. This is per-implementation
|
||||
|
@ -384,6 +441,30 @@ public:
|
|||
void SetNextSibling(Layer* aSibling) { mNextSibling = aSibling; }
|
||||
void SetPrevSibling(Layer* aSibling) { mPrevSibling = aSibling; }
|
||||
|
||||
/**
|
||||
* Dump information about this layer manager and its managed tree to
|
||||
* aFile, which defaults to stderr.
|
||||
*/
|
||||
void Dump(FILE* aFile=NULL, const char* aPrefix="");
|
||||
/**
|
||||
* Dump information about just this layer manager itself to aFile,
|
||||
* which defaults to stderr.
|
||||
*/
|
||||
void DumpSelf(FILE* aFile=NULL, const char* aPrefix="");
|
||||
|
||||
/**
|
||||
* Log information about this layer manager and its managed tree to
|
||||
* the NSPR log (if enabled for "Layers").
|
||||
*/
|
||||
void Log(const char* aPrefix="");
|
||||
/**
|
||||
* Log information about just this layer manager itself to the NSPR
|
||||
* log (if enabled for "Layers").
|
||||
*/
|
||||
void LogSelf(const char* aPrefix="");
|
||||
|
||||
static bool IsLogEnabled() { return LayerManager::IsLogEnabled(); }
|
||||
|
||||
protected:
|
||||
Layer(LayerManager* aManager, void* aImplData) :
|
||||
mManager(aManager),
|
||||
|
@ -397,6 +478,13 @@ protected:
|
|||
mIsOpaqueContent(PR_FALSE)
|
||||
{}
|
||||
|
||||
// Print interesting information about this into aTo. Internally
|
||||
// used to implement Dump*() and Log*(). If subclasses have
|
||||
// additional interesting properties, they should override this with
|
||||
// an implementation that first calls the base implementation then
|
||||
// appends additional info to aTo.
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
LayerManager* mManager;
|
||||
ContainerLayer* mParent;
|
||||
Layer* mNextSibling;
|
||||
|
@ -439,12 +527,14 @@ public:
|
|||
|
||||
virtual ThebesLayer* AsThebesLayer() { return this; }
|
||||
|
||||
NS_LAYER_DECL_NAME("ThebesLayer", TYPE_THEBES)
|
||||
MOZ_LAYER_DECL_NAME("ThebesLayer", TYPE_THEBES)
|
||||
|
||||
protected:
|
||||
ThebesLayer(LayerManager* aManager, void* aImplData)
|
||||
: Layer(aManager, aImplData) {}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
nsIntRegion mValidRegion;
|
||||
};
|
||||
|
||||
|
@ -472,7 +562,7 @@ public:
|
|||
// This getter can be used anytime.
|
||||
virtual Layer* GetFirstChild() { return mFirstChild; }
|
||||
|
||||
NS_LAYER_DECL_NAME("ContainerLayer", TYPE_CONTAINER)
|
||||
MOZ_LAYER_DECL_NAME("ContainerLayer", TYPE_CONTAINER)
|
||||
|
||||
protected:
|
||||
ContainerLayer(LayerManager* aManager, void* aImplData)
|
||||
|
@ -502,7 +592,7 @@ public:
|
|||
// This getter can be used anytime.
|
||||
virtual const gfxRGBA& GetColor() { return mColor; }
|
||||
|
||||
NS_LAYER_DECL_NAME("ColorLayer", TYPE_COLOR)
|
||||
MOZ_LAYER_DECL_NAME("ColorLayer", TYPE_COLOR)
|
||||
|
||||
protected:
|
||||
ColorLayer(LayerManager* aManager, void* aImplData)
|
||||
|
@ -510,6 +600,8 @@ protected:
|
|||
mColor(0.0, 0.0, 0.0, 0.0)
|
||||
{}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
gfxRGBA mColor;
|
||||
};
|
||||
|
||||
|
@ -570,12 +662,14 @@ public:
|
|||
void SetFilter(gfxPattern::GraphicsFilter aFilter) { mFilter = aFilter; }
|
||||
gfxPattern::GraphicsFilter GetFilter() const { return mFilter; }
|
||||
|
||||
NS_LAYER_DECL_NAME("CanvasLayer", TYPE_CANVAS)
|
||||
MOZ_LAYER_DECL_NAME("CanvasLayer", TYPE_CANVAS)
|
||||
|
||||
protected:
|
||||
CanvasLayer(LayerManager* aManager, void* aImplData)
|
||||
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
|
||||
|
||||
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
|
||||
|
||||
gfxPattern::GraphicsFilter mFilter;
|
||||
};
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ EXPORTS = \
|
|||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
Layers.cpp \
|
||||
BasicImages.cpp \
|
||||
BasicLayers.cpp \
|
||||
ThebesLayerBuffer.cpp \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
|
@ -43,8 +43,9 @@
|
|||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
static void
|
||||
ClipToRegion(gfxContext* aContext, const nsIntRegion& aRegion)
|
||||
/*static*/ void
|
||||
ThebesLayerBuffer::ClipToRegion(gfxContext* aContext,
|
||||
const nsIntRegion& aRegion)
|
||||
{
|
||||
aContext->NewPath();
|
||||
nsIntRegionRectIterator iter(aRegion);
|
||||
|
@ -124,34 +125,19 @@ WrapRotationAxis(PRInt32* aRotationPoint, PRInt32 aSize)
|
|||
}
|
||||
}
|
||||
|
||||
static already_AddRefed<gfxASurface>
|
||||
CreateBuffer(gfxASurface* aTargetSurface, gfxASurface::gfxContentType aType,
|
||||
const nsIntSize& aSize)
|
||||
{
|
||||
return aTargetSurface->CreateSimilarSurface(aType, gfxIntSize(aSize.width, aSize.height));
|
||||
}
|
||||
|
||||
ThebesLayerBuffer::PaintState
|
||||
ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
||||
gfxASurface* aReferenceSurface,
|
||||
PRUint32 aFlags)
|
||||
ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer, ContentType aContentType)
|
||||
{
|
||||
PaintState result;
|
||||
|
||||
result.mRegionToDraw.Sub(aLayer->GetVisibleRegion(), aLayer->GetValidRegion());
|
||||
|
||||
gfxASurface::gfxContentType desiredContentType = gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
if (aReferenceSurface->AreSimilarSurfacesSensitiveToContentType()) {
|
||||
if (aFlags & OPAQUE_CONTENT) {
|
||||
desiredContentType = gfxASurface::CONTENT_COLOR;
|
||||
}
|
||||
if (mBuffer && desiredContentType != mBuffer->GetContentType()) {
|
||||
// We're effectively clearing the valid region, so we need to draw
|
||||
// the entire visible region now.
|
||||
result.mRegionToDraw = aLayer->GetVisibleRegion();
|
||||
result.mRegionToInvalidate = aLayer->GetValidRegion();
|
||||
Clear();
|
||||
}
|
||||
if (mBuffer && aContentType != mBuffer->GetContentType()) {
|
||||
// We're effectively clearing the valid region, so we need to draw
|
||||
// the entire visible region now.
|
||||
result.mRegionToDraw = aLayer->GetVisibleRegion();
|
||||
result.mRegionToInvalidate = aLayer->GetValidRegion();
|
||||
Clear();
|
||||
}
|
||||
|
||||
if (result.mRegionToDraw.IsEmpty())
|
||||
|
@ -162,8 +148,7 @@ ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
|||
nsRefPtr<gfxASurface> destBuffer;
|
||||
nsIntRect destBufferRect;
|
||||
|
||||
if (mBufferRect.width >= visibleBounds.width &&
|
||||
mBufferRect.height >= visibleBounds.height) {
|
||||
if (BufferSizeOkFor(visibleBounds.Size())) {
|
||||
// The current buffer is big enough to hold the visible area.
|
||||
if (mBufferRect.Contains(visibleBounds)) {
|
||||
// We don't need to adjust mBufferRect.
|
||||
|
@ -196,8 +181,7 @@ ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
|||
// We can't do a real self-copy because the buffer is rotated.
|
||||
// So allocate a new buffer for the destination.
|
||||
destBufferRect = visibleBounds;
|
||||
destBuffer = CreateBuffer(aReferenceSurface, desiredContentType,
|
||||
destBufferRect.Size());
|
||||
destBuffer = CreateBuffer(aContentType, destBufferRect.Size());
|
||||
if (!destBuffer)
|
||||
return result;
|
||||
}
|
||||
|
@ -215,8 +199,7 @@ ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
|||
} else {
|
||||
// The buffer's not big enough, so allocate a new one
|
||||
destBufferRect = visibleBounds;
|
||||
destBuffer = CreateBuffer(aReferenceSurface, desiredContentType,
|
||||
destBufferRect.Size());
|
||||
destBuffer = CreateBuffer(aContentType, destBufferRect.Size());
|
||||
if (!destBuffer)
|
||||
return result;
|
||||
}
|
||||
|
@ -256,7 +239,7 @@ ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
|||
result.mContext->Translate(-gfxPoint(quadrantRect.x, quadrantRect.y));
|
||||
|
||||
ClipToRegion(result.mContext, result.mRegionToDraw);
|
||||
if (desiredContentType == gfxASurface::CONTENT_COLOR_ALPHA && !isClear) {
|
||||
if (aContentType == gfxASurface::CONTENT_COLOR_ALPHA && !isClear) {
|
||||
result.mContext->SetOperator(gfxContext::OPERATOR_CLEAR);
|
||||
result.mContext->Paint();
|
||||
result.mContext->SetOperator(gfxContext::OPERATOR_OVER);
|
||||
|
@ -264,18 +247,6 @@ ThebesLayerBuffer::BeginPaint(ThebesLayer* aLayer,
|
|||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
ThebesLayerBuffer::DrawTo(ThebesLayer* aLayer, PRUint32 aFlags, gfxContext* aTarget, float aOpacity)
|
||||
{
|
||||
aTarget->Save();
|
||||
ClipToRegion(aTarget, aLayer->GetVisibleRegion());
|
||||
if (aFlags & OPAQUE_CONTENT) {
|
||||
aTarget->SetOperator(gfxContext::OPERATOR_SOURCE);
|
||||
}
|
||||
DrawBufferWithRotation(aTarget, aOpacity);
|
||||
aTarget->Restore();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
|
@ -67,11 +67,27 @@ class ThebesLayer;
|
|||
*/
|
||||
class ThebesLayerBuffer {
|
||||
public:
|
||||
ThebesLayerBuffer() : mBufferRotation(0,0)
|
||||
typedef gfxASurface::gfxContentType ContentType;
|
||||
|
||||
/**
|
||||
* Controls the size of the backing buffer of this.
|
||||
* - SizedToVisibleBounds: the backing buffer is exactly the same
|
||||
* size as the bounds of ThebesLayer's visible region
|
||||
* - ContainsVisibleBounds: the backing buffer is large enough to
|
||||
* fit visible bounds. May be larger.
|
||||
*/
|
||||
enum BufferSizePolicy {
|
||||
SizedToVisibleBounds,
|
||||
ContainsVisibleBounds
|
||||
};
|
||||
|
||||
ThebesLayerBuffer(BufferSizePolicy aBufferSizePolicy)
|
||||
: mBufferRotation(0,0)
|
||||
, mBufferSizePolicy(aBufferSizePolicy)
|
||||
{
|
||||
MOZ_COUNT_CTOR(ThebesLayerBuffer);
|
||||
}
|
||||
~ThebesLayerBuffer()
|
||||
virtual ~ThebesLayerBuffer()
|
||||
{
|
||||
MOZ_COUNT_DTOR(ThebesLayerBuffer);
|
||||
}
|
||||
|
@ -99,13 +115,7 @@ public:
|
|||
nsIntRegion mRegionToDraw;
|
||||
nsIntRegion mRegionToInvalidate;
|
||||
};
|
||||
/**
|
||||
* Pass OPAQUE_CONTENT when we have determined that everything visible
|
||||
* in the buffer will be rendered with opaque pixels.
|
||||
*/
|
||||
enum {
|
||||
OPAQUE_CONTENT = 0x01
|
||||
};
|
||||
|
||||
/**
|
||||
* Start a drawing operation. This returns a PaintState describing what
|
||||
* needs to be drawn to bring the buffer up to date in the visible region.
|
||||
|
@ -113,16 +123,14 @@ public:
|
|||
* The returned mContext may be null if mRegionToDraw is empty.
|
||||
* Otherwise it must not be null.
|
||||
* mRegionToInvalidate will contain mRegionToDraw.
|
||||
* @param aReferenceSurface if we need to create a buffer, we'll create
|
||||
* a surface that's similar to aReferenceSurface
|
||||
*/
|
||||
PaintState BeginPaint(ThebesLayer* aLayer, gfxASurface* aReferenceSurface,
|
||||
PRUint32 aFlags);
|
||||
PaintState BeginPaint(ThebesLayer* aLayer, ContentType aContentType);
|
||||
|
||||
/**
|
||||
* Complete the drawing operation. The region to draw must have been drawn
|
||||
* before this is called. The contents of the buffer are drawn to aTarget.
|
||||
* Return a new surface of |aSize| and |aType|.
|
||||
*/
|
||||
void DrawTo(ThebesLayer* aLayer, PRUint32 aFlags, gfxContext* aTarget, float aOpacity);
|
||||
virtual already_AddRefed<gfxASurface>
|
||||
CreateBuffer(ContentType aType, const nsIntSize& aSize) = 0;
|
||||
|
||||
/**
|
||||
* Get the underlying buffer, if any. This is useful because we can pass
|
||||
|
@ -132,6 +140,9 @@ public:
|
|||
gfxASurface* GetBuffer() { return mBuffer; }
|
||||
|
||||
protected:
|
||||
// XXX make me a general utility
|
||||
static void ClipToRegion(gfxContext* aContext, const nsIntRegion& aRegion);
|
||||
|
||||
enum XSide {
|
||||
LEFT, RIGHT
|
||||
};
|
||||
|
@ -142,7 +153,17 @@ protected:
|
|||
void DrawBufferQuadrant(gfxContext* aTarget, XSide aXSide, YSide aYSide, float aOpacity);
|
||||
void DrawBufferWithRotation(gfxContext* aTarget, float aOpacity);
|
||||
|
||||
const nsIntRect& BufferRect() const { return mBufferRect; }
|
||||
const nsIntPoint& BufferRotation() const { return mBufferRotation; }
|
||||
|
||||
private:
|
||||
PRBool BufferSizeOkFor(const nsIntSize& aSize)
|
||||
{
|
||||
return (aSize == mBufferRect.Size() ||
|
||||
(SizedToVisibleBounds != mBufferSizePolicy &&
|
||||
aSize < mBufferRect.Size()));
|
||||
}
|
||||
|
||||
nsRefPtr<gfxASurface> mBuffer;
|
||||
/** The area of the ThebesLayer that is covered by the buffer as a whole */
|
||||
nsIntRect mBufferRect;
|
||||
|
@ -157,6 +178,7 @@ private:
|
|||
* buffer at the other end, not 2D rotation!
|
||||
*/
|
||||
nsIntPoint mBufferRotation;
|
||||
BufferSizePolicy mBufferSizePolicy;
|
||||
};
|
||||
|
||||
}
|
|
@ -214,32 +214,11 @@ BasicContainerLayer::RemoveChildInternal(Layer* aChild)
|
|||
NS_RELEASE(aChild);
|
||||
}
|
||||
|
||||
// Returns true if it's OK to save the contents of aLayer in an
|
||||
// opaque surface (a surface without an alpha channel).
|
||||
// If we can use a surface without an alpha channel, we should, because
|
||||
// it will often make painting of antialiased text faster and higher
|
||||
// quality.
|
||||
static PRBool
|
||||
UseOpaqueSurface(Layer* aLayer)
|
||||
{
|
||||
// If the visible content in the layer is opaque, there is no need
|
||||
// for an alpha channel.
|
||||
if (aLayer->IsOpaqueContent())
|
||||
return PR_TRUE;
|
||||
// Also, if this layer is the bottommost layer in a container which
|
||||
// doesn't need an alpha channel, we can use an opaque surface for this
|
||||
// layer too. Any transparent areas must be covered by something else
|
||||
// in the container.
|
||||
BasicContainerLayer* parent =
|
||||
static_cast<BasicContainerLayer*>(aLayer->GetParent());
|
||||
return parent && parent->GetFirstChild() == aLayer &&
|
||||
UseOpaqueSurface(parent);
|
||||
}
|
||||
|
||||
class BasicThebesLayer : public ThebesLayer, BasicImplData {
|
||||
public:
|
||||
BasicThebesLayer(BasicLayerManager* aLayerManager) :
|
||||
ThebesLayer(aLayerManager, static_cast<BasicImplData*>(this))
|
||||
ThebesLayer(aLayerManager, static_cast<BasicImplData*>(this)),
|
||||
mBuffer(this)
|
||||
{
|
||||
MOZ_COUNT_CTOR(BasicThebesLayer);
|
||||
}
|
||||
|
@ -272,7 +251,52 @@ protected:
|
|||
return static_cast<BasicLayerManager*>(mManager);
|
||||
}
|
||||
|
||||
ThebesLayerBuffer mBuffer;
|
||||
class Buffer : public ThebesLayerBuffer {
|
||||
public:
|
||||
Buffer(BasicThebesLayer* aLayer)
|
||||
: ThebesLayerBuffer(ContainsVisibleBounds)
|
||||
, mLayer(aLayer)
|
||||
{}
|
||||
|
||||
/**
|
||||
* Complete the drawing operation. The region to draw must have been
|
||||
* drawn before this is called. The contents of the buffer are drawn
|
||||
* to aTarget.
|
||||
*/
|
||||
void DrawTo(PRBool aIsOpaqueContent, gfxContext* aTarget, float aOpacity);
|
||||
|
||||
virtual already_AddRefed<gfxASurface>
|
||||
CreateBuffer(ContentType aType, const nsIntSize& aSize)
|
||||
{
|
||||
return mLayer->CreateBuffer(aType, aSize);
|
||||
}
|
||||
|
||||
private:
|
||||
BasicThebesLayer* mLayer;
|
||||
};
|
||||
|
||||
virtual already_AddRefed<gfxASurface>
|
||||
CreateBuffer(Buffer::ContentType aType, const nsIntSize& aSize)
|
||||
{
|
||||
nsRefPtr<gfxASurface> referenceSurface = mBuffer.GetBuffer();
|
||||
if (!referenceSurface) {
|
||||
gfxContext* defaultTarget = BasicManager()->GetDefaultTarget();
|
||||
if (defaultTarget) {
|
||||
referenceSurface = defaultTarget->CurrentSurface();
|
||||
} else {
|
||||
nsIWidget* widget = BasicManager()->GetRetainerWidget();
|
||||
if (widget) {
|
||||
referenceSurface = widget->GetThebesSurface();
|
||||
} else {
|
||||
referenceSurface = BasicManager()->GetTarget()->CurrentSurface();
|
||||
}
|
||||
}
|
||||
}
|
||||
return referenceSurface->CreateSimilarSurface(
|
||||
aType, gfxIntSize(aSize.width, aSize.height));
|
||||
}
|
||||
|
||||
Buffer mBuffer;
|
||||
};
|
||||
|
||||
static void
|
||||
|
@ -318,28 +342,16 @@ BasicThebesLayer::Paint(gfxContext* aContext,
|
|||
return;
|
||||
}
|
||||
|
||||
PRUint32 flags = 0;
|
||||
if (UseOpaqueSurface(this)) {
|
||||
flags |= ThebesLayerBuffer::OPAQUE_CONTENT;
|
||||
}
|
||||
|
||||
nsRefPtr<gfxASurface> targetSurface = aContext->CurrentSurface();
|
||||
PRBool isOpaqueContent =
|
||||
(targetSurface->AreSimilarSurfacesSensitiveToContentType() &&
|
||||
aOpacity == 1.0 &&
|
||||
CanUseOpaqueSurface());
|
||||
{
|
||||
nsRefPtr<gfxASurface> referenceSurface = mBuffer.GetBuffer();
|
||||
if (!referenceSurface) {
|
||||
gfxContext* defaultTarget = BasicManager()->GetDefaultTarget();
|
||||
if (defaultTarget) {
|
||||
referenceSurface = defaultTarget->CurrentSurface();
|
||||
} else {
|
||||
nsIWidget* widget = BasicManager()->GetRetainerWidget();
|
||||
if (widget) {
|
||||
referenceSurface = widget->GetThebesSurface();
|
||||
} else {
|
||||
referenceSurface = aContext->CurrentSurface();
|
||||
}
|
||||
}
|
||||
}
|
||||
ThebesLayerBuffer::PaintState state =
|
||||
mBuffer.BeginPaint(this, referenceSurface, flags);
|
||||
Buffer::ContentType contentType =
|
||||
isOpaqueContent ? gfxASurface::CONTENT_COLOR :
|
||||
gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
Buffer::PaintState state = mBuffer.BeginPaint(this, contentType);
|
||||
mValidRegion.Sub(mValidRegion, state.mRegionToInvalidate);
|
||||
|
||||
if (state.mContext) {
|
||||
|
@ -359,7 +371,21 @@ BasicThebesLayer::Paint(gfxContext* aContext,
|
|||
}
|
||||
}
|
||||
|
||||
mBuffer.DrawTo(this, flags, target, aOpacity);
|
||||
mBuffer.DrawTo(isOpaqueContent, target, aOpacity);
|
||||
}
|
||||
|
||||
void
|
||||
BasicThebesLayer::Buffer::DrawTo(PRBool aIsOpaqueContent,
|
||||
gfxContext* aTarget,
|
||||
float aOpacity)
|
||||
{
|
||||
aTarget->Save();
|
||||
ClipToRegion(aTarget, mLayer->GetVisibleRegion());
|
||||
if (aIsOpaqueContent) {
|
||||
aTarget->SetOperator(gfxContext::OPERATOR_SOURCE);
|
||||
}
|
||||
DrawBufferWithRotation(aTarget, aOpacity);
|
||||
aTarget->Restore();
|
||||
}
|
||||
|
||||
class BasicImageLayer : public ImageLayer, BasicImplData {
|
||||
|
@ -812,6 +838,11 @@ BasicLayerManager::PopGroupWithCachedSurface(gfxContext *aTarget,
|
|||
void
|
||||
BasicLayerManager::BeginTransactionWithTarget(gfxContext* aTarget)
|
||||
{
|
||||
#ifdef MOZ_LAYERS_HAVE_LOG
|
||||
MOZ_LAYERS_LOG(("[----- BeginTransaction"));
|
||||
Log();
|
||||
#endif
|
||||
|
||||
NS_ASSERTION(!InTransaction(), "Nested transactions not allowed");
|
||||
#ifdef DEBUG
|
||||
mPhase = PHASE_CONSTRUCTION;
|
||||
|
@ -823,6 +854,11 @@ void
|
|||
BasicLayerManager::EndTransaction(DrawThebesLayerCallback aCallback,
|
||||
void* aCallbackData)
|
||||
{
|
||||
#ifdef MOZ_LAYERS_HAVE_LOG
|
||||
Log();
|
||||
MOZ_LAYERS_LOG(("]----- EndTransaction"));
|
||||
#endif
|
||||
|
||||
NS_ASSERTION(InConstruction(), "Should be in construction phase");
|
||||
#ifdef DEBUG
|
||||
mPhase = PHASE_DRAWING;
|
||||
|
@ -925,7 +961,7 @@ BasicLayerManager::PaintLayer(Layer* aLayer,
|
|||
// area first to minimize the size of the temporary surface.
|
||||
ClipToContain(mTarget, aLayer->GetVisibleRegion().GetBounds());
|
||||
|
||||
gfxASurface::gfxContentType type = UseOpaqueSurface(aLayer)
|
||||
gfxASurface::gfxContentType type = aLayer->CanUseOpaqueSurface()
|
||||
? gfxASurface::CONTENT_COLOR : gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
mTarget->PushGroup(type);
|
||||
}
|
||||
|
|
|
@ -129,6 +129,9 @@ public:
|
|||
gfxContext* GetTarget() { return mTarget; }
|
||||
PRBool IsRetained() { return mWidget != nsnull; }
|
||||
|
||||
#ifdef MOZ_LAYERS_HAVE_LOG
|
||||
virtual const char* Name() const { return "Basic"; }
|
||||
#endif // MOZ_LAYERS_HAVE_LOG
|
||||
private:
|
||||
// Paints aLayer to mTarget.
|
||||
void PaintLayer(Layer* aLayer,
|
||||
|
|
|
@ -50,29 +50,6 @@ namespace layers {
|
|||
|
||||
using namespace mozilla::gl;
|
||||
|
||||
// Returns true if it's OK to save the contents of aLayer in an
|
||||
// opaque surface (a surface without an alpha channel).
|
||||
// If we can use a surface without an alpha channel, we should, because
|
||||
// it will often make painting of antialiased text faster and higher
|
||||
// quality.
|
||||
static PRBool
|
||||
UseOpaqueSurface(Layer* aLayer)
|
||||
{
|
||||
// If the visible content in the layer is opaque, there is no need
|
||||
// for an alpha channel.
|
||||
if (aLayer->IsOpaqueContent())
|
||||
return PR_TRUE;
|
||||
// Also, if this layer is the bottommost layer in a container which
|
||||
// doesn't need an alpha channel, we can use an opaque surface for this
|
||||
// layer too. Any transparent areas must be covered by something else
|
||||
// in the container.
|
||||
ContainerLayerOGL* parent =
|
||||
static_cast<ContainerLayerOGL*>(aLayer->GetParent());
|
||||
return parent && parent->GetFirstChild() == aLayer &&
|
||||
UseOpaqueSurface(parent);
|
||||
}
|
||||
|
||||
|
||||
ThebesLayerOGL::ThebesLayerOGL(LayerManagerOGL *aManager)
|
||||
: ThebesLayer(aManager, nsnull)
|
||||
, LayerOGL(aManager)
|
||||
|
@ -92,8 +69,8 @@ ThebesLayerOGL::EnsureSurface()
|
|||
{
|
||||
nsIntSize visibleSize = mVisibleRegion.GetBounds().Size();
|
||||
TextureImage::ContentType contentType =
|
||||
UseOpaqueSurface(this) ? gfxASurface::CONTENT_COLOR :
|
||||
gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
CanUseOpaqueSurface() ? gfxASurface::CONTENT_COLOR :
|
||||
gfxASurface::CONTENT_COLOR_ALPHA;
|
||||
if (!mTexImage ||
|
||||
mTexImage->GetSize() != visibleSize ||
|
||||
mTexImage->GetContentType() != contentType)
|
||||
|
@ -189,7 +166,7 @@ ThebesLayerOGL::RenderLayer(int aPreviousFrameBuffer,
|
|||
// Note BGR: Cairo's image surfaces are always in what
|
||||
// OpenGL and our shaders consider BGR format.
|
||||
ColorTextureLayerProgram *program =
|
||||
UseOpaqueSurface(this)
|
||||
CanUseOpaqueSurface()
|
||||
? mOGLManager->GetBGRXLayerProgram()
|
||||
: mOGLManager->GetBGRALayerProgram();
|
||||
|
||||
|
|
|
@ -89,6 +89,13 @@ struct nsIntSize {
|
|||
PRBool operator!=(const nsIntSize& aSize) const {
|
||||
return (PRBool) ((width != aSize.width) || (height != aSize.height));
|
||||
}
|
||||
PRBool operator<(const nsIntSize& aSize) const {
|
||||
return (PRBool) (operator<=(aSize) &&
|
||||
(width < aSize.width || height < aSize.height));
|
||||
}
|
||||
PRBool operator<=(const nsIntSize& aSize) const {
|
||||
return (PRBool) ((width <= aSize.width) && (height <= aSize.height));
|
||||
}
|
||||
|
||||
void SizeTo(PRInt32 aWidth, PRInt32 aHeight) {width = aWidth; height = aHeight;}
|
||||
};
|
||||
|
|
|
@ -277,6 +277,7 @@ CPPSRCS += \
|
|||
gfxFT2Fonts.cpp \
|
||||
gfxFT2FontBase.cpp \
|
||||
gfxFT2Utils.cpp \
|
||||
gfxFT2FontList.cpp \
|
||||
nsUnicodeRange.cpp \
|
||||
$(NULL)
|
||||
endif
|
||||
|
|
|
@ -58,6 +58,8 @@
|
|||
#include "ft2build.h"
|
||||
#include FT_FREETYPE_H
|
||||
#include "gfxFT2Fonts.h"
|
||||
#include "gfxPlatformFontList.h"
|
||||
#include "gfxFT2FontList.h"
|
||||
|
||||
static FT_Library gPlatformFTLibrary = NULL;
|
||||
|
||||
|
@ -225,6 +227,15 @@ gfxAndroidPlatform::ResolveFontName(const nsAString& aFontName,
|
|||
if (aFontName.IsEmpty())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsAutoString resolvedName;
|
||||
gfxPlatformFontList* platformFontList = gfxPlatformFontList::PlatformFontList();
|
||||
if (platformFontList) {
|
||||
if (!platformFontList->ResolveFontName(aFontName, resolvedName)) {
|
||||
aAborted = PR_FALSE;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
nsAutoString keyName(aFontName);
|
||||
ToLowerCase(keyName);
|
||||
|
||||
|
@ -256,12 +267,40 @@ gfxAndroidPlatform::GetStandardFamilyName(const nsAString& aFontName, nsAString&
|
|||
return ResolveFontName(aFontName, SimpleResolverCallback, &aFamilyName, aborted);
|
||||
}
|
||||
|
||||
gfxPlatformFontList*
|
||||
gfxAndroidPlatform::CreatePlatformFontList()
|
||||
{
|
||||
return new gfxFT2FontList();
|
||||
}
|
||||
|
||||
PRBool
|
||||
gfxAndroidPlatform::IsFontFormatSupported(nsIURI *aFontURI, PRUint32 aFormatFlags)
|
||||
{
|
||||
// check for strange format flags
|
||||
NS_ASSERTION(!(aFormatFlags & gfxUserFontSet::FLAG_FORMAT_NOT_USED),
|
||||
"strange font format hint set");
|
||||
|
||||
// accept supported formats
|
||||
if (aFormatFlags & (gfxUserFontSet::FLAG_FORMAT_OPENTYPE |
|
||||
gfxUserFontSet::FLAG_FORMAT_TRUETYPE)) {
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
// reject all other formats, known and unknown
|
||||
if (aFormatFlags != 0) {
|
||||
return PR_FALSE;
|
||||
}
|
||||
|
||||
// no format hint set, need to look at data
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
gfxFontGroup *
|
||||
gfxAndroidPlatform::CreateFontGroup(const nsAString &aFamilies,
|
||||
const gfxFontStyle *aStyle,
|
||||
gfxUserFontSet* aUserFontSet)
|
||||
{
|
||||
return new gfxFT2FontGroup(aFamilies, aStyle);
|
||||
return new gfxFT2FontGroup(aFamilies, aStyle, aUserFontSet);
|
||||
}
|
||||
|
||||
FT_Library
|
||||
|
@ -332,6 +371,15 @@ gfxAndroidPlatform::FindFontForChar(PRUint32 aCh, gfxFont *aFont)
|
|||
return nsnull;
|
||||
}
|
||||
|
||||
gfxFontEntry*
|
||||
gfxAndroidPlatform::MakePlatformFont(const gfxProxyFontEntry *aProxyEntry,
|
||||
const PRUint8 *aFontData, PRUint32 aLength)
|
||||
{
|
||||
return gfxPlatformFontList::PlatformFontList()->MakePlatformFont(aProxyEntry,
|
||||
aFontData,
|
||||
aLength);
|
||||
}
|
||||
|
||||
PRBool
|
||||
gfxAndroidPlatform::GetPrefFontEntries(const nsCString& aKey, nsTArray<nsRefPtr<gfxFontEntry> > *aFontEntryList)
|
||||
{
|
||||
|
|
|
@ -62,6 +62,11 @@ public:
|
|||
already_AddRefed<gfxASurface> CreateOffscreenSurface(const gfxIntSize& size,
|
||||
gfxASurface::gfxImageFormat imageFormat);
|
||||
|
||||
virtual PRBool IsFontFormatSupported(nsIURI *aFontURI, PRUint32 aFormatFlags);
|
||||
virtual gfxPlatformFontList* CreatePlatformFontList();
|
||||
virtual gfxFontEntry* MakePlatformFont(const gfxProxyFontEntry *aProxyEntry,
|
||||
const PRUint8 *aFontData, PRUint32 aLength);
|
||||
|
||||
nsresult GetFontList(nsIAtom *aLangGroup,
|
||||
const nsACString& aGenericFamily,
|
||||
nsTArray<nsString>& aListOfFonts);
|
||||
|
|
|
@ -55,9 +55,9 @@
|
|||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsAppDirectoryServiceDefs.h"
|
||||
#include "nsISimpleEnumerator.h"
|
||||
#include "nsIWindowsRegKey.h"
|
||||
|
||||
#ifdef XP_WIN
|
||||
#include "nsIWindowsRegKey.h"
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
|
@ -67,14 +67,23 @@
|
|||
static PRLogModuleInfo *gFontInfoLog = PR_NewLogModule("fontInfoLog");
|
||||
#endif /* PR_LOGGING */
|
||||
|
||||
#ifdef ANDROID
|
||||
#include "gfxAndroidPlatform.h"
|
||||
#include <dirent.h>
|
||||
#include <android/log.h>
|
||||
#define ALOG(args...) __android_log_print(ANDROID_LOG_INFO, "Gecko" , ## args)
|
||||
|
||||
#endif
|
||||
#define LOG(args) PR_LOG(gFontInfoLog, PR_LOG_DEBUG, args)
|
||||
#define LOG_ENABLED() PR_LOG_TEST(gFontInfoLog, PR_LOG_DEBUG)
|
||||
|
||||
static __inline void
|
||||
BuildKeyNameFromFontName(nsAString &aName)
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
if (aName.Length() >= LF_FACESIZE)
|
||||
aName.Truncate(LF_FACESIZE - 1);
|
||||
#endif
|
||||
ToLowerCase(aName);
|
||||
}
|
||||
|
||||
|
@ -102,14 +111,22 @@ gfxFT2FontList::gfxFT2FontList()
|
|||
void
|
||||
gfxFT2FontList::AppendFacesFromFontFile(const PRUnichar *aFileName)
|
||||
{
|
||||
char fileName[MAX_PATH];
|
||||
WideCharToMultiByte(CP_ACP, 0, aFileName, -1, fileName, MAX_PATH, NULL, NULL);
|
||||
AppendFacesFromFontFile(NS_ConvertUTF16toUTF8(aFileName).get());
|
||||
}
|
||||
|
||||
void
|
||||
gfxFT2FontList::AppendFacesFromFontFile(const char *aFileName)
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
FT_Library ftLibrary = gfxWindowsPlatform::GetPlatform()->GetFTLibrary();
|
||||
#elif defined(ANDROID)
|
||||
FT_Library ftLibrary = gfxAndroidPlatform::GetPlatform()->GetFTLibrary();
|
||||
#endif
|
||||
FT_Face dummy;
|
||||
if (FT_Err_Ok == FT_New_Face(ftLibrary, fileName, -1, &dummy)) {
|
||||
if (FT_Err_Ok == FT_New_Face(ftLibrary, aFileName, -1, &dummy)) {
|
||||
for (FT_Long i = 0; i < dummy->num_faces; i++) {
|
||||
FT_Face face;
|
||||
if (FT_Err_Ok != FT_New_Face(ftLibrary, fileName, i, &face))
|
||||
if (FT_Err_Ok != FT_New_Face(ftLibrary, aFileName, i, &face))
|
||||
continue;
|
||||
|
||||
FontEntry* fe = FontEntry::CreateFontEntryFromFace(face);
|
||||
|
@ -147,6 +164,7 @@ gfxFT2FontList::AppendFacesFromFontFile(const PRUnichar *aFileName)
|
|||
void
|
||||
gfxFT2FontList::FindFonts()
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
nsTArray<nsString> searchPaths(3);
|
||||
nsTArray<nsString> fontPatterns(3);
|
||||
fontPatterns.AppendElement(NS_LITERAL_STRING("\\*.ttf"));
|
||||
|
@ -189,6 +207,32 @@ gfxFT2FontList::FindFonts()
|
|||
FindClose(handle);
|
||||
}
|
||||
}
|
||||
#elif defined(ANDROID)
|
||||
gfxFontCache *fc = gfxFontCache::GetCache();
|
||||
if (fc)
|
||||
fc->AgeAllGenerations();
|
||||
mPrefFonts.Clear();
|
||||
mCodepointsWithNoFonts.reset();
|
||||
|
||||
DIR *d = opendir("/system/fonts");
|
||||
struct dirent *ent = NULL;
|
||||
while(d && (ent = readdir(d)) != NULL) {
|
||||
int namelen = strlen(ent->d_name);
|
||||
if (namelen > 4 &&
|
||||
strcasecmp(ent->d_name + namelen - 4, ".ttf") == 0)
|
||||
{
|
||||
nsCString s("/system/fonts");
|
||||
s.Append("/");
|
||||
s.Append(nsDependentCString(ent->d_name));
|
||||
|
||||
AppendFacesFromFontFile(nsPromiseFlatCString(s).get());
|
||||
}
|
||||
}
|
||||
|
||||
mCodepointsWithNoFonts.SetRange(0,0x1f); // C0 controls
|
||||
mCodepointsWithNoFonts.SetRange(0x7f,0x9f); // C1 controls
|
||||
|
||||
#endif // XP_WIN && ANDROID
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -263,6 +307,11 @@ gfxFT2FontList::GetDefaultFont(const gfxFontStyle* aStyle, PRBool& aNeedsBold)
|
|||
return FindFontForFamily(resolvedName, aStyle, aNeedsBold);
|
||||
}
|
||||
}
|
||||
#elif defined(ANDROID)
|
||||
nsAutoString resolvedName;
|
||||
if (ResolveFontName(nsDependentString(NS_LITERAL_STRING("Droid Sans")),
|
||||
resolvedName))
|
||||
return FindFontForFamily(resolvedName, aStyle, aNeedsBold);
|
||||
#endif
|
||||
/* TODO: what about Qt or other platforms that may use this? */
|
||||
return nsnull;
|
||||
|
|
|
@ -41,10 +41,12 @@
|
|||
#ifndef GFX_FT2FONTLIST_H
|
||||
#define GFX_FT2FONTLIST_H
|
||||
|
||||
#ifdef XP_WIN
|
||||
#include "gfxWindowsPlatform.h"
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include "gfxPlatformFontList.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <bitset>
|
||||
|
||||
class gfxFT2FontList : public gfxPlatformFontList
|
||||
|
@ -66,6 +68,7 @@ protected:
|
|||
virtual void InitFontList();
|
||||
|
||||
void AppendFacesFromFontFile(const PRUnichar *aFileName);
|
||||
void AppendFacesFromFontFile(const char *aFileName);
|
||||
void FindFonts();
|
||||
};
|
||||
|
||||
|
|
|
@ -108,6 +108,12 @@ FontEntry::~FontEntry()
|
|||
#endif
|
||||
}
|
||||
|
||||
gfxFont*
|
||||
FontEntry::CreateFontInstance(const gfxFontStyle *aFontStyle, PRBool aNeedsBold) {
|
||||
already_AddRefed<gfxFT2Font> font = gfxFT2Font::GetOrMakeFont(this, aFontStyle);
|
||||
return font.get();
|
||||
}
|
||||
|
||||
/* static */
|
||||
FontEntry*
|
||||
FontEntry::CreateFontEntry(const gfxProxyFontEntry &aProxyEntry,
|
||||
|
@ -325,8 +331,9 @@ gfxFT2FontGroup::FontCallback(const nsAString& fontName,
|
|||
}
|
||||
|
||||
gfxFT2FontGroup::gfxFT2FontGroup(const nsAString& families,
|
||||
const gfxFontStyle *aStyle)
|
||||
: gfxFontGroup(families, aStyle)
|
||||
const gfxFontStyle *aStyle,
|
||||
gfxUserFontSet *aUserFontSet)
|
||||
: gfxFontGroup(families, aStyle, aUserFontSet)
|
||||
{
|
||||
#ifdef DEBUG_pavlov
|
||||
printf("Looking for %s\n", NS_ConvertUTF16toUTF8(families).get());
|
||||
|
@ -385,7 +392,7 @@ gfxFT2FontGroup::~gfxFT2FontGroup()
|
|||
gfxFontGroup *
|
||||
gfxFT2FontGroup::Copy(const gfxFontStyle *aStyle)
|
||||
{
|
||||
return new gfxFT2FontGroup(mFamilies, aStyle);
|
||||
return new gfxFT2FontGroup(mFamilies, aStyle, nsnull);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -699,7 +706,7 @@ gfxFT2FontGroup::WhichSystemFontSupportsChar(PRUint32 aCh)
|
|||
}
|
||||
#else
|
||||
nsRefPtr<gfxFont> selectedFont;
|
||||
nsRefPtr<gfxFT2Font> refFont = GetFontAt(0);
|
||||
nsRefPtr<gfxFont> refFont = GetFontAt(0);
|
||||
gfxToolkitPlatform *platform = gfxToolkitPlatform::GetPlatform();
|
||||
selectedFont = platform->FindFontForChar(aCh, refFont);
|
||||
if (selectedFont)
|
||||
|
|
|
@ -94,6 +94,8 @@ public:
|
|||
// aFontData is NS_Malloc'ed data that aFace depends on, to be freed
|
||||
// after the face is destroyed; null if there is no such buffer
|
||||
|
||||
virtual gfxFont *CreateFontInstance(const gfxFontStyle *aFontStyle, PRBool aNeedsBold);
|
||||
|
||||
cairo_font_face_t *CairoFontFace();
|
||||
nsresult ReadCMAP();
|
||||
|
||||
|
@ -159,23 +161,10 @@ protected:
|
|||
class THEBES_API gfxFT2FontGroup : public gfxFontGroup {
|
||||
public: // new functions
|
||||
gfxFT2FontGroup (const nsAString& families,
|
||||
const gfxFontStyle *aStyle);
|
||||
const gfxFontStyle *aStyle,
|
||||
gfxUserFontSet *aUserFontSet);
|
||||
virtual ~gfxFT2FontGroup ();
|
||||
|
||||
inline gfxFT2Font *GetFontAt (PRInt32 i) {
|
||||
// If it turns out to be hard for all clients that cache font
|
||||
// groups to call UpdateFontList at appropriate times, we could
|
||||
// instead consider just calling UpdateFontList from someplace
|
||||
// more central (such as here).
|
||||
NS_ASSERTION(!mUserFontSet || mCurrGeneration == GetGeneration(),
|
||||
"Whoever was caching this font group should have "
|
||||
"called UpdateFontList on it");
|
||||
NS_ASSERTION(mFonts.Length() > PRUint32(i),
|
||||
"Requesting a font index that doesn't exist");
|
||||
|
||||
return static_cast <gfxFT2Font *>(static_cast <gfxFont *>(mFonts[i]));
|
||||
}
|
||||
|
||||
protected: // from gfxFontGroup
|
||||
virtual gfxTextRun *MakeTextRun(const PRUnichar *aString,
|
||||
PRUint32 aLength,
|
||||
|
|
|
@ -1764,7 +1764,7 @@ gfxFontGroup::BuildFontList()
|
|||
{
|
||||
// "#if" to be removed once all platforms are moved to gfxPlatformFontList interface
|
||||
// and subclasses of gfxFontGroup eliminated
|
||||
#if defined(XP_MACOSX) || (defined(XP_WIN) && !defined(WINCE))
|
||||
#if defined(XP_MACOSX) || (defined(XP_WIN) && !defined(WINCE)) || defined(ANDROID)
|
||||
ForEachFont(FindPlatformFont, this);
|
||||
|
||||
if (mFonts.Length() == 0) {
|
||||
|
|
|
@ -242,7 +242,7 @@ gfxPlatform::Init()
|
|||
|
||||
nsresult rv;
|
||||
|
||||
#if defined(XP_MACOSX) || defined(XP_WIN) // temporary, until this is implemented on others
|
||||
#if defined(XP_MACOSX) || defined(XP_WIN) || defined(ANDROID) // temporary, until this is implemented on others
|
||||
rv = gfxPlatformFontList::Init();
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_ERROR("Could not initialize gfxPlatformFontList");
|
||||
|
|
|
@ -113,14 +113,6 @@ endif
|
|||
endif
|
||||
|
||||
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||
# Create an app bundle
|
||||
MOZ_FIX_LINK_PATHS+=-Wl,-headerpad_max_install_names
|
||||
# We need to fix the install names for the Gecko libraries we're linked to.
|
||||
# They're all @loader_path/libfoo.dylib, but this binary lives in a bundle
|
||||
# underneath that.
|
||||
paren=\(
|
||||
LIST_INSTALL_NAMES=$(shell otool -L $(PROGRAM) | grep "@loader_path" | tr -s '\t ' ' ' | cut -f1 -d$(paren) | xargs echo)
|
||||
FIX_INSTALL_NAMES=$(foreach l,$(LIST_INSTALL_NAMES),-change "$l" "$(subst @loader_path,@loader_path/../../..,$l)")
|
||||
|
||||
libs::
|
||||
$(NSINSTALL) -D $(DIST)/bin/$(PROGRAM).app
|
||||
|
@ -129,7 +121,6 @@ libs::
|
|||
sed -e "s/%APP_NAME%/$(MOZ_APP_DISPLAYNAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | \
|
||||
iconv -f UTF-8 -t UTF-16 > $(DIST)/bin/$(PROGRAM).app/Contents/Resources/English.lproj/InfoPlist.strings
|
||||
$(NSINSTALL) -D $(DIST)/bin/$(PROGRAM).app/Contents/MacOS
|
||||
install_name_tool $(FIX_INSTALL_NAMES) $(PROGRAM)
|
||||
$(NSINSTALL) $(PROGRAM) $(DIST)/bin/$(PROGRAM).app/Contents/MacOS
|
||||
rm -f $(DIST)/bin/$(PROGRAM)
|
||||
endif
|
||||
|
|
|
@ -10,4 +10,4 @@
|
|||
# hardcoded milestones in the tree from these two files.
|
||||
#--------------------------------------------------------
|
||||
|
||||
2.0b2pre
|
||||
2.0b3pre
|
||||
|
|
|
@ -578,7 +578,7 @@ ifdef SHARED_LIBRARY
|
|||
ifdef IS_COMPONENT
|
||||
EXTRA_DSO_LDOPTS += -bundle
|
||||
else
|
||||
EXTRA_DSO_LDOPTS += -dynamiclib -install_name @loader_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
|
||||
EXTRA_DSO_LDOPTS += -dynamiclib -install_name @executable_path/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -47,9 +47,9 @@ script regress-330569.js
|
|||
script regress-333541.js
|
||||
skip script regress-335700.js # bug xxx - reftest hang, BigO
|
||||
skip-if(!xulRuntime.shell) script regress-336409-1.js # no results reported.
|
||||
script regress-336409-2.js
|
||||
skip-if(!xulRuntime.shell&&xulRuntime.XPCOMABI.match(/x86_64/)) script regress-336409-2.js # fails on 64 bit systems for some reason
|
||||
skip-if(!xulRuntime.shell) script regress-336410-1.js # slow
|
||||
script regress-336410-2.js
|
||||
skip-if(!xulRuntime.shell&&xulRuntime.XPCOMABI.match(/x86_64/)) script regress-336410-2.js # fails on 64 bit systems for some reason
|
||||
script regress-338804-01.js
|
||||
script regress-338804-02.js
|
||||
script regress-338804-03.js
|
||||
|
|
|
@ -40,7 +40,7 @@ var gTestfile = 'regress-336409-2.js';
|
|||
var BUGNUMBER = 336409;
|
||||
var summary = 'Integer overflow in js_obj_toSource';
|
||||
var actual = 'No Crash';
|
||||
var expect = 'No Crash';
|
||||
var expect = /(No Crash|InternalError: script stack space quota is exhausted|InternalError: allocation size overflow)/;
|
||||
|
||||
printBugNumber(BUGNUMBER);
|
||||
printStatus (summary);
|
||||
|
@ -74,9 +74,8 @@ try
|
|||
}
|
||||
catch(ex)
|
||||
{
|
||||
expect = 'InternalError: script stack space quota is exhausted';
|
||||
actual = ex + '';
|
||||
print(actual);
|
||||
}
|
||||
|
||||
reportCompare(expect, actual, summary);
|
||||
reportMatch(expect, actual, summary);
|
||||
|
|
|
@ -40,7 +40,7 @@ var gTestfile = 'regress-336410-2.js';
|
|||
var BUGNUMBER = 336410;
|
||||
var summary = 'Integer overflow in array_toSource';
|
||||
var actual = 'No Crash';
|
||||
var expect = 'No Crash';
|
||||
var expect = /(No Crash|InternalError: script stack space quota is exhausted|InternalError: allocation size overflow)/;
|
||||
|
||||
printBugNumber(BUGNUMBER);
|
||||
printStatus (summary);
|
||||
|
@ -74,9 +74,8 @@ try
|
|||
}
|
||||
catch(ex)
|
||||
{
|
||||
expect = 'InternalError: script stack space quota is exhausted';
|
||||
actual = ex + '';
|
||||
print(actual);
|
||||
}
|
||||
|
||||
reportCompare(expect, actual, summary);
|
||||
reportMatch(expect, actual, summary);
|
||||
|
|
|
@ -1224,8 +1224,8 @@ XPCJSRuntime::OnJSContextNew(JSContext *cx)
|
|||
if (!xpc)
|
||||
return JS_FALSE;
|
||||
|
||||
JS_SetNativeStackQuota(cx, 512 * 1024);
|
||||
JS_SetScriptStackQuota(cx, 100 * 1024 * 1024);
|
||||
JS_SetNativeStackQuota(cx, 128 * sizeof(size_t) * 1024);
|
||||
JS_SetScriptStackQuota(cx, 25 * sizeof(size_t) * 1024 * 1024);
|
||||
return JS_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1404,95 +1404,11 @@ FrameLayerBuilder::DrawThebesLayer(ThebesLayer* aLayer,
|
|||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
static void
|
||||
DumpIntRegion(FILE* aStream, const char* aName, const nsIntRegion& aRegion)
|
||||
{
|
||||
if (aRegion.IsEmpty())
|
||||
return;
|
||||
|
||||
fprintf(aStream, " [%s=", aName);
|
||||
nsIntRegionRectIterator iter(aRegion);
|
||||
const nsIntRect* r;
|
||||
PRBool first = PR_TRUE;
|
||||
while ((r = iter.Next()) != nsnull) {
|
||||
if (!first) {
|
||||
fputs(";", aStream);
|
||||
} else {
|
||||
first = PR_FALSE;
|
||||
}
|
||||
fprintf(aStream, "%d,%d,%d,%d", r->x, r->y, r->width, r->height);
|
||||
}
|
||||
fputs("]", aStream);
|
||||
}
|
||||
|
||||
static void
|
||||
DumpLayer(FILE* aStream, Layer* aLayer, PRUint32 aIndent)
|
||||
{
|
||||
if (!aLayer)
|
||||
return;
|
||||
|
||||
for (PRUint32 i = 0; i < aIndent; ++i) {
|
||||
fputs(" ", aStream);
|
||||
}
|
||||
const char* name = aLayer->Name();
|
||||
ThebesLayer* thebes = aLayer->AsThebesLayer();
|
||||
fprintf(aStream, "%s(%p)", name, aLayer);
|
||||
|
||||
DumpIntRegion(aStream, "visible", aLayer->GetVisibleRegion());
|
||||
|
||||
gfx3DMatrix transform = aLayer->GetTransform();
|
||||
if (!transform.IsIdentity()) {
|
||||
gfxMatrix matrix;
|
||||
if (transform.Is2D(&matrix)) {
|
||||
fprintf(aStream, " [transform=%g,%g; %g,%g; %g,%g]",
|
||||
matrix.xx, matrix.yx, matrix.xy, matrix.yy, matrix.x0, matrix.y0);
|
||||
} else {
|
||||
fprintf(aStream, " [transform=%g,%g,%g,%g; %g,%g,%g,%g; %g,%g,%g,%g; %g,%g,%g,%g]",
|
||||
transform._11, transform._12, transform._13, transform._14,
|
||||
transform._21, transform._22, transform._23, transform._24,
|
||||
transform._31, transform._32, transform._33, transform._34,
|
||||
transform._41, transform._42, transform._43, transform._44);
|
||||
}
|
||||
}
|
||||
|
||||
const nsIntRect* clip = aLayer->GetClipRect();
|
||||
if (clip) {
|
||||
fprintf(aStream, " [clip=%d,%d,%d,%d]",
|
||||
clip->x, clip->y, clip->width, clip->height);
|
||||
}
|
||||
|
||||
float opacity = aLayer->GetOpacity();
|
||||
if (opacity != 1.0) {
|
||||
fprintf(aStream, " [opacity=%f]", opacity);
|
||||
}
|
||||
|
||||
if (aLayer->IsOpaqueContent()) {
|
||||
fputs(" [opaqueContent]", aStream);
|
||||
}
|
||||
|
||||
if (thebes) {
|
||||
DumpIntRegion(aStream, "valid", thebes->GetValidRegion());
|
||||
}
|
||||
|
||||
fputs("\n", aStream);
|
||||
|
||||
for (Layer* child = aLayer->GetFirstChild(); child;
|
||||
child = child->GetNextSibling()) {
|
||||
DumpLayer(aStream, child, aIndent + 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
FrameLayerBuilder::DumpLayerTree(LayerManager* aManager)
|
||||
{
|
||||
DumpLayer(stderr, aManager->GetRoot(), 0);
|
||||
}
|
||||
|
||||
void
|
||||
FrameLayerBuilder::DumpRetainedLayerTree()
|
||||
{
|
||||
if (mRetainingManager) {
|
||||
DumpLayerTree(mRetainingManager);
|
||||
mRetainingManager->Dump(stderr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -201,11 +201,6 @@ public:
|
|||
void* aCallbackData);
|
||||
|
||||
#ifdef DEBUG
|
||||
/**
|
||||
* Dumps aManager's layer tree to stderr.
|
||||
*/
|
||||
static void DumpLayerTree(LayerManager* aManager);
|
||||
|
||||
/**
|
||||
* Dumps this FrameLayerBuilder's retained layer manager's retained
|
||||
* layer tree to stderr.
|
||||
|
|
|
@ -92,6 +92,7 @@
|
|||
#include "nsIContentURIGrouper.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsCharSeparatedTokenizer.h"
|
||||
|
||||
#define SYNC_TEXT 0x1
|
||||
#define SYNC_BUTTON 0x2
|
||||
|
@ -855,21 +856,41 @@ nsFileControlFrame::CreateAccessible()
|
|||
}
|
||||
#endif
|
||||
|
||||
PRInt32
|
||||
nsFileControlFrame::GetFileFilterFromAccept() const
|
||||
void
|
||||
nsFileControlFrame::ParseAcceptAttribute(AcceptAttrCallback aCallback,
|
||||
void* aClosure) const
|
||||
{
|
||||
nsAutoString accept;
|
||||
mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::accept, accept);
|
||||
|
||||
if (accept.EqualsLiteral("image/*")) {
|
||||
return nsIFilePicker::filterImages;
|
||||
} else if (accept.EqualsLiteral("audio/*")) {
|
||||
return nsIFilePicker::filterAudio;
|
||||
} else if (accept.EqualsLiteral("video/*")) {
|
||||
return nsIFilePicker::filterVideo;
|
||||
nsCharSeparatedTokenizerTemplate<nsContentUtils::IsHTMLWhitespace>
|
||||
tokenizer(accept, ',');
|
||||
// Empty loop body because aCallback is doing the work
|
||||
while (tokenizer.hasMoreTokens() &&
|
||||
(*aCallback)(tokenizer.nextToken(), aClosure));
|
||||
}
|
||||
|
||||
PRBool FileFilterCallback(const nsAString& aVal, void* aClosure)
|
||||
{
|
||||
PRInt32* filter = (PRInt32*)aClosure;
|
||||
|
||||
if (aVal.EqualsLiteral("image/*")) {
|
||||
*filter |= nsIFilePicker::filterImages;
|
||||
} else if (aVal.EqualsLiteral("audio/*")) {
|
||||
*filter |= nsIFilePicker::filterAudio;
|
||||
} else if (aVal.EqualsLiteral("video/*")) {
|
||||
*filter |= nsIFilePicker::filterVideo;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
PRInt32
|
||||
nsFileControlFrame::GetFileFilterFromAccept() const
|
||||
{
|
||||
PRInt32 filterVal = 0;
|
||||
this->ParseAcceptAttribute(&FileFilterCallback, (void*)&filterVal);
|
||||
return filterVal;
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
// Mouse listener implementation
|
||||
|
|
|
@ -115,6 +115,9 @@ public:
|
|||
*/
|
||||
PRInt32 GetFileFilterFromAccept() const;
|
||||
|
||||
typedef PRBool (*AcceptAttrCallback)(const nsAString&, void*);
|
||||
void ParseAcceptAttribute(AcceptAttrCallback aCallback, void* aClosure) const;
|
||||
|
||||
protected:
|
||||
class MouseListener;
|
||||
friend class MouseListener;
|
||||
|
|
|
@ -17,6 +17,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=377624
|
|||
<input id='a' type='file' accept="image/*">
|
||||
<input id='b' type='file' accept="audio/*">
|
||||
<input id='c' type='file' accept="video/*">
|
||||
<input id='d' type='file' accept="image/*, audio/* ">
|
||||
<input id='e' type='file' accept=" image/*,video/*">
|
||||
<input id='f' type='file' accept="audio/*,video/*">
|
||||
<input id='g' type='file' accept="image/*, audio/* ,video/*">
|
||||
<input id='h' type='file' accept="foo/baz,image/*,bogus/duh">
|
||||
<input id='i' type='file' accept="mime/type;parameter,video/*">
|
||||
<input id='z' type='file' accept="i/am,a,pathological,;,,,,test/case">
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript">
|
||||
|
@ -105,22 +112,29 @@ factory = {
|
|||
}
|
||||
};
|
||||
|
||||
document.getElementById('a').addEventListener("focus", function (aEvent) {
|
||||
aEvent.target.removeEventListener("focus", arguments.callee, false);
|
||||
synthesizeKey('VK_SPACE', {});
|
||||
}, false);
|
||||
document.getElementById('b').addEventListener("focus", function (aEvent) {
|
||||
aEvent.target.removeEventListener("focus", arguments.callee, false);
|
||||
synthesizeKey('VK_SPACE', {});
|
||||
}, false);
|
||||
document.getElementById('c').addEventListener("focus", function (aEvent) {
|
||||
aEvent.target.removeEventListener("focus", arguments.callee, false);
|
||||
synthesizeKey('VK_SPACE', {});
|
||||
}, false);
|
||||
var testData = [["a", FilePickerService.prototype.filterImages, 1],
|
||||
["b", FilePickerService.prototype.filterAudio, 1],
|
||||
["c", FilePickerService.prototype.filterVideo, 1],
|
||||
["d", FilePickerService.prototype.filterImages +
|
||||
FilePickerService.prototype.filterAudio, 1],
|
||||
["e", FilePickerService.prototype.filterImages +
|
||||
FilePickerService.prototype.filterVideo, 1],
|
||||
["f", FilePickerService.prototype.filterAudio +
|
||||
FilePickerService.prototype.filterVideo, 1],
|
||||
["g", FilePickerService.prototype.filterImages +
|
||||
FilePickerService.prototype.filterAudio +
|
||||
FilePickerService.prototype.filterVideo, 1],
|
||||
["h", FilePickerService.prototype.filterImages, 1],
|
||||
["i", FilePickerService.prototype.filterVideo, 1],
|
||||
["z", 0, 0]];
|
||||
|
||||
testData.forEach(function (datum) {
|
||||
document.getElementById(datum[0]).addEventListener("focus", function (aEvent) {
|
||||
aEvent.target.removeEventListener("focus", arguments.callee, false);
|
||||
synthesizeKey('VK_SPACE', {});
|
||||
}, false);
|
||||
});
|
||||
|
||||
var testData = [["a", FilePickerService.prototype.filterImages],
|
||||
["b", FilePickerService.prototype.filterAudio],
|
||||
["c", FilePickerService.prototype.filterVideo]];
|
||||
var currentTest = 0;
|
||||
|
||||
function launchNextTest(aObserver)
|
||||
|
@ -169,9 +183,9 @@ function runTests()
|
|||
"appendFilters should have been called once");
|
||||
is(observer.filters[0], FilePickerService.prototype.filterAll +
|
||||
testData[currentTest][1],
|
||||
"Incorrect filters have been added");
|
||||
is(observer.filterIndex, 1,
|
||||
"File picker should show the second filter index (first is zero)");
|
||||
"Correct filters should have been added");
|
||||
is(observer.filterIndex, testData[currentTest][2],
|
||||
"File picker should show the correct filter index");
|
||||
|
||||
if (++currentTest == testData.length) {
|
||||
obs.removeObserver(observer, "TEST_FILEPICKER_APPENDFILTER", false);
|
||||
|
|
|
@ -694,6 +694,8 @@ inDOMView::AttributeChanged(nsIDocument *aDocument, nsIContent* aContent,
|
|||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// get the dom attribute node, if there is any
|
||||
nsCOMPtr<nsIDOMNode> content(do_QueryInterface(aContent));
|
||||
nsCOMPtr<nsIDOMElement> el(do_QueryInterface(aContent));
|
||||
|
@ -855,6 +857,8 @@ inDOMView::ContentInserted(nsIDocument *aDocument, nsIContent* aContainer,
|
|||
if (NS_FAILED(rv = RowToNode(parentRow, &parentNode)))
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
if (!parentNode->isOpen) {
|
||||
// Parent is not open, so don't bother creating tree rows for the
|
||||
// kids. But do indicate that it's now a container, if needed.
|
||||
|
@ -924,6 +928,8 @@ inDOMView::ContentRemoved(nsIDocument *aDocument, nsIContent* aContainer, nsICon
|
|||
if (NS_FAILED(rv = RowToNode(row, &oldNode)))
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// The parent may no longer be a container. Note that we don't want
|
||||
// to access oldNode after calling RemoveNode, so do this now.
|
||||
inDOMViewNode* parentNode = oldNode->parent;
|
||||
|
|
|
@ -820,6 +820,9 @@ nsTreeContentView::AttributeChanged(nsIDocument *aDocument,
|
|||
nsIAtom* aAttribute,
|
||||
PRInt32 aModType)
|
||||
{
|
||||
// Lots of codepaths under here that do all sorts of stuff, so be safe.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
// Make sure this notification concerns us.
|
||||
// First check the tag to see if it's one that we care about.
|
||||
nsIAtom *tag = aContent->Tag();
|
||||
|
@ -1024,6 +1027,9 @@ nsTreeContentView::ContentInserted(nsIDocument *aDocument,
|
|||
return; // this is not for us
|
||||
}
|
||||
|
||||
// Lots of codepaths under here that do all sorts of stuff, so be safe.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
if (childTag == nsGkAtoms::treechildren) {
|
||||
PRInt32 index = FindContent(aContainer);
|
||||
if (index >= 0) {
|
||||
|
@ -1112,6 +1118,9 @@ nsTreeContentView::ContentRemoved(nsIDocument *aDocument,
|
|||
return; // this is not for us
|
||||
}
|
||||
|
||||
// Lots of codepaths under here that do all sorts of stuff, so be safe.
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
|
||||
if (tag == nsGkAtoms::treechildren) {
|
||||
PRInt32 index = FindContent(aContainer);
|
||||
if (index >= 0) {
|
||||
|
@ -1155,6 +1164,8 @@ nsTreeContentView::ContentRemoved(nsIDocument *aDocument,
|
|||
void
|
||||
nsTreeContentView::NodeWillBeDestroyed(const nsINode* aNode)
|
||||
{
|
||||
// XXXbz do we need this strong ref? Do we drop refs to self in ClearRows?
|
||||
nsCOMPtr<nsIMutationObserver> kungFuDeathGrip(this);
|
||||
ClearRows();
|
||||
}
|
||||
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,6 +1,6 @@
|
|||
# FreeType 2 top Jamfile.
|
||||
#
|
||||
# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
|
||||
# Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
@ -194,7 +194,7 @@ rule RefDoc
|
|||
|
||||
actions RefDoc
|
||||
{
|
||||
python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.3.12 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
|
||||
python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.4.1 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
|
||||
}
|
||||
|
||||
RefDoc refdoc ;
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
is called `libttf'. They are *not* compatible!
|
||||
|
||||
|
||||
FreeType 2.3.12
|
||||
===============
|
||||
FreeType 2.4.1
|
||||
==============
|
||||
|
||||
Please read the docs/CHANGES file, it contains IMPORTANT
|
||||
INFORMATION.
|
||||
|
@ -26,9 +26,9 @@
|
|||
|
||||
and download one of the following files.
|
||||
|
||||
freetype-doc-2.3.12.tar.bz2
|
||||
freetype-doc-2.3.12.tar.gz
|
||||
ftdoc2312.zip
|
||||
freetype-doc-2.4.1.tar.bz2
|
||||
freetype-doc-2.4.1.tar.gz
|
||||
ftdoc241.zip
|
||||
|
||||
|
||||
Bugs
|
||||
|
|
|
@ -33,7 +33,7 @@ should work on all platforms which have GNU make (or makepp).
|
|||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright 2005, 2006, 2007, 2008, 2009 by
|
||||
Copyright 2005, 2006, 2007, 2008, 2009, 2010 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
@ -43,4 +43,4 @@ this file you indicate that you have read the license and understand
|
|||
and accept it fully.
|
||||
|
||||
|
||||
--- end of README.CVS ---
|
||||
--- end of README.git ---
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
This directory contains freetype2 v2.3.12 downloaded from
|
||||
This directory contains freetype2 v2.4.1 downloaded from
|
||||
http://savannah.nongnu.org/download/freetype/
|
||||
|
||||
Makefile.in is added for the mozilla build.
|
||||
|
||||
Additional patch applied locally:
|
||||
http://git.savannah.gnu.org/cgit/freetype/freetype2.git/commit/?id=25e742c573e3b88e5a4e342733f1836466628ff8
|
||||
(Add overflow check to `fvar' table; see bug 553273)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
|
||||
|
||||
# Copyright 1996-2000, 2001, 2003, 2006, 2008, 2009 by
|
||||
# Copyright 1996-2000, 2001, 2003, 2006, 2008, 2009, 2010 by
|
||||
# David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
#
|
||||
# This file is part of the FreeType project, and may only be used, modified,
|
||||
|
@ -230,7 +230,8 @@ dist:
|
|||
|
||||
|
||||
# The locations of the latest `config.guess' and `config.sub' versions (from
|
||||
# GNU `config' CVS), relative to the `tmp' directory used during `make dist'.
|
||||
# GNU `config' git repository), relative to the `tmp' directory used during
|
||||
# `make dist'.
|
||||
#
|
||||
CONFIG_GUESS = ~/git/config/config.guess
|
||||
CONFIG_SUB = ~/git/config/config.sub
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2009-12-30'
|
||||
timestamp='2010-04-03'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
@ -92,7 +92,7 @@ if test $# != 0; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
trap 'exit 1' 1 2 15
|
||||
trap 'exit 1' HUP INT TERM
|
||||
|
||||
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
|
||||
# compiler to aid in system detection is discouraged as it requires
|
||||
|
@ -106,7 +106,7 @@ trap 'exit 1' 1 2 15
|
|||
|
||||
set_cc_for_build='
|
||||
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
|
||||
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
|
||||
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
|
||||
: ${TMPDIR=/tmp} ;
|
||||
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
|
||||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2010-01-22'
|
||||
timestamp='2010-05-21'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
|
@ -124,8 +124,9 @@ esac
|
|||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
|
||||
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
|
||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||
knetbsd*-gnu* | netbsd*-gnu* | \
|
||||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
|
@ -295,7 +296,7 @@ case $basic_machine in
|
|||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
| spu | strongarm \
|
||||
| tahoe | thumb | tic4x | tic80 | tron \
|
||||
| tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
| v850 | v850e \
|
||||
| we32k \
|
||||
|
@ -303,6 +304,15 @@ case $basic_machine in
|
|||
| z8k | z80)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
c54x)
|
||||
basic_machine=tic54x-unknown
|
||||
;;
|
||||
c55x)
|
||||
basic_machine=tic55x-unknown
|
||||
;;
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
|
||||
# Motorola 68HC11/12.
|
||||
basic_machine=$basic_machine-unknown
|
||||
|
@ -334,7 +344,7 @@ case $basic_machine in
|
|||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
|
@ -482,6 +492,15 @@ case $basic_machine in
|
|||
basic_machine=powerpc-ibm
|
||||
os=-cnk
|
||||
;;
|
||||
c54x-*)
|
||||
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c55x-*)
|
||||
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c6x-*)
|
||||
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
|
@ -1075,18 +1094,6 @@ case $basic_machine in
|
|||
basic_machine=t90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
tic54x | c54x*)
|
||||
basic_machine=tic54x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic55x | c55x*)
|
||||
basic_machine=tic55x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic6x | c6x*)
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
# This must be matched before tile*.
|
||||
tilegx*)
|
||||
basic_machine=tilegx-unknown
|
||||
|
@ -1301,7 +1308,8 @@ case $os in
|
|||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
|
||||
| -mingw32* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
|
@ -1484,6 +1492,15 @@ case $basic_machine in
|
|||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic54x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic55x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic6x-*)
|
||||
os=-coff
|
||||
;;
|
||||
# This must come before the *-dec entry.
|
||||
pdp10-*)
|
||||
os=-tops20
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -11,13 +11,13 @@
|
|||
# indicate that you have read the license and understand and accept it
|
||||
# fully.
|
||||
|
||||
AC_INIT([FreeType], [2.3.12], [freetype@nongnu.org], [freetype])
|
||||
AC_INIT([FreeType], [2.4.1], [freetype@nongnu.org], [freetype])
|
||||
AC_CONFIG_SRCDIR([ftconfig.in])
|
||||
|
||||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='10:0:4'
|
||||
version_info='11:1:5'
|
||||
AC_SUBST([version_info])
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
AC_SUBST([ft_version])
|
||||
|
|
|
@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in])
|
|||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='10:0:4'
|
||||
version_info='11:1:5'
|
||||
AC_SUBST([version_info])
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
AC_SUBST([ft_version])
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -33,7 +33,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -50,7 +50,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -67,7 +67,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -84,7 +84,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -101,7 +101,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\win32\vc2005\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -374,6 +374,8 @@
|
|||
</File>
|
||||
<File RelativePath="..\..\..\src\base\ftwinfnt.c">
|
||||
</File>
|
||||
<File RelativePath="..\..\..\src\base\ftxf86.c">
|
||||
</File>
|
||||
<File RelativePath="..\..\..\src\base\ftlcdfil.c">
|
||||
</File>
|
||||
<File RelativePath="..\..\..\src\base\ftgxval.c">
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -145,7 +145,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -220,7 +220,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -292,7 +292,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -365,7 +365,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -439,7 +439,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\win32\vc2008\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1319,6 +1319,10 @@
|
|||
RelativePath="..\..\..\src\base\ftwinfnt.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftxf86.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftlcdfil.c"
|
||||
>
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
|
||||
|
||||
|
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
|
||||
|
||||
|
@ -102,8 +102,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype241_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241MT_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
|
||||
|
||||
|
@ -126,8 +126,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype2312.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype241.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241MT.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
|
||||
|
||||
|
@ -151,8 +151,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype2312ST.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype241.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype241ST.lib"
|
||||
# SUBTRACT LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
|
||||
|
@ -177,8 +177,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312ST_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype241_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241ST_D.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -144,7 +144,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -219,7 +219,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -291,7 +291,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -364,7 +364,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -438,7 +438,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1318,6 +1318,10 @@
|
|||
RelativePath="..\..\..\src\base\ftwinfnt.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftxf86.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftlcdfil.c"
|
||||
>
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
|
||||
|
||||
|
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
|
||||
|
||||
|
@ -102,8 +102,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype241_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241MT_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
|
||||
|
||||
|
@ -126,8 +126,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype2312.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312MT.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype241.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241MT.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
|
||||
|
||||
|
@ -151,8 +151,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype2312ST.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype241.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype241ST.lib"
|
||||
# SUBTRACT LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
|
||||
|
@ -177,8 +177,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype2312_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2312ST_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype241_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype241ST_D.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -162,7 +162,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -237,7 +237,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -309,7 +309,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -382,7 +382,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -456,7 +456,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -534,7 +534,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -619,7 +619,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -704,7 +704,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -785,7 +785,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -867,7 +867,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -950,7 +950,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1036,7 +1036,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1121,7 +1121,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1206,7 +1206,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1287,7 +1287,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1369,7 +1369,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1452,7 +1452,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1538,7 +1538,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1623,7 +1623,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1708,7 +1708,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1789,7 +1789,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1871,7 +1871,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1954,7 +1954,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2040,7 +2040,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2125,7 +2125,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2210,7 +2210,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -2291,7 +2291,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2373,7 +2373,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2456,7 +2456,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2542,7 +2542,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2627,7 +2627,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2712,7 +2712,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -2793,7 +2793,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2875,7 +2875,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2958,7 +2958,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3044,7 +3044,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3129,7 +3129,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3214,7 +3214,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -3295,7 +3295,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3377,7 +3377,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3460,7 +3460,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -8704,6 +8704,10 @@
|
|||
RelativePath="..\..\..\src\base\ftwinfnt.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftxf86.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\src\base\ftlcdfil.c"
|
||||
>
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -41,7 +41,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -61,7 +61,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -81,7 +81,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -101,7 +101,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -121,7 +121,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -141,7 +141,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -161,7 +161,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -181,7 +181,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -201,7 +201,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -221,7 +221,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -241,7 +241,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -261,7 +261,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -281,7 +281,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -301,7 +301,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -321,7 +321,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -341,7 +341,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -361,7 +361,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST.lib" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST.lib" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -381,7 +381,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -401,7 +401,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -421,7 +421,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -441,7 +441,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -461,7 +461,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -481,7 +481,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -501,7 +501,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -521,7 +521,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -541,7 +541,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -561,7 +561,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -581,7 +581,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -601,7 +601,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241ST_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -621,7 +621,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -641,7 +641,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -661,7 +661,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -681,7 +681,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -701,7 +701,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -721,7 +721,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -741,7 +741,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="NDEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
@ -758,7 +758,7 @@
|
|||
<Tool Name="VCManagedResourceCompilerTool" />
|
||||
<Tool Name="VCResourceCompilerTool" PreprocessorDefinitions="_DEBUG" Culture="1033" />
|
||||
<Tool Name="VCPreLinkEventTool" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype2312MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCLibrarianTool" OutputFile="..\..\..\objs\wince\vc2005-ce\freetype241MT_D.lib" SuppressStartupBanner="true" />
|
||||
<Tool Name="VCALinkTool" />
|
||||
<Tool Name="VCXDCMakeTool" />
|
||||
<Tool Name="VCBscMakeTool" />
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -177,7 +177,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -266,7 +266,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -355,7 +355,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -444,7 +444,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -533,7 +533,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -621,7 +621,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -709,7 +709,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -797,7 +797,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -885,7 +885,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -973,7 +973,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1061,7 +1061,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1149,7 +1149,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1236,7 +1236,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1323,7 +1323,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1410,7 +1410,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1497,7 +1497,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1584,7 +1584,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST.lib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
|
@ -1668,7 +1668,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1753,7 +1753,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1838,7 +1838,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -1923,7 +1923,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2008,7 +2008,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2093,7 +2093,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2178,7 +2178,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2263,7 +2263,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2348,7 +2348,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2433,7 +2433,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2518,7 +2518,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2603,7 +2603,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312ST_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241ST_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2689,7 +2689,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2775,7 +2775,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2861,7 +2861,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -2947,7 +2947,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3033,7 +3033,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3119,7 +3119,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3205,7 +3205,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
@ -3279,7 +3279,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype2312MT_D.lib"
|
||||
OutputFile="..\..\..\objs\wince\vc2008-ce\freetype241MT_D.lib"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.3.12 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.1 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2312.lib - release build; single threaded
|
||||
freetype2312_D.lib - debug build; single threaded
|
||||
freetype2312MT.lib - release build; multi-threaded
|
||||
freetype2312MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype241.lib - release build; single threaded
|
||||
freetype241_D.lib - debug build; single threaded
|
||||
freetype241MT.lib - release build; multi-threaded
|
||||
freetype241MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -488,8 +488,7 @@ FT_BEGIN_HEADER
|
|||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
|
||||
/* a bytecode interpreter in the TrueType driver. Note that there are */
|
||||
/* important patent issues related to the use of the interpreter. */
|
||||
/* a bytecode interpreter in the TrueType driver. */
|
||||
/* */
|
||||
/* By undefining this, you will only compile the code necessary to load */
|
||||
/* TrueType glyphs without hinting. */
|
||||
|
@ -504,10 +503,13 @@ FT_BEGIN_HEADER
|
|||
/* */
|
||||
/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */
|
||||
/* of the TrueType bytecode interpreter is used that doesn't implement */
|
||||
/* any of the patented opcodes and algorithms. Note that the */
|
||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define */
|
||||
/* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define */
|
||||
/* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
||||
/* any of the patented opcodes and algorithms. The patents related to */
|
||||
/* TrueType hinting have expired worldwide since May 2010; this option */
|
||||
/* is now deprecated. */
|
||||
/* */
|
||||
/* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */
|
||||
/* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */
|
||||
/* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */
|
||||
/* */
|
||||
/* This macro is only useful for a small number of font files (mostly */
|
||||
|
|
|
@ -1,3 +1,38 @@
|
|||
|
||||
CHANGES BETWEEN 2.4.0 and 2.4.1
|
||||
|
||||
I. IMPORTANT CHANGES
|
||||
|
||||
- A serious bug in the CFF font module prevented display of many
|
||||
glyphs in CFF fonts like `MinionPro-Regular.otf'.
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
CHANGES BETWEEN 2.3.12 and 2.4.0
|
||||
|
||||
I. IMPORTANT CHANGES
|
||||
|
||||
- Since May 2010, all patents regarding the TrueType bytecode
|
||||
interpreter have expired worldwide. Consequently, we now define
|
||||
TT_CONFIG_OPTION_BYTECODE_INTERPRETER by default (and undefine
|
||||
TT_CONFIG_OPTION_UNPATENTED_HINTING).
|
||||
|
||||
- A new function `FT_Library_SetLcdFilterWeights' is available to
|
||||
adjust the filter weights set by `FT_Library_SetLcdFilter'.
|
||||
|
||||
|
||||
II. MISCELLANEOUS
|
||||
|
||||
- Thanks to many reports from Robert Święcki, FreeType's stability
|
||||
in handling broken or damaged fonts is much improved.
|
||||
|
||||
- Support for LCD filter control has been added to the demo
|
||||
programs `ftdiff' and `ftview'.
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
CHANGES BETWEEN 2.3.11 and 2.3.12
|
||||
|
||||
I. IMPORTANT CHANGES
|
||||
|
@ -6,6 +41,7 @@ CHANGES BETWEEN 2.3.11 and 2.3.12
|
|||
preferred family names: FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY and
|
||||
FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY.
|
||||
|
||||
|
||||
II. MISCELLANEOUS
|
||||
|
||||
- Support for incremental font loading (controlled with the
|
||||
|
@ -3378,7 +3414,8 @@ Extensions support:
|
|||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
||||
2010 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
|
|
@ -7,13 +7,7 @@ overview of the documentation available:
|
|||
I. Normal installation and upgrades
|
||||
===================================
|
||||
|
||||
1. Native TrueType Hinting
|
||||
|
||||
Native TrueType hinting is disabled by default[1]. If you really
|
||||
need it, read the file `TRUETYPE' for information.
|
||||
|
||||
|
||||
2. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
|
||||
1. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
|
||||
|
||||
Please read *both* `UPGRADE.UNIX' and `INSTALL.UNIX' to install or
|
||||
upgrade FreeType 2 on a Unix system. Note that you *need* GNU
|
||||
|
@ -23,22 +17,22 @@ I. Normal installation and upgrades
|
|||
GNU Make VERSION 3.80 OR NEWER IS NEEDED!
|
||||
|
||||
|
||||
3. On VMS with the `mms' build tool
|
||||
2. On VMS with the `mms' build tool
|
||||
|
||||
See `INSTALL.VMS' for installation instructions on this platform.
|
||||
|
||||
|
||||
4. Other systems using GNU Make
|
||||
3. Other systems using GNU Make
|
||||
|
||||
On non-Unix platforms, it is possible to build the library using
|
||||
GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[2]!
|
||||
GNU Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[1]!
|
||||
This methods supports several compilers on Windows, OS/2, and
|
||||
BeOS, including MinGW, Visual C++, Borland C++, and more.
|
||||
|
||||
Instructions are provided in the file `INSTALL.GNU'.
|
||||
|
||||
|
||||
5. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
|
||||
4. With an IDE Project File (e.g., for Visual Studio or CodeWarrior)
|
||||
|
||||
We provide a small number of `project files' for various IDEs to
|
||||
automatically build the library as well. Note that these files
|
||||
|
@ -49,7 +43,7 @@ I. Normal installation and upgrades
|
|||
directory, where <system> stands for your OS or environment.
|
||||
|
||||
|
||||
6. From you own IDE, or own Makefiles
|
||||
5. From you own IDE, or own Makefiles
|
||||
|
||||
If you want to create your own project file, follow the
|
||||
instructions given in the `INSTALL.ANY' document of this
|
||||
|
@ -66,9 +60,7 @@ II. Custom builds of the library
|
|||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
[1] More details on: http://www.freetype.org/patents.html
|
||||
|
||||
[2] make++, a make tool written in Perl, has sufficient support of GNU
|
||||
[1] make++, a make tool written in Perl, has sufficient support of GNU
|
||||
make extensions to build FreeType. See
|
||||
|
||||
http://makepp.sourceforge.net
|
||||
|
@ -78,8 +70,8 @@ II. Custom builds of the library
|
|||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
|
||||
by David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
modified, and distributed under the terms of the FreeType project
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче