Index: /cvsroot/mozilla/content/smil/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/smil/Makefile.in diff -N content/smil/Makefile.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/Makefile.in 29 Aug 2005 09:47:07 -0000 @@ -0,0 +1,48 @@ +# +# ***** 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) 1999 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# 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 ***** + +DEPTH = ../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS = public src + +include $(topsrcdir)/config/rules.mk + Index: /cvsroot/mozilla/content/smil/public/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/Makefile.in diff -N content/smil/public/Makefile.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/Makefile.in 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,60 @@ +# +# ***** 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) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# 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 ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = content + +EXPORTS = \ + nsISMILAnimatableAttribute.h \ + nsISMILAnimatableElement.h \ + nsISMILAnimatableValue.h \ + nsISMILAnimatableValueFactory.h \ + nsISMILAnimationController.h \ + nsISMILAnimationElement.h \ + nsISMILTimeClient.h \ + nsISMILTimeContainer.h \ + nsISMILTimedElement.h \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableAttribute.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableAttribute.h diff -N content/smil/public/nsISMILAnimatableAttribute.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimatableAttribute.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,60 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATABLEATTRIBUTE_H__ +#define __NS_ISMILANIMATABLEATTRIBUTE_H__ + +#include "nsISupports.h" + +class nsISMILAnimatableValue; + +//////////////////////////////////////////////////////////////////////// +// nsISMILAnimatableAttribute + +// {c487920a-7d12-40ff-bf3b-c39dd4797cff} +#define NS_ISMILANIMATABLEATTRIBUTE_IID \ +{ 0xc487920a, 0x7d12, 0x40ff, { 0xbf, 0x3b, 0xc3, 0x9d, 0xd4, 0x79, 0x7c, 0xff } } + +class nsISMILAnimatableAttribute : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATABLEATTRIBUTE_IID) + + // TODO[2]: Try to remove this interface altogether + virtual nsISMILAnimatableValue* GetBaseValue()=0; + virtual nsISMILAnimatableValue* GetAnimValue()=0; + virtual nsresult SetAnimValue(nsISMILAnimatableValue& aValue)=0; +}; + +#endif // __NS_ISMILANIMATABLEATTRIBUTE_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableElement.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableElement.h diff -N content/smil/public/nsISMILAnimatableElement.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimatableElement.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,59 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATABLEELEMENT__ +#define __NS_ISMILANIMATABLEELEMENT__ + +#include "nsISupports.h" +#include "nsISMILAnimatableAttribute.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILAnimatableElement: interface of elements that have attributes +// that can be animated. + +// {5DD94E10-FD8D-42FB-B054-8D29F771033A} +#define NS_ISMILANIMATABLEELEMENT_IID \ +{ 0x5dd94e10, 0xfd8d, 0x42fb, { 0xb0, 0x54, 0x8d, 0x29, 0xf7, 0x71, 0x03, 0x3a } } + +class nsISMILAnimatableElement : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATABLEELEMENT_IID) + + virtual nsISMILAnimatableAttribute* + GetAnimatableAttribute(PRInt32 aNamespaceID, + nsIAtom* aName)=0; +}; + +#endif // __NS_ISMILANIMATABLEELEMENT__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValue.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValue.h diff -N content/smil/public/nsISMILAnimatableValue.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValue.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,64 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATABLEVALUE_H__ +#define __NS_ISMILANIMATABLEVALUE_H__ + +#include "nsISupports.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILAnimatableValue + +// {01d2aae5-9de4-4e8f-a1e9-ae660ad27925} +#define NS_ISMILANIMATABLEVALUE_IID \ +{ 0x01d2aae5, 0x9de4, 0x4e8f, { 0xa1, 0xe9, 0xae, 0x66, 0x0a, 0xd2, 0x79, 0x25 } } + +class nsISMILAnimatableValue : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATABLEVALUE_IID) + + virtual void ComputeDistance(const nsISMILAnimatableValue& aFrom, + const nsISMILAnimatableValue& aTo, + PRFloat64& aDistance) const = 0; + + virtual nsresult Interpolate(nsISMILAnimatableValue& aEndValue, + float aUnitDistance, + nsISMILAnimatableValue* aResult) = 0; + + virtual void Accumulate(const nsISMILAnimatableValue& aAddedValue) = 0; + virtual void Set(const nsISMILAnimatableValue& aNewValue) = 0; +}; + +#endif // __NS_ISMILANIMATABLEVALUE_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValueFactory.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValueFactory.h diff -N content/smil/public/nsISMILAnimatableValueFactory.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimatableValueFactory.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,59 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATABLEVALUEFACTORY_H__ +#define __NS_ISMILANIMATABLEVALUEFACTORY_H__ + +#include "nsISupports.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILAnimatableValueFactory + +// {819c6fae-1574-49fb-b593-b5b3f941d095} +#define NS_ISMILANIMATABLEVALUEFACTORY_IID \ +{ 0x819c6fae, 0x1574, 0x49fb, { 0xb5, 0x93, 0xb5, 0xb3, 0xf9, 0x41, 0xd0, 0x95 } } + +class nsISMILAnimatableValueFactory : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATABLEVALUEFACTORY_IID) + + virtual nsresult Create(nsISMILAnimatableValue** aResult) const = 0; + + virtual nsresult CreateFromSpec(const nsAString& aSpec, + nsISMILAnimatableValue** aResult, + PRBool& aIsAddable) const = 0; +}; + +#endif // __NS_ISMILANIMATABLEVALUEFACTORY_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimationController.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimationController.h diff -N content/smil/public/nsISMILAnimationController.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimationController.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,67 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATIONCONTROLLER_H__ +#define __NS_ISMILANIMATIONCONTROLLER_H__ + +#include "nsIAnimationController.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILAnimationController: Animation controller + +#define NS_ISMILANIMATIONCONTROLLER_IID \ +{ 0xd2c81398, 0x1f30, 0x4303, { 0xbe, 0xbe, 0xc5, 0x0c, 0x01, 0xfd, 0xd8, 0x85 } } + +class nsISMILTimeContainer; + +class nsISMILAnimationController : public nsIAnimationController +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATIONCONTROLLER_IID) + + // nsIAnimationController methods + virtual nsresult Pause()=0; + virtual nsresult Resume()=0; + + // Eventually, this will probably be all nsISMILTimedElements so that it is + // possible to have hierarchies of containers (which will implement + // nsISMILTimedElement), and then these methods will be replaced with + // SetRootElement. + virtual nsresult AddTimeContainer(nsISMILTimeContainer* aContainer)=0; + virtual nsresult RemoveTimeContainer(nsISMILTimeContainer* aContainer)=0; +}; + +nsISMILAnimationController* NS_NewSMILAnimationController(); + +#endif // __NS_ISMILANIMATIONCONTROLLER_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILAnimationElement.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILAnimationElement.h diff -N content/smil/public/nsISMILAnimationElement.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILAnimationElement.h 29 Aug 2005 09:47:08 -0000 @@ -0,0 +1,83 @@ + +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILANIMATIONELEMENT_H__ +#define __NS_ISMILANIMATIONELEMENT_H__ + +#include "nsISupports.h" + +class nsISMILAnimatableAttribute; + +enum nsSMILCalcMode +{ + NS_SMIL_CALCMODE_LINEAR, + NS_SMIL_CALCMODE_DISCRETE, + NS_SMIL_CALCMODE_PACED, + NS_SMIL_CALCMODE_SPLINE +}; + +// {14eb1aab-e4ba-4c77-be89-195ef975c90d} +#define NS_ISMILANIMATIONELEMENT_IID \ +{ 0x14eb1aab, 0xe4ba, 0x4c77, { 0xbe, 0x89, 0x19, 0x5e, 0xf9, 0x75, 0xc9, 0x0d } } + +class nsISMILAnimationElement : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILANIMATIONELEMENT_IID) + + virtual nsresult Init(nsISMILAnimatableAttribute& aAttribute)=0; + virtual PRBool IsInitialised()=0; + + // TODO[2]: Unsetters or some method for handling un-setting attributes + virtual nsresult SetFrom(const nsAString& aFrom)=0; + virtual nsresult SetTo(const nsAString& aTo)=0; + virtual nsresult SetBy(const nsAString& aBy)=0; + virtual nsresult SetValues(const nsAString& aValues)=0; + virtual nsresult SetKeyTimes(const nsAString& aKeyTimes)=0; + virtual nsresult SetKeySplines(const nsAString& aKeySplines)=0; + + virtual PRBool IsAdditive() const=0; + virtual void SetAdditive(PRBool aAdditive)=0; + + virtual PRBool IsCumulative() const=0; + virtual void SetCumulative(PRBool aCumulative)=0; + + virtual nsSMILCalcMode GetCalcMode() const=0; + virtual void SetCalcMode(nsSMILCalcMode aCalcMode)=0; +}; + +nsISMILAnimationElement* NS_NewSMILAnimationElement(); + +#endif //__NS_ISMILANIMATIONELEMENT_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILTimeClient.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILTimeClient.h diff -N content/smil/public/nsISMILTimeClient.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILTimeClient.h 29 Aug 2005 09:47:09 -0000 @@ -0,0 +1,57 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILTIMECLIENT_H__ +#define __NS_ISMILTIMECLIENT_H__ + +#include "nsISupports.h" + +class nsSMILTimeValue; + +//////////////////////////////////////////////////////////////////////// +// nsISMILTimeClient + +// {196f66f4-e6f6-420b-a337-da42a2efccde} +#define NS_ISMILTIMECLIENT_IID \ +{ 0x196f66f4, 0xe6f6, 0x420b, { 0xa3, 0x37, 0xda, 0x42, 0xa2, 0xef, 0xcc, 0xde } } + +class nsISMILTimeClient : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILTIMECLIENT_IID) + + virtual void SampleAt(const PRInt64& simpleTime, + const nsSMILTimeValue& simpleDuration)=0; +}; + +#endif // __NS_ISMILTIMECLIENT_H__ Index: /cvsroot/mozilla/content/smil/public/nsISMILTimeContainer.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILTimeContainer.h diff -N content/smil/public/nsISMILTimeContainer.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILTimeContainer.h 29 Aug 2005 09:47:09 -0000 @@ -0,0 +1,67 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILTIMECONTAINER_H__ +#define __NS_ISMILTIMECONTAINER_H__ + +#include "nsISupports.h" +#include "nsISMILTimedElement.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILTimeContainer: Time container + +// {46b51a7b-d857-45f1-9c7d-4d0d12719238} +#define NS_ISMILTIMECONTAINER_IID \ +{ 0x46b51a7b, 0xd857, 0x45f1, { 0x9c, 0x7d, 0x4d, 0x0d, 0x12, 0x71, 0x92, 0x38 } } + +// When implementing SMIL 2.0 time containers, this would inherit from +// nsISMILTimedElement, amongst other changes +class nsISMILTimeContainer : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILTIMECONTAINER_IID) + + virtual nsresult Pause()=0; + virtual nsresult Resume()=0; + + // We may later change this to SampleAt and maintain separate host document + // and document fragment times. This would allow more advanced time + // manipulations for documents with several animated SVG document fragments. + virtual void Sample()=0; + + virtual nsresult AddTimedElement(nsISMILTimedElement* aElement)=0; + virtual nsresult RemoveTimedElement(nsISMILTimedElement* aElement)=0; +}; + +#endif // __NS_ISMILTIMECONTAINER_H__ + Index: /cvsroot/mozilla/content/smil/public/nsISMILTimedElement.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/public/nsISMILTimedElement.h diff -N content/smil/public/nsISMILTimedElement.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/public/nsISMILTimedElement.h 29 Aug 2005 09:47:09 -0000 @@ -0,0 +1,68 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILTIMEDELEMENT_H__ +#define __NS_ISMILTIMEDELEMENT_H__ + +#include "nsWeakReference.h" + +class nsISMILTimeClient; +class nsSMILTimeValue; +class nsSMILInstanceTime; + +//////////////////////////////////////////////////////////////////////// +// nsISMILTimedElement + +// {c5f60446-5c1a-4f3b-8ce3-646199ac97f2} +#define NS_ISMILTIMEDELEMENT_IID \ +{ 0xc5f60446, 0x5c1a, 0x4f3b, { 0x8c, 0xe3, 0x64, 0x61, 0x99, 0xac, 0x97, 0xf2 } } + +class nsISMILTimedElement : public nsSupportsWeakReference +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILTIMEDELEMENT_IID) + + virtual void AddInstanceTime(nsSMILInstanceTime* aInstanceTime, + PRBool aIsBegin)=0; + virtual nsresult SetBeginSpec(const nsAString& aBeginSpec)=0; + virtual nsresult SetEndSpec(const nsAString& aBeginSpec)=0; + virtual nsresult SetSimpleDuration(const nsAString& aDurSpec)=0; + virtual void AddTimeClient(nsISMILTimeClient* aClient)=0; + // TODO[1]: RemoveClient + virtual void SampleAt(const PRInt64& aDocumentTime)=0; +}; + +nsISMILTimedElement* NS_NewSMILTimedElement(); + +#endif // __NS_ISMILTIMEDELEMENT_H__ + Index: /cvsroot/mozilla/content/smil/src/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/Makefile.in diff -N content/smil/src/Makefile.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/Makefile.in 29 Aug 2005 09:47:09 -0000 @@ -0,0 +1,85 @@ +# +# ***** 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) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# 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 ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MODULE = content +LIBRARY_NAME = gkconsmil_s +LIBXUL_LIBRARY = 1 + +REQUIRES = xpcom \ + string \ + js \ + layout \ + content \ + necko \ + xpconnect \ + docshell \ + webshell \ + imglib2 \ + unicharutil \ + locale \ + $(NULL) + +EXPORTS = \ + nsSMILTimedDocumentRoot.h \ + $(NULL) + +CPPSRCS = \ + nsSMILAnimationController.cpp \ + nsSMILAnimationElement.cpp \ + nsSMILInstanceTime.cpp \ + nsSMILInterval.cpp \ + nsSMILTimedDocumentRoot.cpp \ + nsSMILTimedElement.cpp \ + nsSMILTimeValue.cpp \ + nsSMILTimeValueSpec.cpp \ + $(NULL) + +include $(topsrcdir)/config/config.mk + +# we don't want the shared lib, but we want to force the creation of a static lib. +FORCE_STATIC_LIB = 1 + +include $(topsrcdir)/config/rules.mk + +DEFINES += -D_IMPL_NS_LAYOUT Index: /cvsroot/mozilla/content/smil/src/nsISMILComposable.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsISMILComposable.h diff -N content/smil/src/nsISMILComposable.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsISMILComposable.h 29 Aug 2005 09:47:09 -0000 @@ -0,0 +1,55 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_ISMILCOMPOSABLE_H__ +#define __NS_ISMILCOMPOSABLE_H__ + +#include "nsISupports.h" + +//////////////////////////////////////////////////////////////////////// +// nsISMILComposable + +// {4b05aa22-712e-4a9e-8452-f7c4b2e507e7} +#define NS_ISMILCOMPOSABLE_IID \ +{ 0x4b05aa22, 0x712e, 0x4a9e, { 0x84, 0x52, 0xf7, 0xc4, 0xb2, 0xe5, 0x07, 0xe7 } } + +class nsISMILComposable : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISMILCOMPOSABLE_IID) + + virtual void CalcResult()=0; +}; + +#endif // __NS_ISMILCOMPOSABLE_H__ + Index: /cvsroot/mozilla/content/smil/src/nsSMILAnimationController.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILAnimationController.cpp diff -N content/smil/src/nsSMILAnimationController.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILAnimationController.cpp 29 Aug 2005 09:47:10 -0000 @@ -0,0 +1,253 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsISMILAnimationController.h" +#include "nsComponentManagerUtils.h" +#include "nsWeakReference.h" +#include "nsITimer.h" +#include "nsISMILTimeContainer.h" +#include "nsCOMArray.h" +#include "nsISimpleEnumerator.h" +#include "nsArrayEnumerator.h" + +class nsSMILAnimationController : public nsISMILAnimationController, + public nsSupportsWeakReference, + public nsITimerCallback +{ +public: + virtual ~nsSMILAnimationController(); + + NS_DECL_ISUPPORTS + NS_DECL_NSITIMERCALLBACK + + // nsISMILAnimationController + virtual nsresult Pause(); + virtual nsresult Resume(); + virtual nsresult AddTimeContainer(nsISMILTimeContainer* aContainer); + virtual nsresult RemoveTimeContainer(nsISMILTimeContainer* aContainer); + +protected: + friend nsISMILAnimationController* NS_NewSMILAnimationController(); + + nsresult Init(); + nsresult StartTimer(); + nsresult StopTimer(); + void SampleChildren(); + + nsCOMPtr mTimer; + nsCOMArray mTimeContainers; +}; + +//////////////////////////////////////////////////////////////////////// +// nsSMILAnimationController implementation + +//---------------------------------------------------------------------- +// ctors, dtors, factory methods + +nsSMILAnimationController::~nsSMILAnimationController() +{ + if (mTimer) + mTimer->Cancel(); +} + +nsISMILAnimationController* NS_NewSMILAnimationController() +{ + nsSMILAnimationController* animationController = + new nsSMILAnimationController(); + + if (animationController) + { + nsresult rv = animationController->Init(); + if (NS_FAILED(rv)) + { + delete animationController; + animationController = nsnull; + } + } + + return animationController; +} + + +//---------------------------------------------------------------------- +// nsISupports methods: + +NS_IMPL_ISUPPORTS3(nsSMILAnimationController, + nsISMILAnimationController, + nsIAnimationController, + nsISupportsWeakReference); + +//---------------------------------------------------------------------- +// nsITimerCallback methods + +NS_IMETHODIMP +nsSMILAnimationController::Notify(nsITimer *timer) +{ + NS_ASSERTION(mTimer == timer, + "nsSMILAnimationController::Notify called with incorrect timer"); + + SampleChildren(); + + return NS_OK; +} + + +//---------------------------------------------------------------------- +// nsISMILAnimationController methods: + +nsresult +nsSMILAnimationController::Pause() +{ + // TODO[2]: (for now this just involves calling pause on all the children) + NS_NOTYETIMPLEMENTED("nsSMILAnimationController::Pause"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILAnimationController::Resume() +{ + // TODO[2]: (for now this just involves calling resume on all the children) + NS_NOTYETIMPLEMENTED("nsSMILAnimationController::Resume"); + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILAnimationController::AddTimeContainer(nsISMILTimeContainer* aContainer) +{ + if (!aContainer) + return NS_ERROR_NULL_POINTER; + + nsresult rv; + nsCOMPtr weakRef( + getter_AddRefs(do_GetWeakReference(aContainer, &rv)) ); + + if (NS_SUCCEEDED(rv)) + rv = (mTimeContainers.AppendObject(weakRef)) ? NS_OK : NS_ERROR_FAILURE; + + if (NS_SUCCEEDED(rv) && mTimeContainers.Count() == 1) + rv = StartTimer(); + + return rv; +} + +nsresult +nsSMILAnimationController::RemoveTimeContainer(nsISMILTimeContainer* aContainer) +{ + if (!aContainer) + return NS_ERROR_NULL_POINTER; + + nsresult rv; + nsCOMPtr weakRef( + getter_AddRefs(do_GetWeakReference(aContainer, &rv)) ); + + if (NS_SUCCEEDED(rv)) + rv = (mTimeContainers.RemoveObject(weakRef)) ? NS_OK : NS_ERROR_FAILURE; + + if (NS_SUCCEEDED(rv) && mTimeContainers.Count() == 0) + rv = StopTimer(); + + return rv; +} + +//---------------------------------------------------------------------- +// Implementation helpers: + +nsresult +nsSMILAnimationController::Init() +{ + mTimer = do_CreateInstance("@mozilla.org/timer;1"); + return (mTimer) ? NS_OK : NS_ERROR_OUT_OF_MEMORY; +} + +nsresult +nsSMILAnimationController::StartTimer() +{ + NS_ASSERTION(mTimer, "NULL timer!"); + + // TODO[2]: Remove magic number and make timer self-tuning + return mTimer->InitWithCallback(NS_STATIC_CAST(nsITimerCallback*, this), + 25, nsITimer::TYPE_REPEATING_SLACK); +} + +nsresult +nsSMILAnimationController::StopTimer() +{ + NS_ASSERTION(mTimer, "NULL timer!"); + + return mTimer->Cancel(); +} + +void +nsSMILAnimationController::SampleChildren() +{ + // Creating a new enumerator each sample provides thread-safety but I'm not + // sure what the cost is + + nsCOMPtr enumerator; + nsresult rv = + NS_NewArrayEnumerator(getter_AddRefs(enumerator), mTimeContainers); + NS_ENSURE_SUCCESS(rv,); + + PRBool more = PR_FALSE; + nsCOMPtr container; + nsCOMPtr weakRef; + + while (NS_SUCCEEDED(enumerator->HasMoreElements(&more)) && more) + { + if (NS_FAILED(enumerator->GetNext(getter_AddRefs(weakRef))) || !weakRef) + break; + + container = do_QueryReferent(weakRef); + + if (container) + container->Sample(); + } + + /* Non-thread safe version + PRUint32 i = mTimeContainers.Count(); + while (i > 0) + { + --i; + nsCOMPtr + container( do_QueryReferent(mTimeContainers[i]) ); + // The above could be replaced with mTimeContainers.SafeObjectAt(i) to + // provide a little more safety + + if (container) + container->Sample(); + else + mTimeContainers.RemoveObjectAt(i); + } + */ +} + Index: /cvsroot/mozilla/content/smil/src/nsSMILAnimationElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILAnimationElement.cpp diff -N content/smil/src/nsSMILAnimationElement.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILAnimationElement.cpp 29 Aug 2005 09:47:10 -0000 @@ -0,0 +1,353 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsISMILAnimationElement.h" +#include "nsISMILComposable.h" +#include "nsISMILTimeClient.h" +#include "nsSMILTimeValue.h" +#include "nsISMILAnimatableValue.h" +#include "nsISMILAnimatableAttribute.h" +#include "nsISMILAnimatableValueFactory.h" +#include "nsCOMPtr.h" + +//---------------------------------------------------------------------- +// nsSMILAnimationElement + +class nsSMILAnimationElement : public nsISMILAnimationElement, + public nsISMILComposable, + public nsISMILTimeClient +{ +public: + nsSMILAnimationElement(); + + NS_DECL_ISUPPORTS + + // nsISMILAnimationElement + virtual nsresult Init(nsISMILAnimatableAttribute& aAttribute); + virtual PRBool IsInitialised(); + + virtual nsresult SetFrom(const nsAString& aFrom); + virtual nsresult SetTo(const nsAString& aTo); + virtual nsresult SetBy(const nsAString& aBy); + virtual nsresult SetValues(const nsAString& aValues); + virtual nsresult SetKeyTimes(const nsAString& aKeyTimes); + virtual nsresult SetKeySplines(const nsAString& aKeySplines); + + virtual PRBool IsAdditive() const; + virtual void SetAdditive(PRBool aAdditive); + + virtual PRBool IsCumulative() const; + virtual void SetCumulative(PRBool aCumulative); + + virtual nsSMILCalcMode GetCalcMode() const; + virtual void SetCalcMode(nsSMILCalcMode aCalcMode); + + // nsISMILTimeClient methods + virtual void SampleAt(const PRInt64& simpleTime, + const nsSMILTimeValue& simpleDuration); + + // nsISMILComposable methods + virtual void CalcResult(); + +protected: + nsISMILAnimationElement* NS_NewSMILAnimationElement(); + + PRBool mIsAdditive; + PRBool mIsCumulative; + nsSMILCalcMode mCalcMode; + PRBool mIsInitialised; + + // TODO[1]: Remove this--it belongs in the compositor I think + nsCOMPtr mAttribute; + + // TODO[1]: Replace with an array + nsCOMPtr mFrom; + nsCOMPtr mTo; + + nsCOMPtr mAnimValue; + + // TODO[2]: Key times, key splines +}; + +//---------------------------------------------------------------------- +// Constructors etc. + +nsSMILAnimationElement::nsSMILAnimationElement() + : mIsAdditive(PR_TRUE), + mIsCumulative(PR_FALSE), + mCalcMode(NS_SMIL_CALCMODE_LINEAR), + mIsInitialised(PR_FALSE) +{ +} + +nsISMILAnimationElement* +NS_NewSMILAnimationElement() +{ + return new nsSMILAnimationElement(); +} + +//---------------------------------------------------------------------- +// nsISupports methods: + +NS_IMPL_ISUPPORTS3(nsSMILAnimationElement, + nsISMILAnimationElement, + nsISMILComposable, + nsISMILTimeClient); + +//---------------------------------------------------------------------- +// nsISMILAnimationElement methods: + +nsresult +nsSMILAnimationElement::Init(nsISMILAnimatableAttribute& aAttribute) +{ + mAttribute = &aAttribute; + mIsInitialised = PR_TRUE; + return NS_OK; +} + +PRBool +nsSMILAnimationElement::IsInitialised() +{ + return mIsInitialised; +} + +PRBool +nsSMILAnimationElement::IsAdditive() const +{ + return mIsAdditive; +} + +void +nsSMILAnimationElement::SetAdditive(PRBool aAdditive) +{ + // TODO[2] + mIsAdditive = aAdditive; +} + +PRBool +nsSMILAnimationElement::IsCumulative() const +{ + return mIsCumulative; +} + +void +nsSMILAnimationElement::SetCumulative(PRBool aCumulative) +{ + // TODO[2] + mIsCumulative = aCumulative; +} + +nsSMILCalcMode +nsSMILAnimationElement::GetCalcMode() const +{ + return mCalcMode; +} + +void +nsSMILAnimationElement::SetCalcMode(nsSMILCalcMode aCalcMode) +{ + // TODO[2] + mCalcMode = aCalcMode; +} + +nsresult +nsSMILAnimationElement::SetFrom(const nsAString& aFrom) +{ + NS_ASSERTION(mAttribute, "Animation element not initialised."); + + if (!mAttribute || !mIsInitialised) + return NS_ERROR_FAILURE; + + PRBool isAdditive; + nsresult rv; + nsCOMPtr factory( + do_QueryInterface(mAttribute) ); + + if (!factory) + return NS_ERROR_FAILURE; + + rv = factory->CreateFromSpec(aFrom, getter_AddRefs(mFrom), isAdditive); + + if (NS_SUCCEEDED(rv)) + mIsAdditive &= isAdditive; + + return rv; +} + +nsresult +nsSMILAnimationElement::SetTo(const nsAString& aTo) +{ + NS_ASSERTION(mAttribute, "Animation element not initialised."); + + if (!mAttribute || !mIsInitialised) + return NS_ERROR_FAILURE; + + PRBool isAdditive; + nsresult rv; + nsCOMPtr factory( + do_QueryInterface(mAttribute) ); + + if (!factory) + return NS_ERROR_FAILURE; + + rv = factory->CreateFromSpec(aTo, getter_AddRefs(mTo), isAdditive); + + if (NS_SUCCEEDED(rv)) + mIsAdditive &= isAdditive; + + return NS_OK; +} + +nsresult +nsSMILAnimationElement::SetBy(const nsAString& aBy) +{ + // TODO[1] + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILAnimationElement::SetValues(const nsAString& aValues) +{ + // TODO[1] + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILAnimationElement::SetKeyTimes(const nsAString& aKeyTimes) +{ + // TODO[2] + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILAnimationElement::SetKeySplines(const nsAString& aKeySplines) +{ + // TODO[2] + return NS_ERROR_NOT_IMPLEMENTED; +} + + +//---------------------------------------------------------------------- +// nsISMILTimeClient methods + +void +nsSMILAnimationElement::SampleAt(const PRInt64& simpleTime, + const nsSMILTimeValue& simpleDuration) +{ + // TODO[1]: Remove once we implement more advanced from/to/by syntax but make + // sure we check these things before using them. + NS_ASSERTION(mFrom, "From not set"); + NS_ASSERTION(mTo, "To not set"); + + // TODO[1]: Remove this check once we no longer set the attribute here + NS_ASSERTION(mAttribute, "Attribute not set"); + NS_ASSERTION(mIsInitialised, "Trying to sample un-initialised animation"); + + // TODO[3]: All this checking might need to be removed (except in the debug + // build) to improve performance as this method will be called very frequently + if (!mAttribute || !mIsInitialised) + return; + + nsresult rv; + + // Create anim value if it doesn't already exist + if (!mAnimValue) + { + nsCOMPtr factory( + do_QueryInterface(mAttribute) ); + if (factory) + factory->Create(getter_AddRefs(mAnimValue)); + if (!factory || !mAnimValue) + return; + } + + if (!simpleDuration.IsResolved() && !simpleDuration.IsIndefinite()) + { + // TODO[3]: Generate an error! + return; + } + + // TODO[1]: This is not right (except from from-to animation) but we need test + // cases to cover this behaviour + if (simpleDuration.IsIndefinite()) + { + mFrom->Interpolate(*mFrom, 0.0f, mAnimValue); + } + else + { + const PRInt64 &dur = simpleDuration.GetMilliseconds(); + double unitDistance; + + if (LL_CMP(simpleTime, >, dur)) + { + // TODO[1]: Remove this one! (Replace with proper filling + repeating) + unitDistance = 1.0; + } + else if (!LL_GE_ZERO(simpleTime)) + { + NS_ASSERTION(PR_TRUE, "Animation sampled with negative simple time"); + unitDistance = 0.0; + } + else + { + double fTime; + double fDur; + + LL_L2D(fTime, simpleTime); + LL_L2D(fDur, dur); + + unitDistance = fTime / fDur; + } + + rv = mFrom->Interpolate(*mTo, + NS_STATIC_CAST(float, unitDistance), + mAnimValue); + NS_ENSURE_SUCCESS(rv,); + } + + // We can't just call Set on the animated value itself, because the observers + // of the animated object as a whole need to be updated too. + rv = mAttribute->SetAnimValue(*mAnimValue); + + NS_ENSURE_SUCCESS(rv,); +} + +//---------------------------------------------------------------------- +// nsISMILComposable methods + +void +nsSMILAnimationElement::CalcResult() +{ + // TODO[1] +} + Index: /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.cpp diff -N content/smil/src/nsSMILInstanceTime.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.cpp 29 Aug 2005 09:47:11 -0000 @@ -0,0 +1,69 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILInstanceTime.h" +#include "nsSMILTimeValueSpec.h" +#include "nsSMILTimeValue.h" + +//---------------------------------------------------------------------- +// Implementation + +// This factory method really isn't needed +nsSMILInstanceTime* NS_NewSMILInstanceTime(const nsSMILTimeValue &aTime, + nsSMILTimeValueSpec *aCreator) +{ + nsSMILInstanceTime* result + = new nsSMILInstanceTime(aTime, aCreator); + + if (!result) + return nsnull; + + return result; +} + +nsSMILInstanceTime::nsSMILInstanceTime (const nsSMILTimeValue &aTime, + nsSMILTimeValueSpec *aCreator) + : mTime(aTime) // Copy the time +{ + if (aCreator) + mCreator = do_GetWeakReference(aCreator); +} + +//---------------------------------------------------------------------- +// nsISupports + +NS_IMPL_ISUPPORTS1(nsSMILInstanceTime, nsSMILInstanceTime) + +//---------------------------------------------------------------------- +// nsSMILInstanceTime + Index: /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.h diff -N content/smil/src/nsSMILInstanceTime.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILInstanceTime.h 29 Aug 2005 09:47:11 -0000 @@ -0,0 +1,83 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_SMILINSTANCETIME_H__ +#define __NS_SMILINSTANCETIME_H__ + +#include "nsISupports.h" +#include "nsSMILTimeValue.h" +#include "nsWeakReference.h" + +class nsSMILTimeValueSpec; + +//////////////////////////////////////////////////////////////////////// +// nsSMILInstanceTime + +// {57dd41a4-717d-4922-8708-813a598b6443} +#define NS_SMILINSTANCETIME_IID \ +{ 0x57dd41a4, 0x717d, 0x4922, { 0x87, 0x08, 0x81, 0x3a, 0x59, 0x8b, 0x64, 0x43 } } + +// TODO[1]: Consider making the constructor public, removing the factory method +// and storing instances of this object on the heap? +// TODO[1]: Don't bother making this XPCOM-able--is it really going to be +// reference counted? + +class nsSMILInstanceTime : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_SMILINSTANCETIME_IID) + NS_DECL_ISUPPORTS + + const nsSMILTimeValue &GetTime() const { return mTime; } + // dependent update + +protected: + nsSMILInstanceTime (const nsSMILTimeValue &aTime, + nsSMILTimeValueSpec *aCreator); + + friend nsSMILInstanceTime* NS_NewSMILInstanceTime( + const nsSMILTimeValue &aTime, + nsSMILTimeValueSpec *aCreator); + + nsSMILTimeValue mTime; + nsWeakPtr mCreator; +}; + +//////////////////////////////////////////////////////////////////////// +// Factory methods + +nsSMILInstanceTime* NS_NewSMILInstanceTime(const nsSMILTimeValue &aTime, + nsSMILTimeValueSpec *aCreator); + +#endif // __NS_SMILINSTANCETIME_H__ + Index: /cvsroot/mozilla/content/smil/src/nsSMILInterval.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILInterval.cpp diff -N content/smil/src/nsSMILInterval.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILInterval.cpp 29 Aug 2005 09:47:11 -0000 @@ -0,0 +1,38 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILInterval.h" + + +//---------------------------------------------------------------------- +// Implementation Index: /cvsroot/mozilla/content/smil/src/nsSMILInterval.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILInterval.h diff -N content/smil/src/nsSMILInterval.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILInterval.h 29 Aug 2005 09:47:11 -0000 @@ -0,0 +1,50 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_SMILINTERVAL_H__ +#define __NS_SMILINTERVAL_H__ + +#include "nsISupports.h" + +//////////////////////////////////////////////////////////////////////// +// nsSMILInterval class + +class nsSMILInterval +{ +public: + nsSMILInterval() {} + +private: +}; + +#endif // __NS_SMILINTERVAL_H__ Index: /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.cpp diff -N content/smil/src/nsSMILTimeValue.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.cpp 29 Aug 2005 09:47:11 -0000 @@ -0,0 +1,139 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILTimeValue.h" +#include "prlong.h" +#include "nsDebug.h" + +PRInt64 nsSMILTimeValue::mUnresolvedSeconds = LL_MaxInt(); + +//---------------------------------------------------------------------- +// Implementation + +// Default constructor creates an unresolved time +nsSMILTimeValue::nsSMILTimeValue() + : mMilliseconds(LL_MaxInt()), + mIndefinite(PR_FALSE), + mResolved(PR_FALSE) +{} + +//---------------------------------------------------------------------- +// nsSMILTimeValue methods: + +// TODO[3]: Profile and move the most accessed methods inline + +PRBool +nsSMILTimeValue::IsIndefinite() const +{ + return mIndefinite; +} + +void +nsSMILTimeValue::SetIndefinite() +{ + mResolved = PR_FALSE; + mIndefinite = PR_TRUE; + mMilliseconds = LL_MaxInt(); +} + +PRBool +nsSMILTimeValue::IsResolved() const +{ + return mResolved; +} + +void +nsSMILTimeValue::SetUnresolved() +{ + mResolved = PR_FALSE; + mIndefinite = PR_FALSE; + mMilliseconds = LL_MaxInt(); +} + +const PRInt64& +nsSMILTimeValue::GetMilliseconds() const +{ + NS_ASSERTION(mResolved, "GetMilliseconds() called for unresolved time."); + + if (!mResolved) + return mUnresolvedSeconds; + + return mMilliseconds; +} + +void +nsSMILTimeValue::SetMilliseconds(const PRInt64& aMillis) +{ + mResolved = PR_TRUE; + mIndefinite = PR_FALSE; + mMilliseconds = aMillis; +} + +PRInt8 +nsSMILTimeValue::CompareTo(const nsSMILTimeValue& aCompare) const +{ + PRInt8 result; + + if (mResolved) + { + result = (aCompare.mResolved) + ? CmpLL(mMilliseconds, aCompare.mMilliseconds) + : -1; + } + else if (mIndefinite) + { + if (aCompare.mResolved) + result = 1; + else if (aCompare.mIndefinite) + result = 0; + else + result = -1; + } + else + { + result = (aCompare.mResolved || aCompare.mIndefinite) ? 1 : 0; + } + + return result; +} + +// A signed comparison of two signed 64-bit integers +PRInt8 +nsSMILTimeValue::CmpLL(const PRInt64& a, const PRInt64& b) const +{ + if (LL_EQ(a, b)) + return 0; + else + return (LL_CMP(a, >, b)) ? 1 : -1; +} + Index: /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.h diff -N content/smil/src/nsSMILTimeValue.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimeValue.h 29 Aug 2005 09:47:12 -0000 @@ -0,0 +1,101 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_SMILTIMEVALUE_H__ +#define __NS_SMILTIMEVALUE_H__ + +#include "prtypes.h" + +//////////////////////////////////////////////////////////////////////// +// nsSMILTimeValue class +// +// This class considers three orthogonal cases: +// +// 1) The time is resolved and has a millisecond value +// 2) The time is indefinite +// 3) The time in unresolved +// +// There is considerable chance for confusion with regards to the indefinite +// state. Is it resolved? We adopt the convention that it is NOT resolved (but +// nor is it unresolved). This simplifies implementation as you can then write: +// +// if (time.IsResolved()) +// x = time.GetMilliseconds() +// +// instead of: +// +// if (time.IsResolved() && !time.IsIndefinite()) +// x = time.GetMilliseconds() +// +// Testing if a time is unresolved becomes more complicated but this is tested +// much less often. +// +// In summary: +// +// State | GetMilliseconds | IsResolved | IsIndefinite +// --------------+--------------------+--------------------+------------------- +// Resolved | The millisecond | PR_TRUE | PR_FALSE +// | time | | +// --------------+--------------------+--------------------+------------------- +// Indefinite | LL_MaxInt | PR_FALSE | PR_TRUE +// --------------+--------------------+--------------------+------------------- +// Unresolved | LL_MaxInt | PR_FALSE | PR_FALSE + +class nsSMILTimeValue +{ +public: + // Creates an unresolved time value + nsSMILTimeValue(); + + PRBool IsIndefinite() const; + void SetIndefinite(); + + PRBool IsResolved() const; + void SetUnresolved(); + + const PRInt64& GetMilliseconds() const; + void SetMilliseconds(const PRInt64& aMillis); + + PRInt8 CompareTo(const nsSMILTimeValue& aCompare) const; + +private: + PRInt8 CmpLL(const PRInt64& a, const PRInt64& b) const; + + static PRInt64 mUnresolvedSeconds; + + PRInt64 mMilliseconds; + PRBool mIndefinite; + PRBool mResolved; +}; + +#endif // __NS_SMILTIMEVALUE_H__ Index: /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.cpp diff -N content/smil/src/nsSMILTimeValueSpec.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.cpp 29 Aug 2005 09:47:12 -0000 @@ -0,0 +1,439 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILTimeValueSpec.h" +#include "nsSMILTimeValue.h" +#include "nsSMILInstanceTime.h" +#include "nsCRT.h" +#include "prdtoa.h" + +const PRUint32 nsSMILTimeValueSpec::MSEC_PER_SEC = 1000; +const PRUint32 nsSMILTimeValueSpec::MSEC_PER_MIN = 1000 * 60; +const PRUint32 nsSMILTimeValueSpec::MSEC_PER_HOUR = 1000 * 60 * 60; + +//---------------------------------------------------------------------- +// Implementation + +// We can't return a raw pointer here because we call SetSpec, which calls +// getWeakReference on the newly created value spec which will cause it to be +// destroyed unless it is addref'ed first. + +nsresult NS_NewSMILTimeValueSpec(nsISMILTimedElement* aOwner, + PRBool aIsBegin, + const nsAString& aStringSpec, + nsSMILTimeValueSpec** aResult) +{ + if (nsnull == aResult) return NS_ERROR_NULL_POINTER; + + *aResult = nsnull; + + nsSMILTimeValueSpec* valueSpec = new nsSMILTimeValueSpec(aOwner, aIsBegin); + + if (!valueSpec) return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(valueSpec); + + nsresult rv = valueSpec->SetSpec(aStringSpec); + + if (NS_FAILED(rv)) + { + NS_RELEASE(valueSpec); + return rv; + } + + *aResult = valueSpec; + + return NS_OK; +} + +nsSMILTimeValueSpec::nsSMILTimeValueSpec(nsISMILTimedElement* aOwner, + PRBool aIsBegin) + : mIsBegin(aIsBegin), + mOffset() // initalises to zero +{ + if (aOwner) + mOwner = do_GetWeakReference(aOwner); +} + +//---------------------------------------------------------------------- +// nsISupports + +NS_IMPL_ISUPPORTS2(nsSMILTimeValueSpec, + nsSMILTimeValueSpec, + nsISupportsWeakReference) + +//---------------------------------------------------------------------- +// nsSMILTimeValueSpec + +nsresult +nsSMILTimeValueSpec::SetSpec(const nsAString& aStringSpec) +{ + // TODO[2]: Parse other specifiers + nsSMILTimeValue clockTime; + nsresult rv = ParseClockValue(aStringSpec, + &clockTime, + true); // allow + or - + + if (NS_FAILED(rv) || !clockTime.IsResolved()) + return NS_ERROR_FAILURE; + + mOffset = clockTime.GetMilliseconds(); + + if (mOwner) + { + nsSMILTimeValue time; + time.SetMilliseconds(mOffset); + nsCOMPtr instance = NS_NewSMILInstanceTime(time, this); + + nsCOMPtr owner = do_QueryReferent(mOwner); + if (owner) + owner->AddInstanceTime(instance, mIsBegin); + else + rv = NS_ERROR_FAILURE; + } + + return rv; +} + +// This method can actually parse more than a clock value as defined in the +// SMIL Animation specification. It can also parse: +// - the + or - before an offset +// - the special value "indefinite" +// - the special value "media" +// +// Because the value "media" cannot be represented as part of an nsSMILTimeValue +// and has different meanings depending on where it is used, it is passed out as +// a separate parameter (which can be set to null if the media attribute is not +// allowed). +// +// aResult may be NULL, e.g. to check if the string is a valid clock value +nsresult +nsSMILTimeValueSpec::ParseClockValue(const nsAString& aStringSpec, + nsSMILTimeValue* aResult, + PRBool aAllowSign, // = false + PRBool aAllowIndefinite, // = false + PRBool aAllowMedia, // = false + PRBool* aIsMedia) // = nsnull +{ + PRInt64 offset = LL_Zero(); + PRFloat64 component = 0.0l; + + PRInt8 sign = 0; + PRUint8 colonCount = 0; + + PRBool started = PR_FALSE; + PRBool isValid = PR_TRUE; + + PRInt32 metricMultiplicand = MSEC_PER_SEC; + + PRBool numIsReal = PR_FALSE; + PRBool prevNumCouldBeMin = PR_FALSE; + PRBool numCouldBeMin = PR_FALSE; + PRBool numCouldBeSec = PR_FALSE; + PRBool isIndefinite = PR_FALSE; + + char* spec; + char* str = spec = ToNewCString(aStringSpec); + + if (aIsMedia) + *aIsMedia = PR_FALSE; + + while (*str) + { + if (IsSpace(*str)) + { + if (started) + { + ++str; + break; + } + // else, we haven't started yet, ignore initial whitespace + } + else if (aAllowSign && (*str == '+' || *str == '-')) + { + if (sign != 0) + { + // sign has already been set + isValid = PR_FALSE; + break; + } + + if (started) + { + // sign appears in the middle of the string + isValid = PR_FALSE; + break; + } + + sign = (*str == '+') ? 1 : -1; + } + // The NS_IS_DIGIT etc. macros are not locale-specific + else if (NS_IS_DIGIT(*str)) + { + char *end; + + prevNumCouldBeMin = numCouldBeMin; + + if (!GetClockComponent(str, &end, component, numIsReal, numCouldBeMin, + numCouldBeSec)) + { + isValid = PR_FALSE; + break; + } + + started = PR_TRUE; + str = end - 1; + } + else if (*str == ':') + { + ++colonCount; + + // Neither minutes nor hours can be reals + if (numIsReal) + { + isValid = PR_FALSE; + break; + } + + // Clock value can't start with a ':' + if (!started) + { + isValid = PR_FALSE; + break; + } + + // Can't have more than two colons + if (colonCount > 2) + { + isValid = PR_FALSE; + break; + } + + // Multiply the offset by 60 and add the last accumulated component + PRInt64 component64; + LL_D2L(component64, component); + LL_MUL(offset, offset, LL_INIT(0,60)); + LL_ADD(offset, offset, component64); + + component = 0.0l; + } + else if (NS_IS_ALPHA(*str)) + { + if (colonCount > 0) + { + isValid = PR_FALSE; + break; + } + + char* end; + if (strstr(str, "indefinite") == str && aAllowIndefinite) + { + // We set a separate flag because we don't know what the state of the + // passed in time value is and we shouldn't change it in the case of a + // bad input string (so we can't initialise it to 0ms for example). + isIndefinite = PR_TRUE; + if (aResult) + aResult->SetIndefinite(); + } + else if (strstr(str, "media") == str && aAllowMedia) + { + if (aIsMedia) + *aIsMedia = PR_TRUE; + } + else if (!GetMetricMultiplicand(str, &end, metricMultiplicand)) + { + isValid = PR_FALSE; + break; + } + + str = end; + + // Nothing must come after the string except whitespace + break; + } + else + { + isValid = PR_FALSE; + break; + } + + ++str; + } + + if (!started) isValid = PR_FALSE; + + // Process remainder of string (if any) to ensure it is only trailing + // whitespace (embedded whitespace is not allowed) + while (*str && isValid) + { + if (!IsSpace(*str)) isValid = PR_FALSE; + ++str; + } + + nsMemory::Free(spec); + + // No more processing required if the value was "indefinite" or "media". + if (isIndefinite || (aIsMedia && *aIsMedia)) + return NS_OK; + + // If there is more than one colon then the previous component must be a + // correctly formatted minute (i.e. two digits between 00 and 59) and the + // latest component must be a correctly formatted second (i.e. two digits + // before the .) + if (colonCount > 0 && (!prevNumCouldBeMin || !numCouldBeSec)) + isValid = PR_FALSE; + + if (isValid) + { + // Tack on the last component + if (colonCount > 0) + { + LL_MUL(offset, offset, LL_INIT(0,60)); + LL_MUL(offset, offset, LL_INIT(0,1000)); + component *= 1000; + // rounding + component = (component >= 0) ? component + 0.5l : component - 0.5l; + PRInt64 component64; + LL_D2L(component64, component); + LL_ADD(offset, offset, component64); + } + else + { + component *= metricMultiplicand; + // rounding + component = (component >= 0) ? component + 0.5l : component - 0.5l; + LL_D2L(offset, component); + } + + if (aResult) + { + PRInt64 millis = offset; + + if (sign == -1) + LL_NEG(millis, offset); + + aResult->SetMilliseconds(millis); + } + } + + return (isValid) ? NS_OK : NS_ERROR_FAILURE; +} + +// NS_IS_SPACE relies on isspace which may return true for \xB and \xC but +// SMILANIM does not consider these characters to be whitespace. +inline PRBool +nsSMILTimeValueSpec::IsSpace(const char c) +{ + return (c == 0x9 || c == 0xA || c == 0xD || c == 0x20); +} + +inline PRBool +nsSMILTimeValueSpec::GetClockComponent(const char* aSrc, + char** aEnd, + PRFloat64& aResult, + PRBool& aIsReal, + PRBool& aCouldBeMin, + PRBool& aCouldBeSec) +{ + char *rest; + PRFloat64 value = PR_strtod(aSrc, &rest); + + // Check a number was found + if (rest == aSrc) + return PR_FALSE; + + // Check it's not expressed in exponential form + PRBool isExp = (PL_strnpbrk(aSrc, "eE", rest - aSrc) != nsnull); + if (isExp) + return PR_FALSE; + + // Don't allow real numbers of the form "23." + if (*(rest - 1) == '.') + return PR_FALSE; + + // Number looks good + aResult = value; + *aEnd = rest; + + // Set some flags so we can check this number is valid once we know + // whether it's an hour, minute string etc. + aIsReal = (PL_strnchr(aSrc, '.', rest - aSrc) != nsnull); + aCouldBeMin = (value < 60.0l && ((rest - aSrc) == 2)); + aCouldBeSec = (value < 60.0l || + (value == 60.0l && aSrc[0] == '5')); // Take care of rounding error + aCouldBeSec &= (PL_strlen(aSrc) >= 2 && + (aSrc[2] == '\0' || aSrc[2] == '.' || IsSpace(aSrc[2]))); + + return PR_TRUE; +} + +inline PRBool +nsSMILTimeValueSpec::GetMetricMultiplicand(char* aSrc, + char** aEnd, + PRInt32& multiplicand) +{ + nsresult result = PR_TRUE; + + switch (*aSrc) + { + case 'h': + *aEnd = aSrc + 1; + multiplicand = MSEC_PER_HOUR; + break; + case 'm': + if (aSrc[1] == 'i' && aSrc[2] == 'n') + { + *aEnd = aSrc + 3; + multiplicand = MSEC_PER_MIN; + } + else if (aSrc[1] == 's') + { + *aEnd = aSrc + 2; + multiplicand = 1; + } + else + { + result = PR_FALSE; + } + break; + case 's': + *aEnd = aSrc + 1; + multiplicand = MSEC_PER_SEC; + break; + default: + result = PR_FALSE; + break; + } + + return result; +} + Index: /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.h diff -N content/smil/src/nsSMILTimeValueSpec.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimeValueSpec.h 29 Aug 2005 09:47:13 -0000 @@ -0,0 +1,104 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_SMILTIMEVALUESPEC_H__ +#define __NS_SMILTIMEVALUESPEC_H__ + +#include "nsISupports.h" +#include "nsString.h" +#include "nsWeakReference.h" +#include "nsISMILTimedElement.h" + +class nsSMILTimeValue; + +//////////////////////////////////////////////////////////////////////// +// nsSMILTimeValueSpec class + +// {39d2f376-6bda-42c0-8510-a93b24828a80} +#define NS_SMILTIMEVALUESPEC_IID \ +{ 0x39d2f376, 0x6bda, 0x42c0, { 0x85, 0x10, 0xa9, 0x3b, 0x24, 0x82, 0x8a, 0x80 } } + +class nsSMILTimeValueSpec : public nsSupportsWeakReference +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_SMILTIMEVALUESPEC_IID) + NS_DECL_ISUPPORTS + + // Common parsing methods + static nsresult ParseClockValue(const nsAString& aStringSpec, + nsSMILTimeValue* aResult, + PRBool aAllowSign = false, + PRBool aAllowIndefinite = false, + PRBool aAllowMedia = false, + PRBool* aIsMedia = nsnull); + +protected: + nsSMILTimeValueSpec(nsISMILTimedElement* aOwner, PRBool aIsBegin); + + friend nsresult NS_NewSMILTimeValueSpec(nsISMILTimedElement* aOwner, + PRBool aIsBegin, + const nsAString& aStringSpec, + nsSMILTimeValueSpec** aResult); + + nsresult SetSpec(const nsAString& aStringSpec); + + static inline PRBool IsSpace(const char c); + static inline PRBool GetClockComponent(const char* aSrc, + char** aEnd, + PRFloat64& aResult, + PRBool& aIsReal, + PRBool& aCouldBeMin, + PRBool& aCouldBeSec); + static inline PRBool GetMetricMultiplicand(char* aSrc, + char** aEnd, + PRInt32& multiplicand); + + + static const PRUint32 MSEC_PER_SEC; + static const PRUint32 MSEC_PER_MIN; + static const PRUint32 MSEC_PER_HOUR; + + nsWeakPtr mOwner; + PRBool mIsBegin; + PRInt64 mOffset; +}; + +//////////////////////////////////////////////////////////////////////// +// Factory methods + +nsresult NS_NewSMILTimeValueSpec(nsISMILTimedElement* aOwner, + PRBool aIsBegin, + const nsAString& aStringSpec, + nsSMILTimeValueSpec** aResult); + +#endif // __NS_SMILTIMEVALUESPEC_H__ Index: /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.cpp diff -N content/smil/src/nsSMILTimedDocumentRoot.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.cpp 29 Aug 2005 09:47:13 -0000 @@ -0,0 +1,155 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILTimedDocumentRoot.h" +#include "nsSMILTimeValue.h" + +//////////////////////////////////////////////////////////////////////// +// nsSMILTimedDocumentRoot implementation + +nsSMILTimedDocumentRoot::nsSMILTimedDocumentRoot() +: + mStartTime(), + mAccumulatedOffset() +{ +} + +//---------------------------------------------------------------------- +// nsISupports methods: + +NS_IMPL_ISUPPORTS2(nsSMILTimedDocumentRoot, + nsISMILTimeContainer, + nsISupportsWeakReference); + +//---------------------------------------------------------------------- +// nsSMILTimedDocumentRoot methods + +nsSMILTimeValue +nsSMILTimedDocumentRoot::WallclockToDocumentTime(nsISMILTimeValueSpec* + aWallclockSpec) +{ + // TODO[2] + return nsSMILTimeValue(); +} + +nsresult +nsSMILTimedDocumentRoot::SeekToTime(PRInt64 aSeekTo) +{ + // TODO[3] + return NS_ERROR_NOT_IMPLEMENTED; +} + +//---------------------------------------------------------------------- +// nsISMILTimeContainer methods + +nsresult +nsSMILTimedDocumentRoot::Pause() +{ + // TODO[2] + return NS_ERROR_NOT_IMPLEMENTED; +} + +nsresult +nsSMILTimedDocumentRoot::Resume() +{ + // TODO[2] + return NS_ERROR_NOT_IMPLEMENTED; +} + +void +nsSMILTimedDocumentRoot::Sample() +{ + // It's probably more correct to use PRIntervalNow but I'm not sure if it + // will have sufficient range and is it's unsigned. + PRInt64 now; + LL_DIV(now, PR_Now(), PR_USEC_PER_MSEC); + + // If this is the first time, record the document begin time + if (LL_IS_ZERO(mStartTime)) + mStartTime = now; + + PRInt64 instant; + LL_SUB(instant, now, mStartTime); + + SampleChildren(instant); +} + +nsresult +nsSMILTimedDocumentRoot::AddTimedElement(nsISMILTimedElement* aElement) +{ + if (!aElement) + return NS_ERROR_NULL_POINTER; + + nsresult rv; + nsCOMPtr weakRef( + getter_AddRefs(do_GetWeakReference(aElement, &rv)) ); + + if (NS_SUCCEEDED(rv)) + rv = (mTimedElements.AppendObject(weakRef)) ? NS_OK : NS_ERROR_FAILURE; + + // TODO[1]: If the object already exists, don't freak out, it may have been + // removed from the tree and re-added between samples (objects are removed + // during each sample) + + return rv; +} + +nsresult +nsSMILTimedDocumentRoot::RemoveTimedElement(nsISMILTimedElement* aElement) +{ + // TODO[2] + return NS_ERROR_NOT_IMPLEMENTED; +} + +//---------------------------------------------------------------------- +// Implementation helpers: + +void +nsSMILTimedDocumentRoot::SampleChildren(PRInt64 aDocumentTime) +{ + // TODO[f]: Replace with something thread-safe--probably a subclassed + // enumerator + PRUint32 i = mTimedElements.Count(); + while (i > 0) + { + --i; + nsCOMPtr + element( do_QueryReferent(mTimedElements[i]) ); + + if (element) + element->SampleAt(aDocumentTime); + else + mTimedElements.RemoveObjectAt(i); + } +} + Index: /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.h =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.h diff -N content/smil/src/nsSMILTimedDocumentRoot.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimedDocumentRoot.h 29 Aug 2005 09:47:13 -0000 @@ -0,0 +1,77 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles (original author) + * + * 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 ***** */ + +#ifndef __NS_ISMILTIMEDDOCUMENTROOT_H__ +#define __NS_ISMILTIMEDDOCUMENTROOT_H__ + +#include "nsISupports.h" +#include "nsISMILTimeContainer.h" +#include "nsWeakReference.h" +#include "nsCOMArray.h" + +class nsISMILTimeValueSpec; +class nsISMILTimedElement; +class nsSMILTimeValue; + +//////////////////////////////////////////////////////////////////////// +// nsSMILTimedDocumentRoot: Timed document root + +class nsSMILTimedDocumentRoot : public nsISMILTimeContainer, + public nsSupportsWeakReference +{ +public: + nsSMILTimedDocumentRoot(); + + NS_DECL_ISUPPORTS + + nsSMILTimeValue WallclockToDocumentTime(nsISMILTimeValueSpec* + aWallclockSpec); + nsresult SeekToTime(PRInt64 aSeekTo); + + // nsISMILTimeContainer + virtual nsresult Pause(); + virtual nsresult Resume(); + virtual void Sample(); + virtual nsresult AddTimedElement(nsISMILTimedElement* aElement); + virtual nsresult RemoveTimedElement(nsISMILTimedElement* aElement); + +protected: + void SampleChildren(PRInt64 aDocumentTime); + + PRInt64 mStartTime; + PRInt64 mAccumulatedOffset; + nsCOMArray mTimedElements; +}; + +#endif // __NS_ISMILTIMEDDOCUMENTROOT_H__ + Index: /cvsroot/mozilla/content/smil/src/nsSMILTimedElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/nsSMILTimedElement.cpp diff -N content/smil/src/nsSMILTimedElement.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/nsSMILTimedElement.cpp 29 Aug 2005 09:47:14 -0000 @@ -0,0 +1,229 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsISMILTimedElement.h" +#include "nsSMILTimeValue.h" +#include "nsSMILTimeValueSpec.h" +#include "nsSMILInstanceTime.h" +#include "nsISMILTimeClient.h" +#include "nsCOMArray.h" +#include "nsReadableUtils.h" + +//---------------------------------------------------------------------- +// Class declaration + +class nsSMILTimedElement : public nsISMILTimedElement +{ +public: + NS_DECL_ISUPPORTS + + // nsISMILTimedElement + virtual void AddInstanceTime(nsSMILInstanceTime* aInstanceTime, + PRBool aIsBegin); + virtual nsresult SetBeginSpec(const nsAString& aBeginSpec); + virtual nsresult SetEndSpec(const nsAString& aBeginSpec); + virtual nsresult SetSimpleDuration(const nsAString& aDurSpec); + virtual void AddTimeClient(nsISMILTimeClient* aClient); + virtual void SampleAt(const PRInt64& aDocumentTime); + +protected: + nsSMILTimedElement(); + + friend nsISMILTimedElement* NS_NewSMILTimedElement(); + + //nsCOMPtr mBeginSpec; + nsCOMArray mBeginSpecs; + nsCOMPtr mEndSpec; + nsSMILTimeValue mSimpleDuration; + + // TODO[3]: Either change this into an array, or rename the method from + // AddClient to SetClient. I suspect the latter will be sufficient but it + // might depend on how we support animateMotion and perhaps even on if we want + // to provide advanced debugging facilities or more complicated frame rate + // tuning. + nsCOMPtr mClient; + + // TODO[1]: Replace with a collection + //nsCOMPtr mBeginInstanceTimes; + nsCOMPtr mBeginInstance; + nsCOMPtr mEndInstance; +}; + +//---------------------------------------------------------------------- +// Implementation + +nsISMILTimedElement* NS_NewSMILTimedElement() +{ + return new nsSMILTimedElement(); +} + +nsSMILTimedElement::nsSMILTimedElement () : //mBeginSpec(NULL), + mBeginSpecs(), + mEndSpec(NULL), + mClient(NULL), + mBeginInstance(NULL), + //mBeginInstanceTimes(), + mEndInstance(NULL) +{ + mSimpleDuration.SetIndefinite(); + + // The ctor to instance time copies the time so we can just re-use the simple + // duration as a generic indefinite time + mEndInstance = NS_NewSMILInstanceTime(mSimpleDuration, nsnull); + + // TODO[1]: Ensure the begin defaults to 0 if not set +} + +//---------------------------------------------------------------------- +// nsISupports + +NS_IMPL_ISUPPORTS2(nsSMILTimedElement, + nsISMILTimedElement, + nsISupportsWeakReference) + +//---------------------------------------------------------------------- +// nsISMILTimedElement + +void +nsSMILTimedElement::AddInstanceTime(nsSMILInstanceTime* aInstanceTime, + PRBool aIsBegin) +{ + if (aIsBegin) + mBeginInstance = aInstanceTime; //mBeginInstance->AppendElement(aInstanceTime); + else + mEndInstance = aInstanceTime; +} + +nsresult +nsSMILTimedElement::SetBeginSpec(const nsAString& aBeginSpec) +{ + // TODO[1]: Check if mBeginSpec is already set and clear if necessary + // TODO[2]: Reset timing if necessary + nsCOMPtr spec; + PRInt32 start = 0; + PRInt32 end = aBeginSpec.FindChar(';'); + + while (end != -1) + { + nsresult rv; + + rv = NS_NewSMILTimeValueSpec(this, true, + Substring(aBeginSpec, start, end - 1), getter_AddRefs(spec)); + if (NS_FAILED(rv)) + { + // TODO[3]: Appropriate error handling + } + else + { + // TODO[1]: Add to the list + } + + start = end + 1; + end = aBeginSpec.FindChar(';', start); + } + + // Last spec (not terminated by a ;) + nsresult rv = NS_NewSMILTimeValueSpec(this, true, + Substring(aBeginSpec, start, aBeginSpec.Length()), getter_AddRefs(spec)); + + return rv; +} + +nsresult +nsSMILTimedElement::SetEndSpec(const nsAString& aEndSpec) +{ + // TODO[1]: Tokenise by ; and build up a collection + // TODO[1]: Check if mEndSpec is already set and clear if necessary + // TODO[2]: Reset timing if necessary + return NS_NewSMILTimeValueSpec(this, false, aEndSpec, + getter_AddRefs(mEndSpec)); +} + +nsresult +nsSMILTimedElement::SetSimpleDuration(const nsAString& aDurSpec) +{ + nsSMILTimeValue duration; + PRBool isMedia; + nsresult rv; + + rv = nsSMILTimeValueSpec::ParseClockValue(aDurSpec, + &duration, + false, // don't allow + or - + true, // allow indefinite + true, // allow media + &isMedia); + + if (NS_FAILED(rv) || (!duration.IsResolved() && !duration.IsIndefinite())) + return NS_ERROR_FAILURE; + + // Check the value isn't 0 + if (duration.IsResolved() && LL_EQ(duration.GetMilliseconds(), LL_Zero())) + return NS_ERROR_FAILURE; + + // SVG-specific: "For SVG's animation elements, if "media" is specified, the + // attribute will be ignored." (SVG 1.1, section 19.2.6) + if (isMedia) + duration.SetIndefinite(); + + mSimpleDuration = duration; + + return NS_OK; +} + +void +nsSMILTimedElement::AddTimeClient(nsISMILTimeClient* aClient) +{ + if (aClient) + mClient = aClient; +} + +void +nsSMILTimedElement::SampleAt(const PRInt64& aDocumentTime) +{ + if (!mBeginInstance) return; + + if (!mBeginInstance->GetTime().IsResolved()) + return; + + PRInt64 beginTime = mBeginInstance->GetTime().GetMilliseconds(); + + if (LL_CMP(aDocumentTime, <, beginTime)) + return; + + PRInt64 simpleTime; + LL_SUB(simpleTime, aDocumentTime, beginTime); + + if (mClient) + mClient->SampleAt(simpleTime, mSimpleDuration); +} + Index: /cvsroot/mozilla/content/smil/src/tests/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/tests/Makefile.in diff -N content/smil/src/tests/Makefile.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/tests/Makefile.in 29 Aug 2005 09:47:14 -0000 @@ -0,0 +1,87 @@ +# +# ***** 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) 1998 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Brian Birtles +# +# 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 ***** + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +MOZILLA_INTERNAL_API = 1 + +MODULE = content + +REQUIRES = xpcom \ + string \ + layout \ + content \ + dom \ + $(NULL) + +CPPSRCS = \ + TestTimeVal.cpp \ + TestTimeValueSpec.cpp \ + TestTimedElement.cpp \ + $(NULL) + +include $(topsrcdir)/config/config.mk + +SIMPLE_PROGRAMS = $(CPPSRCS:.cpp=$(BIN_SUFFIX)) + +EXTRA_DSO_LIBS = gkconsmil_s \ + $(NULL) + +LIBS = \ + $(EXTRA_DSO_LIBS) \ + $(XPCOM_LIBS) \ + $(MOZ_JS_LIBS) \ + $(TK_LIBS) \ + $(NSPR_LIBS) \ + $(NULL) + +INCLUDES += \ + -I$(srcdir)/.. \ + -I../../../../../dist/include/dom \ + -I../../../../../dist/include/js \ + -I../../../../../dist/include/xpconnect \ + -I../../../../../dist/include/pref \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + Index: /cvsroot/mozilla/content/smil/src/tests/TestAnimationElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/tests/TestAnimationElement.cpp diff -N content/smil/src/tests/TestAnimationElement.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/tests/TestAnimationElement.cpp 29 Aug 2005 09:47:15 -0000 @@ -0,0 +1,297 @@ +/* -*- 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) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsISMILAnimationElement.h" +#include "nsISMILAnimatableValue.h" +#include "nsISMILAnimatableAttribute.h" +#include "nsISMILAnimatableValueFactory.h" +#include "nsISMILTimeClient.h" +#include "nsSMILTimeValue.h" +#include "nsCOMPtr.h" +#include "nsAutoPtr.h" +#include "prdtoa.h" +#include "nsReadableUtils.h" +#include "nsCRT.h" +#include "nsString.h" +#include + +//------------------------------------------------------------------------------ +// Mock objects + +class mock_nsSMILAnimatableValue : public nsISMILAnimatableValue +{ +public: + mock_nsSMILAnimatableValue() : mLastUnitDistance(-1.0f), + mValue(0.0f) + {} + + NS_DECL_ISUPPORTS + + virtual void ComputeDistance(const nsISMILAnimatableValue& aFrom, + const nsISMILAnimatableValue& aTo, + PRFloat64& aDistance) const + { + } + + virtual nsresult Interpolate(nsISMILAnimatableValue& aEndValue, + float aUnitDistance, + nsISMILAnimatableValue* aResult) + { + NS_ASSERTION(aResult, "Null result passed to Interpolate."); + if (!aResult) return NS_ERROR_NULL_POINTER; + + mLastUnitDistance = aUnitDistance; + + mock_nsSMILAnimatableValue *end = + NS_REINTERPRET_CAST(mock_nsSMILAnimatableValue*, &aEndValue); + + float newValue = mValue + (end->mValue - mValue) * aUnitDistance; + + nsCOMPtr value( do_QueryInterface(aResult) ); + if (!value) + return NS_ERROR_FAILURE; + + value->mValue = newValue; + + return NS_OK; + } + + virtual void Accumulate(const nsISMILAnimatableValue& aAddedValue) + { + } + + virtual void Set(const nsISMILAnimatableValue& aNewValue) + { + nsISMILAnimatableValue *nonConstValue = + NS_CONST_CAST(nsISMILAnimatableValue*, &aNewValue); + nsCOMPtr + value( do_QueryInterface(nonConstValue) ); + NS_ASSERTION(value, "Value is null"); + + mValue = value->mValue; + } + + float mLastUnitDistance; + float mValue; +}; + +NS_IMPL_ISUPPORTS1(mock_nsSMILAnimatableValue, + nsISMILAnimatableValue) + +class mock_nsSMILAnimatableAttribute : public nsISMILAnimatableAttribute, + public nsISMILAnimatableValueFactory +{ +public: + mock_nsSMILAnimatableAttribute() + { + mBaseValue = new mock_nsSMILAnimatableValue(); + mAnimValue = new mock_nsSMILAnimatableValue(); + } + + NS_DECL_ISUPPORTS + + virtual nsresult SetAnimValue(nsISMILAnimatableValue& aValue) + { + mAnimValue = &aValue; + return NS_OK; + } + + virtual nsISMILAnimatableValue* GetAnimValue() + { + return mAnimValue; + } + + virtual nsISMILAnimatableValue* GetBaseValue() + { + return mBaseValue; + } + + virtual nsresult Create(nsISMILAnimatableValue** aResult) const + { + *aResult = new mock_nsSMILAnimatableValue(); + NS_ADDREF(*aResult); + + return NS_OK; + } + + virtual nsresult CreateFromSpec(const nsAString& aSpec, + nsISMILAnimatableValue** aResult, + PRBool& aIsAddable) const + { + NS_ASSERTION(aResult, "Null result passed to GetNewValue."); + if (!aResult) return NS_ERROR_NULL_POINTER; + + char *str = ToNewCString(aSpec); + PRFloat64 val = PR_strtod(str, NULL); + nsMemory::Free(str); + + mock_nsSMILAnimatableValue* result = new mock_nsSMILAnimatableValue(); + NS_ASSERTION(result, "Couldn't allocate new value.\n"); + if (result == nsnull) + return NS_ERROR_OUT_OF_MEMORY; + + result->mValue = NS_STATIC_CAST(float, val); + NS_ADDREF(*aResult = result); + aIsAddable = true; + + return NS_OK; + } + + nsRefPtr mBaseValue; + nsRefPtr mAnimValue; +}; + +NS_IMPL_ISUPPORTS2(mock_nsSMILAnimatableAttribute, + nsISMILAnimatableAttribute, + nsISMILAnimatableValueFactory) + +//------------------------------------------------------------------------------ +// Test cases + +static PRBool +TestInitialisation() +{ + nsAutoPtr elem = NS_NewSMILAnimationElement(); + nsRefPtr attr = + new mock_nsSMILAnimatableAttribute; + + if (elem->IsInitialised()) + { + printf(" Element is initialised before calling Init.\n"); + return PR_FALSE; + } + + if (elem->Init(*attr) != NS_OK) + { + printf(" Initialisating returned an error.\n"); + return PR_FALSE; + } + + if (!elem->IsInitialised()) + { + printf(" Element is not initialised after calling Init.\n"); + return PR_FALSE; + } + + attr = new mock_nsSMILAnimatableAttribute; + + if (elem->Init(*attr) != NS_OK) + { + printf(" Re-initialisating returned an error.\n"); + return PR_FALSE; + } + + if (!elem->IsInitialised()) + { + printf(" Element is not initialised after re-initialisation.\n"); + return PR_FALSE; + } + + return PR_TRUE; +} + +static PRBool +TestSampleAt() +{ + nsCOMPtr elem = NS_NewSMILAnimationElement(); + nsRefPtr attr = + new mock_nsSMILAnimatableAttribute; + + elem->Init(*attr); + elem->SetFrom(NS_LITERAL_STRING("5")); + elem->SetTo(NS_LITERAL_STRING("9")); + + PRInt64 timeStart = LL_INIT(0,0); + PRInt64 timeQuarter = LL_INIT(0,500); + PRInt64 timeNearlyEnd = LL_INIT(0,1999); + PRInt64 timeEnd = LL_INIT(0,2000); + + nsSMILTimeValue dur; + dur.SetMilliseconds(timeEnd); + + nsCOMPtr tc (do_QueryInterface(elem)); + tc->SampleAt(timeStart, dur); + + mock_nsSMILAnimatableValue* animVal = + NS_REINTERPRET_CAST(mock_nsSMILAnimatableValue*, attr->mAnimValue.get()); + + if (animVal->mValue != 5.0f) + { + printf(" Got unexpected animation value, %.3f instead of %.3f.\n", + animVal->mValue, 5.0f); + return PR_FALSE; + } + + tc->SampleAt(timeQuarter, dur); + + if (animVal->mValue != 6.0f) + { + printf(" Got unexpected animation value, %.3f instead of %.3f.\n", + animVal->mValue, 6.0f); + return PR_FALSE; + } + + tc->SampleAt(timeNearlyEnd, dur); + + if (animVal->mValue <= 8.5f || animVal->mValue >= 9.0f) + { + printf(" Got out of range value, %.3f (expected: %.3f to %.3f).\n", + animVal->mValue, 8.5f, 9.0f); + return PR_FALSE; + } + + return PR_TRUE; +} + +//------------------------------------------------------------------------------ +// Main + +int main(int argc, char** argv) +{ + PRBool result = PR_TRUE; + + printf("TestAnimationElement:\n"); + + result &= TestInitialisation(); + result &= TestSampleAt(); + + if (result) printf(" All tests passed.\n"); + + return 0; +} + Index: /cvsroot/mozilla/content/smil/src/tests/TestTimeVal.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/tests/TestTimeVal.cpp diff -N content/smil/src/tests/TestTimeVal.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/tests/TestTimeVal.cpp 29 Aug 2005 09:47:15 -0000 @@ -0,0 +1,154 @@ +/* -*- 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) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILTimeValue.h" +#include "prlong.h" +#include + +static PRBool +TestConstructor() +{ + nsSMILTimeValue value; + + if (value.IsResolved() || value.IsIndefinite()) + { + printf(" Time value wasn't initialised as expected.\n"); + return PR_FALSE; + } + + return PR_TRUE; +} + +static PRBool +TestComparison() +{ + nsSMILTimeValue a; + nsSMILTimeValue b; + + if (a.CompareTo(b) != 0) + { + printf(" Unaltered time values are not equal.\n"); + return PR_FALSE; + } + + b.SetIndefinite(); + if (a.CompareTo(b) != 1) + { + printf(" Unresolved time is not more than indefinite time.\n"); + return PR_FALSE; + } + + a.SetIndefinite(); + if (a.CompareTo(b) != 0) + { + printf(" Indefinite times are not equal.\n"); + return PR_FALSE; + } + + b.SetMilliseconds(LL_INIT(0,5)); + if (a.CompareTo(b) != 1) + { + printf(" Indefinite time is not greater than millisecond time.\n"); + return PR_FALSE; + } + + a.SetMilliseconds(LL_INIT(0,5)); + if (a.CompareTo(b) != 0) + { + printf(" Millisecond times are not equal.\n"); + return PR_FALSE; + } + + a.SetMilliseconds(LL_INIT(0,6)); + if (a.CompareTo(b) != 1) + { + printf(" 6 milliseconds is not greater than 5.\n"); + return PR_FALSE; + } + + a.SetMilliseconds(LL_INIT(0,0)); + if (a.CompareTo(b) != -1) + { + printf(" 0 milliseconds is not less than 5.\n"); + return PR_FALSE; + } + + a.SetMilliseconds(LL_INIT(0,-5)); + if (a.CompareTo(b) != -1) + { + printf(" -5 milliseconds is not less than 5.\n"); + return PR_FALSE; + } + + b.SetIndefinite(); + if (a.CompareTo(b) != -1) + { + printf(" Millisecond time is not less than indefinite time.\n"); + return PR_FALSE; + } + + b.SetUnresolved(); + if (a.CompareTo(b) != -1) + { + printf(" Millisecond time is not less than unresolved time.\n"); + return PR_FALSE; + } + + a.SetIndefinite(); + if (a.CompareTo(b) != -1) + { + printf(" Indefinite time is not less than unresolved time.\n"); + return PR_FALSE; + } + + return PR_TRUE; +} + +int main(int argc, char** argv) +{ + PRBool result = PR_TRUE; + + printf("TestTimeVal:\n"); + + result &= TestConstructor(); + result &= TestComparison(); + + if (result) printf(" All tests passed.\n"); + + return 0; +} Index: /cvsroot/mozilla/content/smil/src/tests/TestTimeValueSpec.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/tests/TestTimeValueSpec.cpp diff -N content/smil/src/tests/TestTimeValueSpec.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/tests/TestTimeValueSpec.cpp 29 Aug 2005 09:47:16 -0000 @@ -0,0 +1,497 @@ +/* -*- 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) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSMILTimeValueSpec.h" +#include "nsSMILTimeValue.h" +#include "nsISMILTimedElement.h" +#include "nsSMILInstanceTime.h" +#include +#include "prdtoa.h" + +static const PRInt32 MSEC_PER_SEC = 1000L; +static const PRInt32 MSEC_PER_MINUTE = 60L * 1000L; +static const PRInt32 MSEC_PER_HOUR = 60L * 60L * 1000L; + +//////////////////////////////////////////////////////////////////////////////// +// Mock Timed Element + +class mock_nsSMILTimedElement : public nsISMILTimedElement +{ +public: + mock_nsSMILTimedElement() : mInstances(0) { } + + NS_DECL_ISUPPORTS + + virtual void AddInstanceTime(nsSMILInstanceTime* instanceTime, + PRBool isBegin) + { + ++mInstances; + mIsBegin = isBegin; + mLastTime = instanceTime->GetTime().GetMilliseconds(); + } + + virtual nsresult SetBeginSpec(const nsAString& aBeginSpec) { return NS_OK; } + virtual nsresult SetEndSpec(const nsAString& aBeginSpec) { return NS_OK; } + virtual nsresult SetSimpleDuration(const nsAString& aDurSpec) + { return NS_OK; } + virtual void AddTimeClient(nsISMILTimeClient* client) {} + virtual void SampleAt(const PRInt64& documentTime) {} + + int mInstances; + PRBool mIsBegin; + PRInt64 mLastTime; +}; + +NS_IMPL_ISUPPORTS2(mock_nsSMILTimedElement, + nsISMILTimedElement, + nsISupportsWeakReference) + +//////////////////////////////////////////////////////////////////////////////// +// Test methods + +static PRBool +CompareOffset(const nsAString& offsetSpec, PRInt64 milliseconds) +{ + PRBool result = PR_TRUE; + nsCOMPtr elem = new mock_nsSMILTimedElement(); + nsCOMPtr spec; + nsresult rv = + NS_NewSMILTimeValueSpec(elem, true, offsetSpec, + getter_AddRefs(spec)); + + if (NS_FAILED(rv) || !spec) + { + char* str = ToNewCString(offsetSpec); + printf(" Couldn't create new time value specification for \"%s\".\n", + str); + nsMemory::Free(str); + return PR_FALSE; + } + + if (LL_NE(elem->mLastTime, milliseconds)) + { + char* str = ToNewCString(offsetSpec); + + printf(" Incorrect offset, expected %I64d, got %I64d, for: \"%s\".\n", + milliseconds, elem->mLastTime, str); + + nsMemory::Free(str); + result = PR_FALSE; + } + + return result; +} + +static PRBool +CompareOffsetForError(const nsAString& offsetSpec) +{ + PRBool result = PR_TRUE; + nsCOMPtr elem = new mock_nsSMILTimedElement(); + nsCOMPtr spec; + nsresult rv = + NS_NewSMILTimeValueSpec(elem, true, offsetSpec, getter_AddRefs(spec)); + + if (!NS_FAILED(rv) || spec) + { + char* str = ToNewCString(offsetSpec); + + printf(" No error thrown for \"%s\".\n", str); + + nsMemory::Free(str); + + return PR_FALSE; + } + + return PR_TRUE; +} + +//////////////////////////////////////////////////////////////////////////////// +// Test cases + +static PRBool +TestFactoryMethod() +{ + nsCOMPtr elem = new mock_nsSMILTimedElement(); + + nsCOMPtr spec; + nsresult rv = + NS_NewSMILTimeValueSpec(elem, true, NS_LITERAL_STRING("5s"), + getter_AddRefs(spec)); + + if (NS_FAILED(rv) || !spec) + { + printf(" Couldn't create new time value specification.\n"); + return PR_FALSE; + } + + return PR_TRUE; +} + +#define COMPARE_OFFSET(a,b) \ + LL_I2L(expected, (b)); \ + result &= CompareOffset(NS_LITERAL_STRING(a), expected); +#define COMPARE_ERROR(a) \ + result &= CompareOffsetForError(NS_LITERAL_STRING(a)); + +static PRBool +TestOffset() +{ + PRBool result = PR_TRUE; + PRInt64 expected; + + // Basic tests, sign and whitespace + COMPARE_OFFSET("3s", 3000) + COMPARE_OFFSET("0s", 0) + COMPARE_OFFSET("+2s", 2000) + COMPARE_OFFSET("-1s\t\r", -1000) + COMPARE_OFFSET("- 1s", -1000) + COMPARE_OFFSET(" -1s", -1000) + COMPARE_OFFSET(" - 1s", -1000) + COMPARE_OFFSET(" \t\n\r-1s", -1000) + COMPARE_OFFSET("+\n5s", 5000) + COMPARE_OFFSET("\t 5s", 5000) + + // These tests from SMILANIM 3.6.7 + COMPARE_OFFSET("02:30:03", + 2 * MSEC_PER_HOUR + 30 * MSEC_PER_MINUTE + 3 * MSEC_PER_SEC) + COMPARE_OFFSET("50:00:10.25", + 50 * MSEC_PER_HOUR + 10 * MSEC_PER_SEC + 250) + COMPARE_OFFSET("02:33", 2 * MSEC_PER_MINUTE + 33 * MSEC_PER_SEC) + COMPARE_OFFSET("00:10.5", 10 * MSEC_PER_SEC + 500) + COMPARE_OFFSET("3.2h", 3 * MSEC_PER_HOUR + 12 * MSEC_PER_MINUTE) + COMPARE_OFFSET("45min", 45 * MSEC_PER_MINUTE) + COMPARE_OFFSET("30s", 30 * MSEC_PER_SEC) + COMPARE_OFFSET("5ms", 5) + COMPARE_OFFSET("12.467", 12 * MSEC_PER_SEC + 467) + COMPARE_OFFSET("00.5s", 500) + COMPARE_OFFSET("00:00.005", 5) + + // Additional tests + COMPARE_OFFSET("61:59:59", + 61 * MSEC_PER_HOUR + 59 * MSEC_PER_MINUTE + 59 * MSEC_PER_SEC) + COMPARE_OFFSET("02:59.999999999999999999999", + 2 * MSEC_PER_MINUTE + 60 * MSEC_PER_SEC) + + PRInt64 hour64; + LL_I2L(hour64, MSEC_PER_HOUR); + PRInt64 min64; + LL_I2L(min64, MSEC_PER_MINUTE); + LL_MUL(min64, min64, LL_INIT(0, 23)); + PRInt64 sec64; + LL_I2L(sec64, MSEC_PER_SEC); + LL_MUL(sec64, sec64, LL_INIT(0, 45)); + + LL_MUL(expected, LL_INIT(0,1234), hour64); + LL_ADD(expected, expected, min64); + LL_ADD(expected, expected, sec64); + result &= CompareOffset(NS_LITERAL_STRING("1234:23:45"), expected); + + COMPARE_OFFSET("61min", 61 * MSEC_PER_MINUTE) + COMPARE_OFFSET("0:30:03", 30 * MSEC_PER_MINUTE + 3 * MSEC_PER_SEC) + + // Fractional precision + COMPARE_OFFSET("25.4567", 25 * MSEC_PER_SEC + 457) + COMPARE_OFFSET("0.123456789", 123) + COMPARE_OFFSET("0.00000000000000000000001", 0) + COMPARE_OFFSET("-0.00000000000000000000001", 0) + COMPARE_OFFSET("0.0009", 1) + COMPARE_OFFSET("0.99999999999999999999999999999999999999999999999999999999999999999999999999999999", 1000) + COMPARE_OFFSET("23.4567ms", 23) + COMPARE_OFFSET("23.7ms", 24) + + // Test errors + COMPARE_ERROR(" + +3s") + COMPARE_ERROR(" +-3s") + COMPARE_ERROR("1:12:12:12") + COMPARE_ERROR("4:50:60") + COMPARE_ERROR("4:60:0") + COMPARE_ERROR("4:60") + COMPARE_ERROR("4:-1:00") + COMPARE_ERROR("4 5m") + COMPARE_ERROR("4 5ms") + COMPARE_ERROR("02:3:03") + COMPARE_ERROR("45.7 s") + COMPARE_ERROR(" 3 h ") + COMPARE_ERROR("2:33 ") + COMPARE_ERROR("02:33 2") + COMPARE_ERROR("\xB 02:33") + COMPARE_ERROR("h") + COMPARE_ERROR("23.s") + COMPARE_ERROR("23.") + COMPARE_ERROR("23.54.2s") + COMPARE_ERROR("23sec") + COMPARE_ERROR("five") + COMPARE_ERROR("") + COMPARE_ERROR("02:33s") + COMPARE_ERROR("02:33 s") + COMPARE_ERROR("2.54e6") + COMPARE_ERROR("02.5:33") + COMPARE_ERROR("2:-45:33") + COMPARE_ERROR("2:4.5:33") + COMPARE_ERROR("45m") + COMPARE_ERROR(":20:30") + COMPARE_ERROR("1.5:30") + COMPARE_ERROR("15:-30") + COMPARE_ERROR("::30") + COMPARE_ERROR("15:30s") + COMPARE_ERROR("2:1.:30") + COMPARE_ERROR("2:.1:30") + COMPARE_ERROR("2.0:15:30") + COMPARE_ERROR("2.:15:30") + COMPARE_ERROR(".2:15:30") + COMPARE_ERROR("70:15") + COMPARE_ERROR("media") + COMPARE_ERROR("5mi") + COMPARE_ERROR("5hours") + COMPARE_ERROR("h05:30") + COMPARE_ERROR("05:40\x9A"); + COMPARE_ERROR("05:40\u30D5"); + COMPARE_ERROR("05:40β"); + + return result; +} + +#undef COMPARE_OFFSET +#undef COMPARE_ERROR + +static PRBool +TestAddInstance() +{ + nsCOMPtr elem = new mock_nsSMILTimedElement(); + + nsCOMPtr spec; + nsresult rv = + NS_NewSMILTimeValueSpec(elem, true, NS_LITERAL_STRING("5s"), + getter_AddRefs(spec)); + + if (elem->mInstances != 1) + { + printf(" Add instance was not called as expected.\n"); + return PR_FALSE; + } + + return PR_TRUE; +} + +static PRBool +TimeValuesEqual(const nsSMILTimeValue& a, const nsSMILTimeValue &b) +{ + return ( + (a.IsIndefinite() && b.IsIndefinite()) + || + (!a.IsResolved() && !a.IsIndefinite() + && + !b.IsResolved() && !b.IsIndefinite()) + || + (a.IsResolved() && b.IsResolved() + && + LL_EQ(a.GetMilliseconds(), b.GetMilliseconds()))); +} + +static PRBool +TestIndefinite() +{ + nsSMILTimeValue expected; + nsSMILTimeValue actual; + PRBool isMedia; + nsresult rv; + PRBool result = PR_TRUE; + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("indefinite"), &actual, false, false); + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown as expected for indefinite value.\n"); + result = PR_FALSE; + } + + expected.SetIndefinite(); + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING(" indefinite "), &actual, false, true); + if (!TimeValuesEqual(actual, expected)) + { + printf(" Indefinite value not returned as expected.\n"); + result = PR_FALSE; + } + + actual.SetIndefinite(); + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING(" indfinite "), &actual, false, true); + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown as expected for mis-spelt indefinite value.\n"); + result = PR_FALSE; + } + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("indefinite"), &actual, false, true, false, &isMedia); + if (isMedia) + { + printf(" isMedia True when false expected for indefinite value.\n"); + result = PR_FALSE; + } + + return result; +} + +static PRBool +TestMedia() +{ + nsSMILTimeValue expected; + nsSMILTimeValue actual; + PRBool isMedia; + nsresult rv; + PRBool result = PR_TRUE; + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("media"), &actual); + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown as expected for media value.\n"); + result = PR_FALSE; + } + if (isMedia) + { + printf(" isMedia True when false expected.\n"); + result = PR_FALSE; + } + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING(" media "), &actual, false, false, true, &isMedia); + if (!isMedia) + { + printf(" Media value not returned as expected.\n"); + result = PR_FALSE; + } + if (rv != NS_OK) + { + printf(" Error return code for media value.\n"); + result = PR_FALSE; + } + + isMedia = PR_TRUE; + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("not media"), &actual, false, false, true, &isMedia); + if (isMedia) + { + printf(" isMedia True when false expected for not media string.\n"); + result = PR_FALSE; + } + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown for bad media string.\n"); + result = PR_FALSE; + } + + return result; +} + +static PRBool +TestSign() +{ + nsSMILTimeValue expected; + nsSMILTimeValue actual; + nsresult rv; + PRBool result = PR_TRUE; + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("-3s"), &actual, false); + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown as expected for negative value.\n"); + result = PR_FALSE; + } + + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("+3s"), &actual); + if (rv != NS_ERROR_FAILURE) + { + printf(" Error not thrown as expected for positive value.\n"); + result = PR_FALSE; + } + + expected.SetMilliseconds(-3000); + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING("-3s"), &actual, true); + if (!TimeValuesEqual(actual, expected)) + { + printf(" Signed value not returned as expected.\n"); + result = PR_FALSE; + } + if (rv != NS_OK) + { + printf(" Error return code for valid signed value.\n"); + result = PR_FALSE; + } + + expected.SetMilliseconds(3000); + rv = nsSMILTimeValueSpec::ParseClockValue( + NS_LITERAL_STRING(" 3s"), &actual, false); + if (!TimeValuesEqual(actual, expected)) + { + printf(" Unsigned value not returned as expected.\n"); + result = PR_FALSE; + } + if (rv != NS_OK) + { + printf(" Error return code for valid unsigned value.\n"); + result = PR_FALSE; + } + + return result; +} + +//////////////////////////////////////////////////////////////////////////////// +// Main + +int main(int argc, char** argv) +{ + PRBool result = PR_TRUE; + + printf("TestTimeValueSpec:\n"); + + result &= TestFactoryMethod(); + result &= TestAddInstance(); + result &= TestOffset(); + result &= TestIndefinite(); + result &= TestMedia(); + result &= TestSign(); + + if (result) printf(" All tests passed.\n"); + return 0; +} Index: /cvsroot/mozilla/content/smil/src/tests/TestTimedElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/smil/src/tests/TestTimedElement.cpp diff -N content/smil/src/tests/TestTimedElement.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/smil/src/tests/TestTimedElement.cpp 29 Aug 2005 09:47:16 -0000 @@ -0,0 +1,175 @@ +/* -*- 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) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsISMILTimedElement.h" +#include "nsSMILTimeValue.h" +#include "nsISMILTimeClient.h" +#include "nsCOMPtr.h" +#include "nsString.h" +#include + +class mock_nsSMILTimeClient : public nsISMILTimeClient +{ +public: + mock_nsSMILTimeClient() : mLastSample(), mSampleCount(0) {} + + NS_DECL_ISUPPORTS + + virtual void SampleAt(const PRInt64& simpleTime, + const nsSMILTimeValue& simpleDuration) + { + mLastSample = simpleTime; + mSampleCount++; + mLastDuration = simpleDuration; + } + + PRInt64 mLastSample; + PRInt8 mSampleCount; + nsSMILTimeValue mLastDuration; +}; + +NS_IMPL_ISUPPORTS1(mock_nsSMILTimeClient, + nsISMILTimeClient) + +static PRBool +TestFactoryMethod() +{ + nsISMILTimedElement* elem; + + elem = NS_NewSMILTimedElement(); + + if (!elem) + { + printf(" Couldn't create new timed element.\n"); + return PR_FALSE; + } + + delete elem; + + return PR_TRUE; +} + +static PRBool +CheckSample(nsISMILTimedElement* elem, + mock_nsSMILTimeClient* client, + PRInt32 documentTime, + PRInt32 expectedSimpleTime, + PRInt8 expectedSampleCount) +{ + PRInt64 documentTime64; + PRInt64 expected64; + + LL_I2L(documentTime64, documentTime); + LL_I2L(expected64, expectedSimpleTime); + + elem->SampleAt(documentTime64); + if (LL_NE(client->mLastSample, expected64)) + { + printf(" Got unexpected sample time, expected %I64d, got %I64d.\n", + expected64, client->mLastSample); + return PR_FALSE; + } + + if (client->mSampleCount != expectedSampleCount) + { + printf(" Got unexpected sample count, expected %d, got %d.\n", + expectedSampleCount, client->mSampleCount); + } + + return PR_TRUE; +} + +static PRBool +TestOffsetStartup() +{ + PRBool result = PR_TRUE; + + nsCOMPtr elem; + nsCOMPtr client = new mock_nsSMILTimeClient(); + + elem = NS_NewSMILTimedElement(); + elem->AddTimeClient(client); + elem->SetBeginSpec(NS_LITERAL_STRING("3s")); + + result &= CheckSample(elem, client, 0, 0, 0); + result &= CheckSample(elem, client, 4000, 1000, 1); + result &= CheckSample(elem, client, 0, 1000, 1); + + return result; +} + +static PRBool +TestMultipleBegins() +{ + PRBool result = PR_TRUE; + + nsCOMPtr elem; + nsCOMPtr client = new mock_nsSMILTimeClient(); + + elem = NS_NewSMILTimedElement(); + elem->AddTimeClient(client); + elem->SetBeginSpec(NS_LITERAL_STRING("2s; 6s")); + elem->SetSimpleDuration(NS_LITERAL_STRING(" 1s")); + + result &= CheckSample(elem, client, 0, 0, 0); + result &= CheckSample(elem, client, 2999, 999, 1); + result &= CheckSample(elem, client, 3000, 0, 1); + result &= CheckSample(elem, client, 6100, 100, 2); + + return result; +} + +int main(int argc, char** argv) +{ + PRBool result = PR_TRUE; + + printf("TestTimedElement:\n"); + + // TODO: Must test that if the begin spec isn't specified that begin defaults + // to 0!! + // TODO: Test with blank strings + // TODO: Test with unicode + // TODO: Test with negative times etc. + result &= TestFactoryMethod(); + result &= TestOffsetStartup(); + result &= TestMultipleBegins(); + + if (result) printf(" All tests passed.\n"); + + return 0; +} Index: /cvsroot/mozilla/content/svg/content/src/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/Makefile.in,v retrieving revision 1.38 diff -u -r1.38 Makefile.in --- /cvsroot/mozilla/content/svg/content/src/Makefile.in 26 Aug 2005 02:49:49 -0000 1.38 +++ /cvsroot/mozilla/content/svg/content/src/Makefile.in 29 Aug 2005 09:47:28 -0000 @@ -136,6 +136,10 @@ CPPSRCS += nsSVGForeignObjectElement.cpp endif +ifdef MOZ_SMIL +CPPSRCS += nsSVGAnimateElement.cpp +endif + include $(topsrcdir)/config/config.mk # we don't want the shared lib, but we want to force the creation of a static lib. @@ -178,3 +182,6 @@ $(NULL) DEFINES += -D_IMPL_NS_LAYOUT + +#CXXFLAGS += -P + Index: /cvsroot/mozilla/content/svg/content/src/nsISVGLength.h =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsISVGLength.h,v retrieving revision 1.4 diff -u -r1.4 nsISVGLength.h --- /cvsroot/mozilla/content/svg/content/src/nsISVGLength.h 5 Aug 2004 09:01:09 -0000 1.4 +++ /cvsroot/mozilla/content/svg/content/src/nsISVGLength.h 29 Aug 2005 09:47:29 -0000 @@ -42,6 +42,9 @@ #include "nsIDOMSVGLength.h" class nsSVGCoordCtx; +#ifdef MOZ_SMIL +class nsISMILAnimatableValue; +#endif // MOZ_SMIL //////////////////////////////////////////////////////////////////////// // nsISVGLength: private interface for svg lengths @@ -55,7 +58,11 @@ public: NS_DEFINE_STATIC_IID_ACCESSOR(NS_ISVGLENGTH_IID) - NS_IMETHOD SetContext(nsSVGCoordCtx* ctx)=0; + NS_IMETHOD SetContext(nsSVGCoordCtx* ctx)=0; +#ifdef MOZ_SMIL + virtual nsresult GetAnimValue(nsIDOMSVGLength** aResult)=0; + virtual nsresult GetAnimatableValue(nsISMILAnimatableValue** aResult)=0; +#endif // MOZ_SMIL }; Index: /cvsroot/mozilla/content/svg/content/src/nsISVGSVGElement.h =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsISVGSVGElement.h,v retrieving revision 1.6 diff -u -r1.6 nsISVGSVGElement.h --- /cvsroot/mozilla/content/svg/content/src/nsISVGSVGElement.h 25 Aug 2005 21:31:07 -0000 1.6 +++ /cvsroot/mozilla/content/svg/content/src/nsISVGSVGElement.h 29 Aug 2005 09:47:29 -0000 @@ -46,6 +46,9 @@ class nsSVGCoordCtxProvider; class nsIDOMSVGNumber; class nsISVGEnum; +#ifdef MOZ_SMIL +class nsSMILTimedDocumentRoot; +#endif //////////////////////////////////////////////////////////////////////// // nsISVGSVGElement: private interface implemented by -elements @@ -89,6 +92,10 @@ NS_IMETHOD_(float) GetPreviousScale()=0; NS_IMETHOD_(float) GetPreviousTranslate_x()=0; NS_IMETHOD_(float) GetPreviousTranslate_y()=0; + +#ifdef MOZ_SMIL + virtual nsSMILTimedDocumentRoot* GetTimedDocumentRoot()=0; +#endif }; #endif // __NS_ISVGSVGELEMENT__ Index: /cvsroot/mozilla/content/svg/content/src/nsSVGAnimateElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGAnimateElement.cpp diff -N content/svg/content/src/nsSVGAnimateElement.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGAnimateElement.cpp 29 Aug 2005 09:47:30 -0000 @@ -0,0 +1,455 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsSVGElement.h" +#include "nsIDOMSVGAnimateElement.h" +#include "nsSVGAtoms.h" +#include "nsISVGSVGElement.h" +#include "nsIBindingManager.h" +#include "nsIDocument.h" +#include "nsISMILTimedElement.h" +#include "nsISMILAnimationElement.h" +#include "nsISMILAnimatableElement.h" +#include "nsSMILTimedDocumentRoot.h" +#include "nsISMILTimeClient.h" + +typedef nsSVGElement nsSVGAnimateElementBase; + +class nsSVGAnimateElement : public nsSVGAnimateElementBase, + public nsIDOMSVGAnimateElement + // : nsIDOMSVGAnimationElement +{ +protected: + friend nsresult NS_NewSVGAnimateElement(nsIContent **aResult, + nsINodeInfo *aNodeInfo); + nsSVGAnimateElement(nsINodeInfo* aNodeInfo); + nsresult Init(); + +public: + // interfaces: + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_NSIDOMSVGANIMATEELEMENT + NS_DECL_NSIDOMSVGANIMATIONELEMENT + + NS_FORWARD_NSIDOMNODE_NO_CLONENODE(nsSVGAnimateElementBase::) + NS_FORWARD_NSIDOMELEMENT(nsSVGAnimateElementBase::) + NS_FORWARD_NSIDOMSVGELEMENT(nsSVGAnimateElementBase::) + + // nsISVGContent specializations + virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent, + nsIContent* aBindingParent, + PRBool aCompileEventHandlers); + virtual void UnbindFromTree(PRBool aDeep = PR_TRUE, + PRBool aNullParent = PR_TRUE); + + // nsIContent specializations + virtual nsresult SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName, + nsIAtom* aPrefix, const nsAString& aValue, + PRBool aNotify); + virtual nsresult UnsetAttr(PRInt32 aNameSpaceID, nsIAtom* aAttribute, + PRBool aNotify); + +protected: + // Implementation helpers + nsSMILTimedDocumentRoot* GetDocumentRoot(); + nsIContent* GetParentElement(); + void UpdateTargetElement(); + nsISMILAnimatableAttribute* GetTargetAttribute(); + void UpdateTargetAttribute(); + void SetAnimationProperties(); + + nsWeakPtr mTargetElement; + nsRefPtr mAnimation; + nsCOMPtr mTimedElement; +}; + +NS_IMPL_NS_NEW_SVG_ELEMENT(Animate) + + +//---------------------------------------------------------------------- +// nsISupports methods + +NS_IMPL_ADDREF_INHERITED(nsSVGAnimateElement,nsSVGAnimateElementBase) +NS_IMPL_RELEASE_INHERITED(nsSVGAnimateElement,nsSVGAnimateElementBase) + +NS_INTERFACE_MAP_BEGIN(nsSVGAnimateElement) + NS_INTERFACE_MAP_ENTRY(nsIDOMNode) + NS_INTERFACE_MAP_ENTRY(nsIDOMElement) + NS_INTERFACE_MAP_ENTRY(nsIDOMSVGElement) + NS_INTERFACE_MAP_ENTRY(nsIDOMSVGAnimationElement) + NS_INTERFACE_MAP_ENTRY(nsIDOMSVGAnimateElement) + NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(SVGAnimateElement) +NS_INTERFACE_MAP_END_INHERITING(nsSVGAnimateElementBase) + +//---------------------------------------------------------------------- +// Implementation + +nsSVGAnimateElement::nsSVGAnimateElement(nsINodeInfo *aNodeInfo) + : nsSVGAnimateElementBase(aNodeInfo) +{ +} + +nsresult +nsSVGAnimateElement::Init() +{ + mTimedElement = NS_NewSMILTimedElement(); + mAnimation = NS_NewSMILAnimationElement(); + + return (mTimedElement) ? NS_OK : NS_ERROR_FAILURE; +} + +//---------------------------------------------------------------------- +// nsIDOMSVGAnimationElement methods + +/* readonly attribute SVGElement targetElement; */ +NS_IMETHODIMP nsSVGAnimateElement::GetTargetElement(nsIDOMSVGElement * *aTarget) +{ + if (mTargetElement) + { + nsCOMPtr weakref = do_QueryReferent(mTargetElement); + if (*aTarget) + NS_RELEASE(*aTarget); + NS_IF_ADDREF(*aTarget = weakref); + } + return NS_OK; +} + +NS_IMETHODIMP nsSVGAnimateElement::GetStartTime(float* retval) +{ + nsresult rv = NS_ERROR_FAILURE; + + if (mTimedElement) + { + // TODO[3]: Fill this in + rv = NS_ERROR_NOT_IMPLEMENTED; + } + + return rv; +} + +NS_IMETHODIMP nsSVGAnimateElement::GetCurrentTime(float* retval) +{ + // TODO[3]: Query the time container + return NS_OK; +} + +NS_IMETHODIMP nsSVGAnimateElement::GetSimpleDuration(float* retval) +{ + // TODO[3]: Query the timed element + return NS_OK; +} + + +//---------------------------------------------------------------------- +// nsIDOMNode methods + +NS_IMPL_DOM_CLONENODE_WITH_INIT(nsSVGAnimateElement) + + +//---------------------------------------------------------------------- +// nsISVGContent methods + +nsresult nsSVGAnimateElement::BindToTree(nsIDocument* aDocument, + nsIContent* aParent, + nsIContent* aBindingParent, + PRBool aCompileEventHandlers) +{ + nsresult rv = nsSVGAnimateElementBase::BindToTree(aDocument, aParent, + aBindingParent, + aCompileEventHandlers); + + if (NS_SUCCEEDED(rv)) + { + UpdateTargetElement(); + + if (mTimedElement) + { + + nsRefPtr root = GetDocumentRoot(); + if (root) + rv = root->AddTimedElement(mTimedElement); + } + } + + return rv; +} + +void nsSVGAnimateElement::UnbindFromTree(PRBool aDeep, PRBool aNullParent) +{ + if (mTimedElement) + { + nsRefPtr root = GetDocumentRoot(); + if (root) + root->RemoveTimedElement(mTimedElement); + } + + nsSVGAnimateElementBase::UnbindFromTree(aDeep, aNullParent); + + UpdateTargetElement(); +} + +//---------------------------------------------------------------------- +// nsIContent methods + +nsresult nsSVGAnimateElement::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName, + nsIAtom* aPrefix, const nsAString& aValue, + PRBool aNotify) +{ + nsresult rv = nsSVGAnimateElementBase::SetAttr(aNameSpaceID, aName, aPrefix, + aValue, aNotify); + + // TODO[2]: Check namespaces + + NS_ASSERTION(mTimedElement, "Unexpected NULL timed element."); + + if (aName == nsSVGAtoms::attributeName) + { + UpdateTargetAttribute(); + return rv; + } + + if (mTimedElement) + { + if (aName == nsSVGAtoms::begin) + { + // TODO[3]: Error handling + rv = mTimedElement->SetBeginSpec(aValue); + NS_ENSURE_SUCCESS(rv,rv); + } + else if (aName == nsSVGAtoms::dur) + { + rv = mTimedElement->SetSimpleDuration(aValue); + NS_ENSURE_SUCCESS(rv,rv); + } + else if (aName == nsSVGAtoms::end) + { + rv = mTimedElement->SetEndSpec(aValue); + NS_ENSURE_SUCCESS(rv,rv); + } + return rv; + } + + if (mAnimation && mAnimation->IsInitialised()) + { + if (aName == nsSVGAtoms::from) + { + rv = mAnimation->SetFrom(aValue); + NS_ENSURE_SUCCESS(rv,rv); + } + else if (aName == nsSVGAtoms::to) + { + rv = mAnimation->SetTo(aValue); + NS_ENSURE_SUCCESS(rv,rv); + } + return rv; + } + + return rv; +} + +nsresult nsSVGAnimateElement::UnsetAttr(PRInt32 aNameSpaceID, + nsIAtom* aAttribute, PRBool aNotify) +{ + nsresult rv = nsSVGAnimateElementBase::UnsetAttr(aNameSpaceID, aAttribute, + aNotify); + if (aAttribute == nsSVGAtoms::attributeName) + UpdateTargetAttribute(); + // XXX Is unsetting the attribute name ever not an error? + + // XXX have to deal with unsetting other stuff + + return rv; +} + +//---------------------------------------------------------------------- +// Implementation helpers + +nsSMILTimedDocumentRoot* +nsSVGAnimateElement::GetDocumentRoot() +{ + nsSMILTimedDocumentRoot* result = nsnull; + nsCOMPtr ownerDOMSVG; + + nsresult rv = GetOwnerSVGElement(getter_AddRefs(ownerDOMSVG)); + + if (NS_SUCCEEDED(rv) && ownerDOMSVG) + { + nsCOMPtr ownerSVG( do_QueryInterface(ownerDOMSVG, &rv) ); + + if (ownerSVG) + result = ownerSVG->GetTimedDocumentRoot(); + } + + return result; +} + +nsIContent* +nsSVGAnimateElement::GetParentElement() +{ + nsIContent* result = nsnull; + nsIBindingManager* bindingManager = nsnull; + nsIDocument* ownerDoc = GetOwnerDoc(); + + if (ownerDoc) + bindingManager = ownerDoc->BindingManager(); + + if (bindingManager) + // we have a binding manager -- do we have an anonymous parent? + bindingManager->GetInsertionParent(this, &result); + + if (!result) + // if we didn't find an anonymous parent, use the explicit one, + // whether it's null or not... + result = GetParent(); + + return result; +} + +void +nsSVGAnimateElement::UpdateTargetElement() +{ + // TODO[2]: Follow xlink:href attributes when provided + + nsCOMPtr target = GetParentElement(); + + if (target) + { + nsWeakPtr targetElement = do_GetWeakReference(target); + if (targetElement && mTargetElement != targetElement) + { + mTargetElement = targetElement; + UpdateTargetAttribute(); + } + } + else + { + mTargetElement = nsnull; + mAnimation = nsnull; + } +} + +nsISMILAnimatableAttribute* +nsSVGAnimateElement::GetTargetAttribute() +{ + nsISMILAnimatableAttribute* result = nsnull; + + if (mTargetElement) + { + nsAutoString attributeName; + + GetAttr(kNameSpaceID_None, nsSVGAtoms::attributeName, attributeName); + + nsCOMPtr attributeAtom( do_GetAtom(attributeName) ); + nsCOMPtr + targetElement(do_QueryReferent(mTargetElement)); + + if (targetElement && attributeAtom) + { + result = + targetElement->GetAnimatableAttribute(kNameSpaceID_None, attributeAtom); + } + } + + return result; +} + +void +nsSVGAnimateElement::UpdateTargetAttribute() +{ + // TODO[2]: Implement XML vs CSS vs auto attribute types + + if (mTargetElement) + { + nsCOMPtr targetAttribute = GetTargetAttribute(); + + if (targetAttribute) + { + if (!mAnimation) + mAnimation = NS_NewSMILAnimationElement(); + + mAnimation->Init(*targetAttribute); + + SetAnimationProperties(); + + nsCOMPtr timeClient( do_QueryInterface(mAnimation) ); + if (timeClient && mTimedElement) + mTimedElement->AddTimeClient(timeClient); + + // TODO[1]: Register with the compositor + } + else + { + // TODO[3]: Attribute doesn't exist or it isn't animatable, mark document + // in error + // (if necessary, we might re-arrange the GetTargetAttribute method so we + // can produce separate errors for when the element is not animatable and + // when the attribute can't be found or isn't animatable) + } + } + /* else: We may still be loading, ignore for now. This will be called again + * when our parent changes. */ +} + +/* + * After re-initialising an animation element with a new target attribute, it is + * necessary to reset all the properties for that element. That is because the + * animation element needs to know the type of the target attribute so it knows + * how to interpret the value specifications it is given as "from", "to" etc. + * parameters. + */ +void +nsSVGAnimateElement::SetAnimationProperties() +{ + nsAutoString result; + + NS_ASSERTION(mAnimation, "Animation not created"); + NS_ASSERTION(mAnimation->IsInitialised(), "Animation not initialised"); + + if (mAnimation && mAnimation->IsInitialised()) + { + if (HasAttr(kNameSpaceID_None, nsSVGAtoms::from)) + { + if (NS_SUCCEEDED(GetAttr(kNameSpaceID_None, nsSVGAtoms::from, + result))) + mAnimation->SetFrom(result); + } + + if (HasAttr(kNameSpaceID_None, nsSVGAtoms::to)) + { + if (NS_SUCCEEDED(GetAttr(kNameSpaceID_None, nsSVGAtoms::to, + result))) + mAnimation->SetTo(result); + } + } +} + Index: /cvsroot/mozilla/content/svg/content/src/nsSVGAnimatedLength.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGAnimatedLength.cpp,v retrieving revision 1.8 diff -u -r1.8 nsSVGAnimatedLength.cpp --- /cvsroot/mozilla/content/svg/content/src/nsSVGAnimatedLength.cpp 31 Jan 2005 19:45:10 -0000 1.8 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGAnimatedLength.cpp 29 Aug 2005 09:47:30 -0000 @@ -41,6 +41,11 @@ #include "nsSVGAnimatedLength.h" #include "nsSVGLength.h" #include "nsContentUtils.h" +#ifdef MOZ_SMIL +#include "nsISMILAnimatableValue.h" +#include "nsISMILAnimatableAttribute.h" +#include "nsISMILAnimatableValueFactory.h" +#endif // MOZ_SMIL //////////////////////////////////////////////////////////////////////// @@ -49,6 +54,10 @@ class nsSVGAnimatedLength : public nsIDOMSVGAnimatedLength, public nsSVGValue, public nsISVGValueObserver, +#ifdef MOZ_SMIL + public nsISMILAnimatableAttribute, + public nsISMILAnimatableValueFactory, +#endif // MOZ_SMIL public nsSupportsWeakReference { protected: @@ -74,12 +83,28 @@ modificationType aModType); NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, modificationType aModType); + +#ifdef MOZ_SMIL + // nsISMILAnimatableAttribute + virtual nsISMILAnimatableValue* GetBaseValue(); + virtual nsISMILAnimatableValue* GetAnimValue(); + virtual nsresult SetAnimValue(nsISMILAnimatableValue& aValue); + + // nsISMILAnimatableValueFactory + virtual nsresult Create(nsISMILAnimatableValue** aResult) const; + virtual nsresult CreateFromSpec(const nsAString& aSpec, + nsISMILAnimatableValue** aResult, + PRBool& aIsAddable) const; +#endif // MOZ_SMIL // nsISupportsWeakReference // implementation inherited from nsSupportsWeakReference protected: nsCOMPtr mBaseVal; +#ifdef MOZ_SMIL + nsCOMPtr mAnimVal; +#endif // MOZ_SMIL }; @@ -102,8 +127,8 @@ void nsSVGAnimatedLength::Init(nsIDOMSVGLength* baseVal) { + if (!baseVal) return; mBaseVal = baseVal; - if (!mBaseVal) return; nsCOMPtr val = do_QueryInterface(mBaseVal); NS_ASSERTION(val, "baseval needs to implement nsISVGValue interface"); if (!val) return; @@ -122,6 +147,10 @@ NS_INTERFACE_MAP_ENTRY(nsIDOMSVGAnimatedLength) NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) +#ifdef MOZ_SMIL + NS_INTERFACE_MAP_ENTRY(nsISMILAnimatableAttribute) + NS_INTERFACE_MAP_ENTRY(nsISMILAnimatableValueFactory) +#endif // MOZ_SMIL NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(SVGAnimatedLength) NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISVGValue) NS_INTERFACE_MAP_END @@ -159,8 +188,22 @@ NS_IMETHODIMP nsSVGAnimatedLength::GetAnimVal(nsIDOMSVGLength * *aAnimVal) { +#ifndef MOZ_SMIL *aAnimVal = mBaseVal; NS_ADDREF(*aAnimVal); +#else + nsresult rv = NS_OK; + + if (!mAnimVal && mBaseVal) + { + nsCOMPtr length( do_QueryInterface(mBaseVal) ); + if (length) + rv = length->GetAnimValue(getter_AddRefs(mAnimVal)); + } + + NS_IF_ADDREF(*aAnimVal = mAnimVal); +#endif // MOZ_SMIL + return NS_OK; } @@ -183,6 +226,108 @@ return NS_OK; } +#ifdef MOZ_SMIL +//---------------------------------------------------------------------- +// nsISMILAnimatableAttribute methods + +// TODO[1]: Remove if we don't need it +nsISMILAnimatableValue* +nsSVGAnimatedLength::GetBaseValue() +{ + nsISMILAnimatableValue *result; + nsresult rv = mBaseVal->QueryInterface(NS_GET_IID(nsISMILAnimatableValue), + (void**)&result); + return result; +} + +nsISMILAnimatableValue* +nsSVGAnimatedLength::GetAnimValue() +{ + if (!mAnimVal) + { + nsCOMPtr length( do_QueryInterface(mBaseVal) ); + if (length) + length->GetAnimValue(getter_AddRefs(mAnimVal)); + } + + nsISMILAnimatableValue* result = nsnull; + + if (mAnimVal) + nsresult rv = mAnimVal->QueryInterface(NS_GET_IID(nsISMILAnimatableValue), + (void**)&result); + return result; +} + +nsresult +nsSVGAnimatedLength::SetAnimValue(nsISMILAnimatableValue& aValue) +{ + // TODO[1]: Check for equality before assigning + WillModify(mod_other); + nsCOMPtr animLength( do_QueryInterface(mAnimVal) ); + animLength->Set(aValue); + DidModify(mod_other); + + return NS_OK; +} + +//---------------------------------------------------------------------- +// nsISMILAnimatableValueFactory methods + +nsresult +nsSVGAnimatedLength::Create(nsISMILAnimatableValue** aResult) const +{ + nsISVGLength* length = nsnull; + nsISMILAnimatableValue* result = nsnull; + + nsresult rv = NS_NewSVGLength(&length); + + if (NS_SUCCEEDED(rv) && length) + rv = length->GetAnimatableValue(&result); + else + result = nsnull; + + NS_IF_RELEASE(length); + + // GetAnimatableValue will add ref + *aResult = result; + + return rv; +} + +nsresult +nsSVGAnimatedLength::CreateFromSpec(const nsAString& aSpec, + nsISMILAnimatableValue** aResult, + PRBool& aIsAddable) const +{ + NS_ASSERTION(aResult, "NULL pointer provided for storing new value."); + + if (!aResult) + return NS_ERROR_NULL_POINTER; + + // All length syntaxes are additive + aIsAddable = true; + *aResult = nsnull; + + // TODO[2] The syntax for numbers differs between XML attributes and CSS + // properties. Does the "attributeType" property affect this? + + nsCOMPtr length; + + nsresult rv = NS_NewSVGLength(getter_AddRefs(length), aSpec); + NS_ENSURE_SUCCESS(rv,rv); + + rv = length->ConvertToSpecifiedUnits(nsIDOMSVGLength::SVG_LENGTHTYPE_NUMBER); + NS_ENSURE_SUCCESS(rv,rv); + + rv = length->GetAnimatableValue(aResult); + NS_ENSURE_SUCCESS(rv,rv); + + // GetAnimatableValue will add ref + + return rv; +} +#endif // MOZ_SMIL + //////////////////////////////////////////////////////////////////////// // Exported creation functions Index: /cvsroot/mozilla/content/svg/content/src/nsSVGAtomList.h =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGAtomList.h,v retrieving revision 1.24 diff -u -r1.24 nsSVGAtomList.h --- /cvsroot/mozilla/content/svg/content/src/nsSVGAtomList.h 26 Aug 2005 02:49:49 -0000 1.24 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGAtomList.h 29 Aug 2005 09:47:31 -0000 @@ -55,6 +55,9 @@ ******/ // tags +#ifdef MOZ_SMIL +SVG_ATOM(animate, "animate") +#endif SVG_ATOM(circle, "circle") SVG_ATOM(clipPath, "clipPath") SVG_ATOM(defs, "defs") @@ -207,6 +210,29 @@ SVG_ATOM(y1, "y1") SVG_ATOM(y2, "y2") SVG_ATOM(zoomAndPan, "zoomAndPan") + +// SMIL properties (to be integrated with the others later) +#ifdef MOZ_SMIL +SVG_ATOM(accumulate, "accumulate") +SVG_ATOM(additive, "additive") +SVG_ATOM(attributeName, "attributeName") +SVG_ATOM(attributeType, "attributeType") +SVG_ATOM(begin, "begin") +SVG_ATOM(by, "by") +SVG_ATOM(calcMode, "calcMode") +SVG_ATOM(dur, "dur") +SVG_ATOM(end, "end") +SVG_ATOM(from, "from") +SVG_ATOM(keySplines, "keySplines") +SVG_ATOM(keyTimes, "keyTimes") +SVG_ATOM(max, "max") +SVG_ATOM(min, "min") +SVG_ATOM(repeatCount, "repeatCount") +SVG_ATOM(repeatDur, "repeatDur") +SVG_ATOM(restart, "restart") +SVG_ATOM(to, "to") +SVG_ATOM(values, "values") +#endif // transformation keywords SVG_ATOM(matrix, "matrix") Index: /cvsroot/mozilla/content/svg/content/src/nsSVGElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGElement.cpp,v retrieving revision 1.80 diff -u -r1.80 nsSVGElement.cpp --- /cvsroot/mozilla/content/svg/content/src/nsSVGElement.cpp 25 Aug 2005 21:31:07 -0000 1.80 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGElement.cpp 29 Aug 2005 09:47:33 -0000 @@ -92,6 +92,9 @@ NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_ENTRY(nsISVGContent) +#ifdef MOZ_SMIL + NS_INTERFACE_MAP_ENTRY(nsISMILAnimatableElement) +#endif // MOZ_SMIL // provided by nsGenericElement: // NS_INTERFACE_MAP_ENTRY(nsIStyledContent) // NS_INTERFACE_MAP_ENTRY(nsIContent) @@ -213,7 +216,10 @@ attrValue.SetTo(proxy); } else { - attrValue.SetTo(svg_value); + // We don't want to continue on and call SetAttrAndNotify, as + // the SVGValue has already done that for us. Returning early + // is safe as no event attributes are also SVGValues. + return NS_OK; } } else if (aName == nsSVGAtoms::style && aNamespaceID == kNameSpaceID_None) { @@ -872,3 +878,24 @@ return aAttr; } + +#ifdef MOZ_SMIL +//---------------------------------------------------------------------- +// nsISVGAnimationTarget methods + +// This should be overridden as necessary, e.g. to ensure some attributes are +// not animatable + +nsISMILAnimatableAttribute* +nsSVGElement::GetAnimatableAttribute(PRInt32 aNamespaceID, + nsIAtom* aName) +{ + nsCOMPtr result; + nsCOMPtr attr = GetMappedAttribute(aNamespaceID, aName); + + if (attr != nsnull) + result = do_QueryInterface(attr); + + return result; +} +#endif // MOZ_SMIL \ No newline at end of file Index: /cvsroot/mozilla/content/svg/content/src/nsSVGElement.h =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGElement.h,v retrieving revision 1.47 diff -u -r1.47 nsSVGElement.h --- /cvsroot/mozilla/content/svg/content/src/nsSVGElement.h 25 Aug 2005 21:57:31 -0000 1.47 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGElement.h 29 Aug 2005 09:47:34 -0000 @@ -53,10 +53,16 @@ #include "nsWeakReference.h" #include "nsISVGContent.h" #include "nsICSSStyleRule.h" +#ifdef MOZ_SMIL +#include "nsISMILAnimatableElement.h" +#endif // MOZ_SMIL class nsSVGElement : public nsGenericElement, // :nsIXMLContent:nsIStyledContent:nsIContent public nsISVGValueObserver, public nsSupportsWeakReference, // :nsISupportsWeakReference +#ifdef MOZ_SMIL + public nsISMILAnimatableElement, +#endif // MOZ_SMIL public nsISVGContent { protected: @@ -122,6 +128,12 @@ // nsISVGContent virtual void ParentChainChanged(); + +#ifdef MOZ_SMIL + // nsISVGAnimationTarget + virtual nsISMILAnimatableAttribute* + GetAnimatableAttribute(PRInt32 aNamespaceID, nsIAtom* aName); +#endif // MOZ_SMIL protected: // Hooks for subclasses Index: /cvsroot/mozilla/content/svg/content/src/nsSVGElementFactory.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGElementFactory.cpp,v retrieving revision 1.26 diff -u -r1.26 nsSVGElementFactory.cpp --- /cvsroot/mozilla/content/svg/content/src/nsSVGElementFactory.cpp 26 Aug 2005 02:49:49 -0000 1.26 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGElementFactory.cpp 29 Aug 2005 09:47:34 -0000 @@ -100,6 +100,10 @@ NS_NewSVGClipPathElement(nsIContent **aResult, nsINodeInfo *aNodeInfo); nsresult NS_NewSVGTextPathElement(nsIContent **aResult, nsINodeInfo *aNodeInfo); +#ifdef MOZ_SMIL +nsresult +NS_NewSVGAnimateElement(nsIContent **aResult, nsINodeInfo *aNodeInfo); +#endif // MOZ_SMIL static PRBool gSVGEnabled; static const char SVG_PREF_STR[] = "svg.enabled"; @@ -205,6 +209,10 @@ return NS_NewSVGClipPathElement(aResult, aNodeInfo); if (name == nsSVGAtoms::textPath) return NS_NewSVGTextPathElement(aResult, aNodeInfo); +#ifdef MOZ_SMIL + if (name == nsSVGAtoms::animate) + return NS_NewSVGAnimateElement(aResult, aNodeInfo); +#endif // MOZ_SMIL // if we don't know what to create, just create a standard xml element: return NS_NewXMLElement(aResult, aNodeInfo); Index: /cvsroot/mozilla/content/svg/content/src/nsSVGLength.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGLength.cpp,v retrieving revision 1.21 diff -u -r1.21 nsSVGLength.cpp --- /cvsroot/mozilla/content/svg/content/src/nsSVGLength.cpp 9 Aug 2005 13:53:00 -0000 1.21 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGLength.cpp 29 Aug 2005 09:47:36 -0000 @@ -49,10 +49,18 @@ #include "nsISVGValueUtils.h" #include "nsWeakReference.h" #include "nsContentUtils.h" +#ifdef MOZ_SMIL +#include "nsISMILAnimatableValue.h" +#include "nsDOMError.h" +#endif // MOZ_SMIL //////////////////////////////////////////////////////////////////////// // nsSVGLength class +#ifdef MOZ_SMIL +class nsSVGLength__Anim__; +#endif // MOZ_SMIL + class nsSVGLength : public nsISVGLength, public nsSVGValue, public nsISVGValueObserver, @@ -79,6 +87,10 @@ // nsISVGLength interface: NS_IMETHOD SetContext(nsSVGCoordCtx* context); +#ifdef MOZ_SMIL + virtual nsresult GetAnimValue(nsIDOMSVGLength** aResult); + virtual nsresult GetAnimatableValue(nsISMILAnimatableValue** aResult); +#endif // MOZ_SMIL // nsISVGValue interface: NS_IMETHOD SetValueString(const nsAString& aValue); @@ -104,8 +116,60 @@ float mValueInSpecifiedUnits; PRUint16 mSpecifiedUnitType; nsRefPtr mContext; +#ifdef MOZ_SMIL + nsWeakPtr mAnimValue; +#endif // MOZ_SMIL }; +#ifdef MOZ_SMIL +class nsSVGLength__Anim__ : public nsISVGLength, + public nsSVGValue, + public nsISVGValueObserver, + public nsISMILAnimatableValue, + public nsSupportsWeakReference +{ +public: + nsSVGLength__Anim__(nsSVGLength& aSource); + + // nsISupports interface: + NS_DECL_ISUPPORTS + + // nsIDOMSVGLength interface: + NS_DECL_NSIDOMSVGLENGTH + + // nsISMILAnimatableValue interface: + virtual void ComputeDistance(const nsISMILAnimatableValue& aFrom, + const nsISMILAnimatableValue& aTo, + PRFloat64& aDistance) const; + + virtual nsresult Interpolate(nsISMILAnimatableValue& aEndValue, + float aUnitDistance, + nsISMILAnimatableValue* aResult); + + virtual void Accumulate(const nsISMILAnimatableValue& aAddedValue); + virtual void Set(const nsISMILAnimatableValue& aNewValue); + + // nsISVGLength interface: + NS_IMETHOD SetContext(nsSVGCoordCtx* context); + virtual nsresult GetAnimValue(nsIDOMSVGLength** aResult); + virtual nsresult GetAnimatableValue(nsISMILAnimatableValue** aResult); + + // nsISVGValue interface: + NS_IMETHOD SetValueString(const nsAString& aValue); + NS_IMETHOD GetValueString(nsAString& aValue); + + // nsISVGValueObserver interface: + NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, + modificationType aModType); + NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, + modificationType aModType); + +protected: + float mCanonicalValue; + nsRefPtr mBase; + PRPackedBool mIsAnimated:1; +}; +#endif // MOZ_SMIL //---------------------------------------------------------------------- // Implementation @@ -529,6 +593,64 @@ return NS_OK; } +#ifdef MOZ_SMIL +nsresult +nsSVGLength::GetAnimValue(nsIDOMSVGLength** aResult) +{ + nsIDOMSVGLength* result = nsnull; + nsresult rv; + + NS_ASSERTION(aResult, "Pointer for storing result is NULL."); + + if (!aResult) + return NS_ERROR_NULL_POINTER; + + if (!mAnimValue) + { + nsSVGLength__Anim__* animValue = new nsSVGLength__Anim__(*this); + if (!animValue) + { + rv = NS_ERROR_OUT_OF_MEMORY; + } + else + { + result = NS_STATIC_CAST(nsIDOMSVGLength*, animValue); + result->AddRef(); + mAnimValue = + do_GetWeakReference(NS_STATIC_CAST(nsIDOMSVGLength*, animValue)); + } + } + else + { + CallQueryReferent(mAnimValue.get(), &result); + } + + *aResult = result; + + return rv; +} + +nsresult +nsSVGLength::GetAnimatableValue(nsISMILAnimatableValue** aResult) +{ + NS_ASSERTION(aResult, "NULL parameter passed for storing result"); + + if (!aResult) + return NS_ERROR_NULL_POINTER; + + *aResult = nsnull; + + nsIDOMSVGLength* length; + nsresult rv = GetAnimValue(&length); + + if (NS_SUCCEEDED(rv) && length) + CallQueryInterface(length, aResult); + + // GetAnimValue() will addref + + return rv; +} +#endif // MOZ_SMIL //---------------------------------------------------------------------- // Implementation helpers: @@ -596,3 +718,314 @@ } } +#ifdef MOZ_SMIL +//---------------------------------------------------------------------- +// nsSVGLength__Anim__ + +nsSVGLength__Anim__::nsSVGLength__Anim__(nsSVGLength& aSource) + : mCanonicalValue(0.0f), + mBase(&aSource), + mIsAnimated(PR_FALSE) +{ +} + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsISupports + +NS_IMPL_ADDREF(nsSVGLength__Anim__) +NS_IMPL_RELEASE(nsSVGLength__Anim__) + +NS_INTERFACE_MAP_BEGIN(nsSVGLength__Anim__) + NS_INTERFACE_MAP_ENTRY(nsISVGValue) + NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) + NS_INTERFACE_MAP_ENTRY(nsISVGLength) + NS_INTERFACE_MAP_ENTRY(nsIDOMSVGLength) + NS_INTERFACE_MAP_ENTRY(nsISMILAnimatableValue) + NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) + NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(SVGLength) + NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISVGValue) +NS_INTERFACE_MAP_END + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsIDOMSVGLength + +NS_IMETHODIMP +nsSVGLength__Anim__::GetUnitType(PRUint16 *aUnitType) +{ + return mBase->GetUnitType(aUnitType); +} + +NS_IMETHODIMP +nsSVGLength__Anim__::GetValue(float *aValue) +{ + if (mIsAnimated) + { + *aValue = mCanonicalValue; + return NS_OK; + } + else + { + return mBase->GetValue(aValue); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::SetValue(float aValue) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->SetValue(aValue); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::GetValueInSpecifiedUnits(float *aValueInSpecifiedUnits) +{ + if (mIsAnimated) + return NS_ERROR_NOT_IMPLEMENTED; // TODO + else + return mBase->GetValueInSpecifiedUnits(aValueInSpecifiedUnits); +} + +NS_IMETHODIMP +nsSVGLength__Anim__::SetValueInSpecifiedUnits(float aValueInSpecifiedUnits) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->SetValueInSpecifiedUnits(aValueInSpecifiedUnits); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::GetValueAsString(nsAString & aValueAsString) +{ + if (mIsAnimated) + return NS_ERROR_NOT_IMPLEMENTED; // TODO + else + return mBase->GetValueAsString(aValueAsString); +} + +NS_IMETHODIMP +nsSVGLength__Anim__::SetValueAsString(const nsAString & aValueAsString) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->SetValueAsString(aValueAsString); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::NewValueSpecifiedUnits(PRUint16 unitType, float valueInSpecifiedUnits) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->NewValueSpecifiedUnits(unitType, valueInSpecifiedUnits); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::ConvertToSpecifiedUnits(PRUint16 unitType) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->ConvertToSpecifiedUnits(unitType); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::GetTransformedValue(nsIDOMSVGMatrix *matrix, + float *_retval) +{ + if (mIsAnimated) + return NS_ERROR_NOT_IMPLEMENTED; // TODO + else + return mBase->GetTransformedValue(matrix, _retval); +} + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsISMILAnimatableValue + +void +nsSVGLength__Anim__::ComputeDistance(const nsISMILAnimatableValue& aFrom, + const nsISMILAnimatableValue& aTo, + PRFloat64& aDistance) const +{ + // TODO[3] +} + +nsresult +nsSVGLength__Anim__::Interpolate(nsISMILAnimatableValue& aEndValue, + float aUnitDistance, + nsISMILAnimatableValue* aResult) +{ + NS_ASSERTION(aResult, "NULL result parameter passed to Interpolate"); + + if (!aResult) + return NS_ERROR_NULL_POINTER; + + nsSVGLength__Anim__* end = + NS_STATIC_CAST(nsSVGLength__Anim__*, &aEndValue); + if (!end) + return NS_ERROR_FAILURE; + + nsSVGLength__Anim__* length = + NS_STATIC_CAST(nsSVGLength__Anim__*, aResult); + if (!length) + return NS_ERROR_FAILURE; + + nsresult rv = NS_OK; + + float startVal; + rv = GetValue(&startVal); + NS_ENSURE_SUCCESS(rv,rv); + + float endVal; + rv = end->GetValue(&endVal); + NS_ENSURE_SUCCESS(rv,rv); + + length->mCanonicalValue = + (startVal + (endVal - startVal) * aUnitDistance); + length->mIsAnimated = PR_TRUE; + + return NS_OK; +} + +void +nsSVGLength__Anim__::Accumulate(const nsISMILAnimatableValue& aAddedValue) +{ + // TODO[2] +} + +void +nsSVGLength__Anim__::Set(const nsISMILAnimatableValue& aNewValue) +{ + const nsSVGLength__Anim__* length = + NS_STATIC_CAST(const nsSVGLength__Anim__*, &aNewValue); + + if (length) + { + WillModify(); + mCanonicalValue = length->mCanonicalValue; + mIsAnimated = PR_TRUE; + DidModify(); + } +} + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsISVGLength + +NS_IMETHODIMP +nsSVGLength__Anim__::SetContext(nsSVGCoordCtx* context) +{ + WillModify(); + nsresult rv = mBase->SetContext(context); + DidModify(); + return rv; + // TODO[2]: Update stuff +} + +nsresult +nsSVGLength__Anim__::GetAnimValue(nsIDOMSVGLength** aResult) +{ + if (aResult) + { + NS_ADDREF(*aResult = this); + return NS_OK; + } + else + { + return NS_ERROR_NULL_POINTER; + } +} + +nsresult +nsSVGLength__Anim__::GetAnimatableValue(nsISMILAnimatableValue** aResult) +{ + if (aResult) + { + NS_ADDREF(*aResult = this); + return NS_OK; + } + else + { + return NS_ERROR_NULL_POINTER; + } +} + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsISVGValue + +NS_IMETHODIMP +nsSVGLength__Anim__::SetValueString(const nsAString& aValue) +{ + if (mIsAnimated) + { + return NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR; + } + else + { + WillModify(); + return mBase->SetValueString(aValue); + DidModify(); + } +} + +NS_IMETHODIMP +nsSVGLength__Anim__::GetValueString(nsAString& aValue) +{ + if (mIsAnimated) + return NS_ERROR_NOT_IMPLEMENTED; // TODO + else + return mBase->GetValueString(aValue); +} + +//---------------------------------------------------------------------- +// nsSVGLength__Anim__::nsISVGValueObserver + +NS_IMETHODIMP +nsSVGLength__Anim__::WillModifySVGObservable(nsISVGValue* observable, + modificationType aModType) +{ + WillModify(aModType); + return NS_OK; +} + +NS_IMETHODIMP +nsSVGLength__Anim__::DidModifySVGObservable(nsISVGValue* observable, + modificationType aModType) +{ + DidModify(aModType); + return NS_OK; +} +#endif // MOZ_SMIL + Index: /cvsroot/mozilla/content/svg/content/src/nsSVGSVGElement.cpp =================================================================== RCS file: /cvsroot/mozilla/content/svg/content/src/nsSVGSVGElement.cpp,v retrieving revision 1.53 diff -u -r1.53 nsSVGSVGElement.cpp --- /cvsroot/mozilla/content/svg/content/src/nsSVGSVGElement.cpp 25 Aug 2005 21:31:07 -0000 1.53 +++ /cvsroot/mozilla/content/svg/content/src/nsSVGSVGElement.cpp 29 Aug 2005 09:47:40 -0000 @@ -69,6 +69,11 @@ #include "nsSVGEnum.h" #include "nsISVGChildFrame.h" #include "nsGUIEvent.h" +#ifdef MOZ_SMIL +#include "nsIAnimationController.h" +#include "nsISMILAnimationController.h" +#include "nsSMILTimedDocumentRoot.h" +#endif // MOZ_SMIL typedef nsSVGStylableElement nsSVGSVGElementBase; @@ -110,6 +115,9 @@ NS_IMETHOD_(float) GetPreviousTranslate_x(); NS_IMETHOD_(float) GetPreviousTranslate_y(); NS_IMETHOD_(float) GetPreviousScale(); +#ifdef MOZ_SMIL + virtual nsSMILTimedDocumentRoot* GetTimedDocumentRoot(); +#endif // MOZ_SMIL // nsIStyledContent interface NS_IMETHOD_(PRBool) IsAttributeMapped(const nsIAtom* aAttribute) const; @@ -123,9 +131,20 @@ protected: // nsSVGElement overrides PRBool IsEventName(nsIAtom* aName); +#ifdef MOZ_SMIL + virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent, + nsIContent* aBindingParent, + PRBool aCompileEventHandlers); + virtual void UnbindFromTree(PRBool aDeep = PR_TRUE, + PRBool aNullParent = PR_TRUE); +#endif // MOZ_SMIL // implementation helpers: void GetScreenPosition(PRInt32 &x, PRInt32 &y); +#ifdef MOZ_SMIL + nsISMILAnimationController* GetAnimationController(nsIDocument* aDocument, + PRBool aCreate = PR_FALSE); +#endif // MOZ_SMIL nsCOMPtr mWidth; nsCOMPtr mHeight; @@ -146,6 +165,11 @@ float mPreviousScale; PRBool mZooming; +#ifdef MOZ_SMIL + // animation + nsRefPtr mTimedDocumentRoot; +#endif // MOZ_SMIL + PRInt32 mRedrawSuspendCount; }; @@ -1344,6 +1368,34 @@ return mPreviousScale; } +#ifdef MOZ_SMIL +nsSMILTimedDocumentRoot* +nsSVGSVGElement::GetTimedDocumentRoot() +{ + nsSMILTimedDocumentRoot* result = nsnull; + + if (mTimedDocumentRoot) + { + result = mTimedDocumentRoot; + } + else + { + // We must not be the outermost SVG element, try to find it + nsCOMPtr outerSVGDOM; + + nsresult rv = GetOwnerSVGElement(getter_AddRefs(outerSVGDOM)); + + if (NS_SUCCEEDED(rv) && outerSVGDOM) + { + nsCOMPtr outerSVG( do_QueryInterface(outerSVGDOM) ); + result = outerSVG->GetTimedDocumentRoot(); + } + } + + return result; +} +#endif // MOZ_SMIL + //---------------------------------------------------------------------- // nsIStyledContent methods @@ -1480,6 +1532,76 @@ aName == nsSVGAtoms::onzoom; } +#ifdef MOZ_SMIL +nsresult +nsSVGSVGElement::BindToTree(nsIDocument* aDocument, + nsIContent* aParent, + nsIContent* aBindingParent, + PRBool aCompileEventHandlers) +{ + nsCOMPtr outerSVG; + + GetOwnerSVGElement(getter_AddRefs(outerSVG)); + + PRBool outermost = (outerSVG == nsnull); + + nsCOMPtr smilController = + GetAnimationController(aDocument, PR_TRUE); + NS_ASSERTION(smilController, "Couldn't get animation controller"); + + if (!mTimedDocumentRoot && outermost) + { + // We are now the outermost SVG element + mTimedDocumentRoot = new nsSMILTimedDocumentRoot(); + NS_ENSURE_TRUE(mTimedDocumentRoot, NS_ERROR_FAILURE); + } + else if (mTimedDocumentRoot && !outermost) + { + // We are no longer the outermost SVG element + if (smilController) + { + smilController->RemoveTimeContainer(mTimedDocumentRoot); + } + mTimedDocumentRoot = nsnull; + } + + nsresult rv = nsSVGSVGElementBase::BindToTree(aDocument, aParent, + aBindingParent, + aCompileEventHandlers); + + if (NS_SUCCEEDED(rv) && mTimedDocumentRoot) + { + if (smilController) + // Eventually this will be done at the same time as the SVGLoad event but + // given that we don't currently support externalResourcesRequired, + // starting up the animation at this time is roughly the same + rv = smilController->AddTimeContainer(mTimedDocumentRoot); + } + + return rv; +} + +void +nsSVGSVGElement::UnbindFromTree(PRBool aDeep, PRBool aNullParent) +{ + if (mTimedDocumentRoot) + { + nsIDocument* doc = GetCurrentDoc(); + + if (doc) + { + nsCOMPtr smilController = + GetAnimationController(doc, PR_FALSE); + + if (smilController) + smilController->RemoveTimeContainer(mTimedDocumentRoot); + } + } + + nsSVGSVGElementBase::UnbindFromTree(aDeep, aNullParent); +} +#endif // MOZ_SMIL + //---------------------------------------------------------------------- // implementation helpers void nsSVGSVGElement::GetScreenPosition(PRInt32 &x, PRInt32 &y) @@ -1508,3 +1630,38 @@ y = rect.y; } } + +#ifdef MOZ_SMIL +nsISMILAnimationController* +nsSVGSVGElement::GetAnimationController(nsIDocument* aDocument, + PRBool aCreate /* = PR_FALSE */) +{ + nsISMILAnimationController* result = nsnull; + + nsIPresShell* presShell; + nsPresContext* context; + + if ((aDocument) + && + (presShell = aDocument->GetShellAt(0)) + && + (context = presShell->GetPresContext())) + { + nsIAnimationController* controller = context->GetAnimationController(); + if (controller) + { + nsresult rv = CallQueryInterface(controller, &result); + + if (NS_FAILED(rv)) + result = nsnull; + } + else if (aCreate) + { + result = NS_NewSMILAnimationController(); + context->SetAnimationController(result); + } + } + + return result; +} +#endif // MOZ_SMIL Index: /cvsroot/mozilla/content/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/content/Makefile.in,v retrieving revision 1.10 diff -u -r1.10 Makefile.in --- /cvsroot/mozilla/content/Makefile.in 18 Apr 2005 06:33:19 -0000 1.10 +++ /cvsroot/mozilla/content/Makefile.in 29 Aug 2005 09:47:49 -0000 @@ -53,6 +53,10 @@ DIRS += xtf endif +ifdef MOZ_SMIL +DIRS += smil +endif + DIRS += events include $(topsrcdir)/config/rules.mk Index: /cvsroot/mozilla/dom/public/nsIDOMClassInfo.h =================================================================== RCS file: /cvsroot/mozilla/dom/public/nsIDOMClassInfo.h,v retrieving revision 1.69 diff -u -r1.69 nsIDOMClassInfo.h --- /cvsroot/mozilla/dom/public/nsIDOMClassInfo.h 26 Aug 2005 02:49:49 -0000 1.69 +++ /cvsroot/mozilla/dom/public/nsIDOMClassInfo.h 29 Aug 2005 09:47:59 -0000 @@ -248,6 +248,10 @@ eDOMClassInfo_SVGDocument_id, // SVG element classes +#ifdef MOZ_SMIL + eDOMClassInfo_SVGAnimateElement_id, + eDOMClassInfo_SVGAnimationElement_id, +#endif // MOZ_SMIL eDOMClassInfo_SVGCircleElement_id, eDOMClassInfo_SVGClipPathElement_id, eDOMClassInfo_SVGDefsElement_id, Index: /cvsroot/mozilla/dom/public/idl/svg/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/dom/public/idl/svg/Makefile.in,v retrieving revision 1.20 diff -u -r1.20 Makefile.in --- /cvsroot/mozilla/dom/public/idl/svg/Makefile.in 26 Aug 2005 02:49:50 -0000 1.20 +++ /cvsroot/mozilla/dom/public/idl/svg/Makefile.in 29 Aug 2005 09:48:01 -0000 @@ -117,4 +117,10 @@ nsIDOMSVGZoomEvent.idl \ $(NULL) +ifdef MOZ_SMIL +XPIDLSRCS += nsIDOMSVGAnimateElement.idl \ + nsIDOMSVGAnimationElement.idl \ + $(NULL) +endif + include $(topsrcdir)/config/rules.mk Index: /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimateElement.idl =================================================================== RCS file: /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimateElement.idl diff -N dom/public/idl/svg/nsIDOMSVGAnimateElement.idl --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimateElement.idl 29 Aug 2005 09:48:01 -0000 @@ -0,0 +1,43 @@ +/* -*- Mode: IDL; 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 the Mozilla SVG project. + * + * The Initial Developer of the Original Code is + * Crocodile Clips Ltd.. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsIDOMSVGAnimationElement.idl" + +[scriptable, uuid(0c4297e8-68d0-471d-a933-64132ccc5b97)] +interface nsIDOMSVGAnimateElement : nsIDOMSVGAnimationElement {}; + Index: /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimationElement.idl =================================================================== RCS file: /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimationElement.idl diff -N dom/public/idl/svg/nsIDOMSVGAnimationElement.idl --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/dom/public/idl/svg/nsIDOMSVGAnimationElement.idl 29 Aug 2005 09:48:01 -0000 @@ -0,0 +1,63 @@ +/* -*- Mode: IDL; 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 the Mozilla SVG project. + * + * The Initial Developer of the Original Code is + * Crocodile Clips Ltd.. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Birtles + * + * 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 "nsIDOMSVGElement.idl" + +[scriptable, uuid(8f2ccf31-5544-4a9d-8927-ef35d242039e)] +interface nsIDOMSVGAnimationElement + : nsIDOMSVGElement +/* + The SVG DOM makes use of multiple interface inheritance. + Since XPCOM only supports single interface inheritance, + the best thing that we can do is to promise that whenever + an object implements _this_ interface it will also + implement the following interfaces. (We then have to QI to + hop between them.) + + nsIDOMSVGTests, + nsIDOMSVGExternalResourcesRequired, + smil::ElementTimeControl, + events::nsIDOMEventTarget +*/ +{ + readonly attribute nsIDOMSVGElement targetElement; + float getStartTime ( ); + float getCurrentTime ( ); + float getSimpleDuration ( ); + // raises (nsIDOMDOMException) +}; Index: /cvsroot/mozilla/dom/src/base/nsDOMClassInfo.cpp =================================================================== RCS file: /cvsroot/mozilla/dom/src/base/nsDOMClassInfo.cpp,v retrieving revision 1.304 diff -u -r1.304 nsDOMClassInfo.cpp --- /cvsroot/mozilla/dom/src/base/nsDOMClassInfo.cpp 26 Aug 2005 02:49:50 -0000 1.304 +++ /cvsroot/mozilla/dom/src/base/nsDOMClassInfo.cpp 29 Aug 2005 09:48:23 -0000 @@ -328,6 +328,10 @@ #include "nsIDOMSVGAnimPresAspRatio.h" #include "nsIDOMSVGAnimatedRect.h" #include "nsIDOMSVGAnimatedString.h" +#ifdef MOZ_SMIL +#include "nsIDOMSVGAnimateElement.h" +#include "nsIDOMSVGAnimationElement.h" +#endif // MOZ_SMIL #include "nsIDOMSVGAnimTransformList.h" #include "nsIDOMSVGCircleElement.h" #include "nsIDOMSVGClipPathElement.h" @@ -854,6 +858,12 @@ DOCUMENT_SCRIPTABLE_FLAGS) // SVG element classes +#ifdef MOZ_SMIL + NS_DEFINE_CLASSINFO_DATA(SVGAnimateElement, nsElementSH, + ELEMENT_SCRIPTABLE_FLAGS) + NS_DEFINE_CLASSINFO_DATA(SVGAnimationElement, nsElementSH, + ELEMENT_SCRIPTABLE_FLAGS) +#endif // MOZ_SMIL NS_DEFINE_CLASSINFO_DATA(SVGCircleElement, nsElementSH, ELEMENT_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(SVGClipPathElement, nsElementSH, @@ -2393,6 +2403,19 @@ // SVG element classes +#ifdef MOZ_SMIL + DOM_CLASSINFO_MAP_BEGIN(SVGAnimateElement, nsIDOMSVGAnimateElement) + DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGAnimationElement) + DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGAnimateElement) + DOM_CLASSINFO_SVG_ELEMENT_MAP_ENTRIES + DOM_CLASSINFO_MAP_END + + DOM_CLASSINFO_MAP_BEGIN(SVGAnimationElement, nsIDOMSVGAnimationElement) + DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGAnimationElement) + DOM_CLASSINFO_SVG_ELEMENT_MAP_ENTRIES + DOM_CLASSINFO_MAP_END +#endif // MOZ_SMIL + DOM_CLASSINFO_MAP_BEGIN(SVGCircleElement, nsIDOMSVGCircleElement) DOM_CLASSINFO_MAP_ENTRY(nsIDOMSVGCircleElement) DOM_CLASSINFO_SVG_GRAPHIC_ELEMENT_MAP_ENTRIES Index: /cvsroot/mozilla/layout/base/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/layout/base/Makefile.in,v retrieving revision 1.21 diff -u -r1.21 Makefile.in --- /cvsroot/mozilla/layout/base/Makefile.in 4 May 2005 20:22:28 -0000 1.21 +++ /cvsroot/mozilla/layout/base/Makefile.in 29 Aug 2005 09:48:24 -0000 @@ -112,6 +112,10 @@ nsStyleConsts.h \ $(NULL) +ifdef MOZ_SMIL +EXPORTS += nsIAnimationController.h +endif + CPPSRCS = \ nsBidiUtils.cpp \ nsCSSColorUtils.cpp \ Index: /cvsroot/mozilla/layout/base/nsIAnimationController.h =================================================================== RCS file: /cvsroot/mozilla/layout/base/nsIAnimationController.h diff -N layout/base/nsIAnimationController.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ /cvsroot/mozilla/layout/base/nsIAnimationController.h 29 Aug 2005 09:48:25 -0000 @@ -0,0 +1,56 @@ +/* -*- 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 the Mozilla SVG project. + * + * Contributor(s): + * Brian Birtles + * + * 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 ***** */ + +#ifndef __NS_IANIMATIONCONTROLLER_H__ +#define __NS_IANIMATIONCONTROLLER_H__ + +#include "nsISupports.h" + +//////////////////////////////////////////////////////////////////////// +// nsIAnimationController: Animation controller + +// {7aa203ea-e6e1-4cca-84af-a29f0eaedef5} +#define NS_IANIMATIONCONTROLLER_IID \ +{ 0x7aa203ea, 0xe6e1, 0x4cca, { 0x84, 0xaf, 0xa2, 0x9f, 0x0e, 0xae, 0xde, 0xf5 } } + +class nsIAnimationController : public nsISupports +{ +public: + NS_DEFINE_STATIC_IID_ACCESSOR(NS_IANIMATIONCONTROLLER_IID) + + virtual nsresult Pause()=0; + virtual nsresult Resume()=0; +}; + +#endif // __NS_IANIMATIONCONTROLLER_H__ + Index: /cvsroot/mozilla/layout/base/nsPresContext.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/base/nsPresContext.cpp,v retrieving revision 3.290 diff -u -r3.290 nsPresContext.cpp --- /cvsroot/mozilla/layout/base/nsPresContext.cpp 23 Aug 2005 23:52:16 -0000 3.290 +++ /cvsroot/mozilla/layout/base/nsPresContext.cpp 29 Aug 2005 09:48:28 -0000 @@ -267,6 +267,10 @@ NS_IF_RELEASE(mDeviceContext); NS_IF_RELEASE(mLookAndFeel); NS_IF_RELEASE(mLangGroup); + +#ifdef MOZ_SMIL + NS_IF_RELEASE(mAnimationController); +#endif } NS_IMPL_ISUPPORTS2(nsPresContext, nsPresContext, nsIObserver) Index: /cvsroot/mozilla/layout/base/nsPresContext.h =================================================================== RCS file: /cvsroot/mozilla/layout/base/nsPresContext.h,v retrieving revision 3.152 diff -u -r3.152 nsPresContext.h --- /cvsroot/mozilla/layout/base/nsPresContext.h 23 Aug 2005 23:52:16 -0000 3.152 +++ /cvsroot/mozilla/layout/base/nsPresContext.h 29 Aug 2005 09:48:29 -0000 @@ -56,6 +56,10 @@ #include "nsCRT.h" #include "nsIPrintSettings.h" #include "nsPropertyTable.h" +#ifdef MOZ_SMIL +#include "nsIAnimationController.h" +#endif + #ifdef IBMBIDI class nsBidiPresUtils; #endif // IBMBIDI @@ -626,6 +630,18 @@ */ const nscoord* GetBorderWidthTable() { return mBorderWidthTable; } +#ifdef MOZ_SMIL + nsIAnimationController* GetAnimationController() + { return mAnimationController; } + void SetAnimationController(nsIAnimationController* aController) + { + NS_IF_ADDREF(aController); + nsIAnimationController* temp = mAnimationController; + mAnimationController = aController; + NS_IF_RELEASE(temp); + } +#endif + protected: NS_HIDDEN_(void) SetImgAnimations(nsIContent *aParent, PRUint16 aMode); NS_HIDDEN_(void) GetDocumentColorPreferences(); @@ -669,6 +685,10 @@ nsBidiPresUtils* mBidiUtils; #endif +#ifdef MOZ_SMIL + nsIAnimationController* mAnimationController; // [STRONG] +#endif + nsCOMPtr mTheme; nsCOMPtr mLangService; nsCOMPtr mPrintSettings; Index: /cvsroot/mozilla/layout/build/Makefile.in =================================================================== RCS file: /cvsroot/mozilla/layout/build/Makefile.in,v retrieving revision 1.128 diff -u -r1.128 Makefile.in --- /cvsroot/mozilla/layout/build/Makefile.in 18 Aug 2005 12:31:30 -0000 1.128 +++ /cvsroot/mozilla/layout/build/Makefile.in 29 Aug 2005 09:48:31 -0000 @@ -188,6 +188,12 @@ endif endif +ifdef MOZ_SMIL +SHARED_LIBRARY_LIBS += \ + $(DIST)/lib/$(LIB_PREFIX)gkconsmil_s.$(LIB_SUFFIX) \ + $(NULL) +endif + EXTRA_DSO_LDOPTS = \ $(LIBS_DIR) \ $(EXTRA_DSO_LIBS) \ Index: /cvsroot/mozilla/config/autoconf.mk.in =================================================================== RCS file: /cvsroot/mozilla/config/autoconf.mk.in,v retrieving revision 3.365 diff -u -r3.365 autoconf.mk.in --- /cvsroot/mozilla/config/autoconf.mk.in 20 Aug 2005 06:21:16 -0000 3.365 +++ /cvsroot/mozilla/config/autoconf.mk.in 29 Aug 2005 09:48:34 -0000 @@ -196,6 +196,7 @@ MOZ_LIBART_CFLAGS = @MOZ_LIBART_CFLAGS@ MOZ_ENABLE_CANVAS = @MOZ_ENABLE_CANVAS@ MOZ_CAIRO_CFLAGS = @MOZ_CAIRO_CFLAGS@ +MOZ_SMIL = @MOZ_SMIL@ TX_EXE = @TX_EXE@ # Mac's don't like / in a #include, so we include the libart Index: /cvsroot/mozilla/allmakefiles.sh =================================================================== RCS file: /cvsroot/mozilla/allmakefiles.sh,v retrieving revision 1.584 diff -u -r1.584 allmakefiles.sh --- /cvsroot/mozilla/allmakefiles.sh 24 Aug 2005 13:24:34 -0000 1.584 +++ /cvsroot/mozilla/allmakefiles.sh 29 Aug 2005 09:49:16 -0000 @@ -1338,6 +1338,15 @@ " fi +# smil +if [ "$MOZ_SMIL" ]; then + MAKEFILES_content="$MAKEFILES_content + content/smil/Makefile + content/smil/public/Makefile + content/smil/src/Makefile +" +fi + # xtf if [ "$MOZ_XTF" ]; then MAKEFILES_content="$MAKEFILES_content Index: /cvsroot/mozilla/configure.in =================================================================== RCS file: /cvsroot/mozilla/configure.in,v retrieving revision 1.1518 diff -u -r1.1518 configure.in --- /cvsroot/mozilla/configure.in 26 Aug 2005 17:27:07 -0000 1.1518 +++ /cvsroot/mozilla/configure.in 29 Aug 2005 09:49:37 -0000 @@ -4964,6 +4964,17 @@ dnl fi dnl ======================================================== +dnl SMIL +dnl ======================================================== +MOZ_ARG_ENABLE_BOOL(smil, +[ --enable-smil Enable SMIL animation support], + MOZ_SMIL=1, + MOZ_SMIL= ) +if test -n "$MOZ_SMIL"; then + AC_DEFINE(MOZ_SMIL) +fi + +dnl ======================================================== dnl Transformiix dnl ======================================================== @@ -6586,6 +6597,7 @@ AC_SUBST(MOZ_SVG_RENDERER_GDIPLUS) AC_SUBST(MOZ_SVG_RENDERER_LIBART) AC_SUBST(MOZ_SVG_RENDERER_CAIRO) +AC_SUBST(MOZ_SMIL) AC_SUBST(TX_EXE) AC_SUBST(MOZ_JS_LIBS) AC_SUBST(MOZ_PSM) Index: /cvsroot/mozilla/configure =================================================================== RCS file: /cvsroot/mozilla/configure,v retrieving revision 1.1507 diff -u -r1.1507 configure --- /cvsroot/mozilla/configure 26 Aug 2005 17:31:57 -0000 1.1507 +++ /cvsroot/mozilla/configure 29 Aug 2005 09:50:20 -0000 @@ -179,6 +179,8 @@ ac_help="$ac_help --enable-svg-renderer={gdiplus,libart,cairo}" ac_help="$ac_help + --enable-smil Enable SMIL animation support" +ac_help="$ac_help --disable-installer Disable building of installer" ac_help="$ac_help --disable-updater Disable building of updater" @@ -933,7 +935,7 @@ fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:937: checking host system type" >&5 +echo "configure:939: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -954,7 +956,7 @@ echo "$ac_t""$host" 1>&6 echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:958: checking target system type" >&5 +echo "configure:960: checking target system type" >&5 target_alias=$target case "$target_alias" in @@ -972,7 +974,7 @@ echo "$ac_t""$target" 1>&6 echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:976: checking build system type" >&5 +echo "configure:978: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1042,12 +1044,12 @@ LIBGNOME_VERSION=2.0 MISSING_X= -for ac_prog in gawk mawk nawk awk +for ac_prog in mawk gawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1051: checking for $ac_word" >&5 +echo "configure:1053: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1145,7 +1147,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1149: checking for $ac_word" >&5 +echo "configure:1151: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_NSINSTALL_BIN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1218,13 +1220,13 @@ _SAVE_LDFLAGS="$LDFLAGS" echo $ac_n "checking for host c compiler""... $ac_c" 1>&6 -echo "configure:1222: checking for host c compiler" >&5 +echo "configure:1224: checking for host c compiler" >&5 for ac_prog in $HOST_CC gcc cc /usr/ucb/cc cl icc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1228: checking for $ac_word" >&5 +echo "configure:1230: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1259,13 +1261,13 @@ fi echo "$ac_t""$HOST_CC" 1>&6 echo $ac_n "checking for host c++ compiler""... $ac_c" 1>&6 -echo "configure:1263: checking for host c++ compiler" >&5 +echo "configure:1265: checking for host c++ compiler" >&5 for ac_prog in $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1269: checking for $ac_word" >&5 +echo "configure:1271: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1314,7 +1316,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1318: checking for $ac_word" >&5 +echo "configure:1320: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1349,7 +1351,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1353: checking for $ac_word" >&5 +echo "configure:1355: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1384,16 +1386,16 @@ LDFLAGS="$HOST_LDFLAGS" echo $ac_n "checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1388: checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5 +echo "configure:1390: checking whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_prog_hostcc_works=1 echo "$ac_t""yes" 1>&6 else @@ -1408,16 +1410,16 @@ CFLAGS="$HOST_CXXFLAGS" echo $ac_n "checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1412: checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works" >&5 +echo "configure:1414: checking whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_prog_hostcxx_works=1 echo "$ac_t""yes" 1>&6 else @@ -1437,7 +1439,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1441: checking for $ac_word" >&5 +echo "configure:1443: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1471,7 +1473,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1475: checking for $ac_word" >&5 +echo "configure:1477: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1501,7 +1503,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1505: checking for $ac_word" >&5 +echo "configure:1507: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1552,7 +1554,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1556: checking for $ac_word" >&5 +echo "configure:1558: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1584,7 +1586,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1588: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1590: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1595,12 +1597,12 @@ cat > conftest.$ac_ext << EOF -#line 1599 "configure" +#line 1601 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1626,12 +1628,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1630: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1632: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1635: checking whether we are using GNU C" >&5 +echo "configure:1637: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1640,7 +1642,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1659,7 +1661,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1663: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1665: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1695,7 +1697,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1699: checking for $ac_word" >&5 +echo "configure:1701: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1731,7 +1733,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1735: checking for $ac_word" >&5 +echo "configure:1737: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1763,7 +1765,7 @@ echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1767: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1769: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1774,12 +1776,12 @@ cat > conftest.$ac_ext << EOF -#line 1778 "configure" +#line 1780 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:1783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1805,12 +1807,12 @@ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1809: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1811: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1814: checking whether we are using GNU C++" >&5 +echo "configure:1816: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1819,7 +1821,7 @@ yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1823: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1838,7 +1840,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1842: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1844: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1869,63 +1871,12 @@ fi fi -for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat > conftest.$ac_ext < -$ac_declaration -int main() { -exit (42); -; return 0; } -EOF -if { (eval echo configure:1891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - continue -fi -rm -f conftest* - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - - for ac_prog in $RANLIB "${target_alias}-ranlib" "${target}-ranlib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1929: checking for $ac_word" >&5 +echo "configure:1880: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1960,7 +1911,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1964: checking for $ac_word" >&5 +echo "configure:1915: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1995,7 +1946,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1999: checking for $ac_word" >&5 +echo "configure:1950: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2036,7 +1987,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2040: checking for $ac_word" >&5 +echo "configure:1991: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2071,7 +2022,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2075: checking for $ac_word" >&5 +echo "configure:2026: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2106,7 +2057,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2110: checking for $ac_word" >&5 +echo "configure:2061: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2144,7 +2095,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2148: checking for $ac_word" >&5 +echo "configure:2099: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2174,7 +2125,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2178: checking for $ac_word" >&5 +echo "configure:2129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2225,7 +2176,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2229: checking for $ac_word" >&5 +echo "configure:2180: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2257,7 +2208,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2261: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2212: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -2268,12 +2219,12 @@ cat > conftest.$ac_ext << EOF -#line 2272 "configure" +#line 2223 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2299,12 +2250,12 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2303: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2254: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:2308: checking whether we are using GNU C" >&5 +echo "configure:2259: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2313,7 +2264,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2317: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2268: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2332,7 +2283,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2336: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2287: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2368,7 +2319,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2372: checking for $ac_word" >&5 +echo "configure:2323: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2400,7 +2351,7 @@ echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2404: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:2355: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -2411,12 +2362,12 @@ cat > conftest.$ac_ext << EOF -#line 2415 "configure" +#line 2366 "configure" #include "confdefs.h" int main(){return(0);} EOF -if { (eval echo configure:2420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2442,12 +2393,12 @@ { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2446: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2397: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:2451: checking whether we are using GNU C++" >&5 +echo "configure:2402: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2456,7 +2407,7 @@ yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:2411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -2475,7 +2426,7 @@ ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:2479: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:2430: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2506,61 +2457,10 @@ fi fi -for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat > conftest.$ac_ext < -$ac_declaration -int main() { -exit (42); -; return 0; } -EOF -if { (eval echo configure:2528: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - continue -fi -rm -f conftest* - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - - # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2564: checking for $ac_word" >&5 +echo "configure:2464: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2592,7 +2492,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2596: checking for $ac_word" >&5 +echo "configure:2496: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2633,7 +2533,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2637: checking for $ac_word" >&5 +echo "configure:2537: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2668,7 +2568,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2672: checking for $ac_word" >&5 +echo "configure:2572: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2703,7 +2603,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2707: checking for $ac_word" >&5 +echo "configure:2607: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2738,7 +2638,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2742: checking for $ac_word" >&5 +echo "configure:2642: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2827,7 +2727,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2831: checking for $ac_word" >&5 +echo "configure:2731: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MIDL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2869,14 +2769,14 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext < int main() { printf("Hello World\n"); ; return 0; } EOF -if { (eval echo configure:2880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 @@ -2894,14 +2794,14 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < int main() { unsigned *test = new unsigned(42); ; return 0; } EOF -if { (eval echo configure:2905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 @@ -2957,7 +2857,7 @@ _MIDL_REV_VERSION=`echo ${_MIDL_FULL_VERSION} | $AWK -F\. '{ print $3 }'` # Add flags if necessary echo $ac_n "checking for midl flags""... $ac_c" 1>&6 -echo "configure:2961: checking for midl flags" >&5 +echo "configure:2861: checking for midl flags" >&5 if test \( "$_MIDL_MAJOR_VERSION" -gt "6" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" -gt "0" \) -o \( "$_MIDL_MAJOR_VERSION" = "6" -a "$_MIDL_MINOR_VERSION" = "00" -a "$_MIDL_REV_VERSION" -gt "359" \); then # Starting with MIDL version 6.0.359, the MIDL compiler # generates /Oicf /robust stubs by default, which is not @@ -2979,9 +2879,9 @@ _W32API_MAJOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $1 }'` _W32API_MINOR_VERSION=`echo $W32API_VERSION | $AWK -F\. '{ print $2 }'` echo $ac_n "checking for w32api version >= $W32API_VERSION""... $ac_c" 1>&6 -echo "configure:2983: checking for w32api version >= $W32API_VERSION" >&5 +echo "configure:2883: checking for w32api version >= $W32API_VERSION" >&5 cat > conftest.$ac_ext < int main() { @@ -2993,7 +2893,7 @@ ; return 0; } EOF -if { (eval echo configure:2997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* res=yes else @@ -3009,7 +2909,7 @@ fi # Check windres version echo $ac_n "checking for windres version >= $WINDRES_VERSION""... $ac_c" 1>&6 -echo "configure:3013: checking for windres version >= $WINDRES_VERSION" >&5 +echo "configure:2913: checking for windres version >= $WINDRES_VERSION" >&5 _WINDRES_VERSION=`${WINDRES} --version 2>&1 | grep -i windres 2>/dev/null | $AWK '{ print $3 }'` echo "$ac_t""$_WINDRES_VERSION" 1>&6 _WINDRES_MAJOR_VERSION=`echo $_WINDRES_VERSION | $AWK -F\. '{ print $1 }'` @@ -3036,7 +2936,7 @@ SKIP_COMPILER_CHECKS=1 SKIP_LIBRARY_CHECKS=1 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3040: checking how to run the C preprocessor" >&5 +echo "configure:2940: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3051,13 +2951,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3061: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2961: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3068,13 +2968,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3085,13 +2985,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3095: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3119,17 +3019,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3123: checking for $ac_hdr" >&5 +echo "configure:3023: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3133: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3160,10 +3060,10 @@ if test "$CC" != "icc" -a -z "$_WIN32_MSVC"; then if test "x$CC" != xcc; then echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 -echo "configure:3164: checking whether $CC and cc understand -c and -o together" >&5 +echo "configure:3064: checking whether $CC and cc understand -c and -o together" >&5 else echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 -echo "configure:3167: checking whether cc understands -c and -o together" >&5 +echo "configure:3067: checking whether cc understands -c and -o together" >&5 fi set dummy $CC; ac_cc="`echo $2 | sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" @@ -3175,16 +3075,16 @@ # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' -if { (eval echo configure:3179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && - test -f conftest.o && { (eval echo configure:3180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; +if { (eval echo configure:3079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:3080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. - if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:3185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:3085: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then ac_try='cc -c conftest.c -o conftest.o 1>&5' - if { (eval echo configure:3187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && - test -f conftest.o && { (eval echo configure:3188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; + if { (eval echo configure:3087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:3088: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; then # cc works too. : @@ -3220,7 +3120,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3224: checking how to run the C preprocessor" >&5 +echo "configure:3124: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3235,13 +3135,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3145: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3252,13 +3152,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3269,13 +3169,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3300,7 +3200,7 @@ echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:3304: checking how to run the C++ preprocessor" >&5 +echo "configure:3204: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3313,12 +3213,12 @@ cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -3365,7 +3265,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:3369: checking for a BSD compatible install" >&5 +echo "configure:3269: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3418,7 +3318,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:3422: checking whether ln -s works" >&5 +echo "configure:3322: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3443,7 +3343,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3447: checking for $ac_word" >&5 +echo "configure:3347: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3483,7 +3383,7 @@ fi echo $ac_n "checking for minimum required perl version >= $PERL_VERSION""... $ac_c" 1>&6 -echo "configure:3487: checking for minimum required perl version >= $PERL_VERSION" >&5 +echo "configure:3387: checking for minimum required perl version >= $PERL_VERSION" >&5 _perl_version=`PERL_VERSION=$PERL_VERSION $PERL -e 'print "$]"; if ($] >= $ENV{PERL_VERSION}) { exit(0); } else { exit(1); }' 2>&5` _perl_res=$? echo "$ac_t""$_perl_version" 1>&6 @@ -3493,7 +3393,7 @@ fi echo $ac_n "checking for full perl installation""... $ac_c" 1>&6 -echo "configure:3497: checking for full perl installation" >&5 +echo "configure:3397: checking for full perl installation" >&5 _perl_archlib=`$PERL -e 'use Config; if ( -d $Config{archlib} ) { exit(0); } else { exit(1); }' 2>&5` _perl_res=$? if test "$_perl_res" != 0; then @@ -3506,7 +3406,7 @@ # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3510: checking for $ac_word" >&5 +echo "configure:3410: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_DOXYGEN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3542,7 +3442,7 @@ # Extract the first word of "whoami", so it can be a program name with args. set dummy whoami; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3546: checking for $ac_word" >&5 +echo "configure:3446: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_WHOAMI'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3578,7 +3478,7 @@ # Extract the first word of "autoconf", so it can be a program name with args. set dummy autoconf; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3582: checking for $ac_word" >&5 +echo "configure:3482: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AUTOCONF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3614,7 +3514,7 @@ # Extract the first word of "unzip", so it can be a program name with args. set dummy unzip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3618: checking for $ac_word" >&5 +echo "configure:3518: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_UNZIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3652,7 +3552,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3656: checking for $ac_word" >&5 +echo "configure:3556: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_ZIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3693,7 +3593,7 @@ # Extract the first word of "makedepend", so it can be a program name with args. set dummy makedepend; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3697: checking for $ac_word" >&5 +echo "configure:3597: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SYSTEM_MAKEDEPEND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3728,7 +3628,7 @@ # Extract the first word of "xargs", so it can be a program name with args. set dummy xargs; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3732: checking for $ac_word" >&5 +echo "configure:3632: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XARGS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3791,7 +3691,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3795: checking for $ac_word" >&5 +echo "configure:3695: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PBBUILD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3841,7 +3741,7 @@ # Extract the first word of "sdp", so it can be a program name with args. set dummy sdp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3845: checking for $ac_word" >&5 +echo "configure:3745: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SDP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3947,7 +3847,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3951: checking for $ac_word" >&5 +echo "configure:3851: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3990,7 +3890,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3994: checking for $ac_word" >&5 +echo "configure:3894: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4058,7 +3958,7 @@ # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:4062: checking for X" >&5 +echo "configure:3962: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -4120,12 +4020,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4194,14 +4094,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -4307,17 +4207,17 @@ case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:4311: checking whether -R must be followed by a space" >&5 +echo "configure:4211: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -4333,14 +4233,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -4372,7 +4272,7 @@ # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:4376: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:4276: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4380,7 +4280,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4413,7 +4313,7 @@ if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:4417: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:4317: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4421,7 +4321,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4461,12 +4361,12 @@ # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:4465: checking for gethostbyname" >&5 +echo "configure:4365: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -4510,7 +4410,7 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:4514: checking for gethostbyname in -lnsl" >&5 +echo "configure:4414: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4518,7 +4418,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4559,12 +4459,12 @@ # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:4563: checking for connect" >&5 +echo "configure:4463: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -4608,7 +4508,7 @@ if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:4612: checking for connect in -lsocket" >&5 +echo "configure:4512: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4616,7 +4516,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4651,12 +4551,12 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:4655: checking for remove" >&5 +echo "configure:4555: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -4700,7 +4600,7 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:4704: checking for remove in -lposix" >&5 +echo "configure:4604: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4708,7 +4608,7 @@ ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4743,12 +4643,12 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:4747: checking for shmat" >&5 +echo "configure:4647: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -4792,7 +4692,7 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:4796: checking for shmat in -lipc" >&5 +echo "configure:4696: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4800,7 +4700,7 @@ ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4844,7 +4744,7 @@ # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:4848: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:4748: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4852,7 +4752,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5273,7 +5173,7 @@ if test "$COMPILE_ENVIRONMENT"; then if test "$GNU_CC"; then echo $ac_n "checking whether ld has archive extraction flags""... $ac_c" 1>&6 -echo "configure:5277: checking whether ld has archive extraction flags" >&5 +echo "configure:5177: checking whether ld has archive extraction flags" >&5 if eval "test \"`echo '$''{'ac_cv_mkshlib_force_and_unforce'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5290,14 +5190,14 @@ LDFLAGS=$force LIBS=$unforce cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_mkshlib_force_and_unforce=$line; break else @@ -5332,17 +5232,17 @@ cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking for 64-bit OS""... $ac_c" 1>&6 -echo "configure:5336: checking for 64-bit OS" >&5 +echo "configure:5236: checking for 64-bit OS" >&5 if test "$cross_compiling" = yes; then result="maybe" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then result="yes" else @@ -5501,9 +5401,9 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for VisualAge C++ compiler version >= 5.0.2.0""... $ac_c" 1>&6 -echo "configure:5505: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5 +echo "configure:5405: checking for VisualAge C++ compiler version >= 5.0.2.0" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _BAD_COMPILER= else @@ -5549,17 +5449,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5553: checking for $ac_hdr" >&5 +echo "configure:5453: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5601,7 +5501,7 @@ LIBS="$LIBS -lbe" if test "$COMPILE_ENVIRONMENT"; then echo $ac_n "checking for main in -lbind""... $ac_c" 1>&6 -echo "configure:5605: checking for main in -lbind" >&5 +echo "configure:5505: checking for main in -lbind" >&5 ac_lib_var=`echo bind'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5609,14 +5509,14 @@ ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5637,7 +5537,7 @@ fi echo $ac_n "checking for main in -lzeta""... $ac_c" 1>&6 -echo "configure:5641: checking for main in -lzeta" >&5 +echo "configure:5541: checking for main in -lzeta" >&5 ac_lib_var=`echo zeta'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5645,14 +5545,14 @@ ac_save_LIBS="$LIBS" LIBS="-lzeta $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6545,9 +6445,9 @@ CC_VERSION=`$CC -V 2>&1 | grep '^cc:' 2>/dev/null | $AWK -F\: '{ print $2 }'` CXX_VERSION=`$CXX -V 2>&1 | grep '^CC:' 2>/dev/null | $AWK -F\: '{ print $2 }'` echo $ac_n "checking for Forte compiler version >= WS6U2""... $ac_c" 1>&6 -echo "configure:6549: checking for Forte compiler version >= WS6U2" >&5 +echo "configure:6449: checking for Forte compiler version >= WS6U2" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _BAD_COMPILER= else @@ -6678,7 +6578,7 @@ ;; *-darwin*) echo $ac_n "checking for -exported_symbols_list option to ld""... $ac_c" 1>&6 -echo "configure:6682: checking for -exported_symbols_list option to ld" >&5 +echo "configure:6582: checking for -exported_symbols_list option to ld" >&5 if eval "test \"`echo '$''{'ac_cv_exported_symbols_list'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6718,12 +6618,12 @@ cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:6722: checking for ANSI C header files" >&5 +echo "configure:6622: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -6731,7 +6631,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6635: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6748,7 +6648,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6766,7 +6666,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -6787,7 +6687,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -6798,7 +6698,7 @@ exit (0); } EOF -if { (eval echo configure:6802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6822,12 +6722,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:6826: checking for working const" >&5 +echo "configure:6726: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -6897,12 +6797,12 @@ fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:6901: checking for mode_t" >&5 +echo "configure:6801: checking for mode_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6930,12 +6830,12 @@ fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:6934: checking for off_t" >&5 +echo "configure:6834: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6963,12 +6863,12 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:6967: checking for pid_t" >&5 +echo "configure:6867: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -6996,12 +6896,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7000: checking for size_t" >&5 +echo "configure:6900: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7029,12 +6929,12 @@ fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:7033: checking for uid_t in sys/types.h" >&5 +echo "configure:6933: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -7063,12 +6963,12 @@ fi echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:7067: checking for st_blksize in struct stat" >&5 +echo "configure:6967: checking for st_blksize in struct stat" >&5 if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7076,7 +6976,7 @@ struct stat s; s.st_blksize; ; return 0; } EOF -if { (eval echo configure:7080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_st_blksize=yes else @@ -7097,12 +6997,12 @@ fi echo $ac_n "checking for siginfo_t""... $ac_c" 1>&6 -echo "configure:7101: checking for siginfo_t" >&5 +echo "configure:7001: checking for siginfo_t" >&5 if eval "test \"`echo '$''{'ac_cv_siginfo_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -7110,7 +7010,7 @@ siginfo_t* info; ; return 0; } EOF -if { (eval echo configure:7114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_siginfo_t=true else @@ -7144,12 +7044,12 @@ fi echo $ac_n "checking for int16_t""... $ac_c" 1>&6 -echo "configure:7148: checking for int16_t" >&5 +echo "configure:7048: checking for int16_t" >&5 if eval "test \"`echo '$''{'ac_cv_int16_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7157,7 +7057,7 @@ int16_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7161: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_int16_t=true else @@ -7179,12 +7079,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for int32_t""... $ac_c" 1>&6 -echo "configure:7183: checking for int32_t" >&5 +echo "configure:7083: checking for int32_t" >&5 if eval "test \"`echo '$''{'ac_cv_int32_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7192,7 +7092,7 @@ int32_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_int32_t=true else @@ -7214,12 +7114,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for int64_t""... $ac_c" 1>&6 -echo "configure:7218: checking for int64_t" >&5 +echo "configure:7118: checking for int64_t" >&5 if eval "test \"`echo '$''{'ac_cv_int64_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7227,7 +7127,7 @@ int64_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_int64_t=true else @@ -7249,12 +7149,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for int64""... $ac_c" 1>&6 -echo "configure:7253: checking for int64" >&5 +echo "configure:7153: checking for int64" >&5 if eval "test \"`echo '$''{'ac_cv_int64'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7262,7 +7162,7 @@ int64 foo = 0; ; return 0; } EOF -if { (eval echo configure:7266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_int64=true else @@ -7284,12 +7184,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for uint""... $ac_c" 1>&6 -echo "configure:7288: checking for uint" >&5 +echo "configure:7188: checking for uint" >&5 if eval "test \"`echo '$''{'ac_cv_uint'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7297,7 +7197,7 @@ uint foo = 0; ; return 0; } EOF -if { (eval echo configure:7301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_uint=true else @@ -7319,12 +7219,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for uint_t""... $ac_c" 1>&6 -echo "configure:7323: checking for uint_t" >&5 +echo "configure:7223: checking for uint_t" >&5 if eval "test \"`echo '$''{'ac_cv_uint_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7332,7 +7232,7 @@ uint_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7336: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_uint_t=true else @@ -7354,12 +7254,12 @@ echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for uint16_t""... $ac_c" 1>&6 -echo "configure:7358: checking for uint16_t" >&5 +echo "configure:7258: checking for uint16_t" >&5 if eval "test \"`echo '$''{'ac_cv_uint16_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -7367,7 +7267,7 @@ uint16_t foo = 0; ; return 0; } EOF -if { (eval echo configure:7371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_uint16_t=true else @@ -7398,12 +7298,12 @@ echo $ac_n "checking for uname.domainname""... $ac_c" 1>&6 -echo "configure:7402: checking for uname.domainname" >&5 +echo "configure:7302: checking for uname.domainname" >&5 if eval "test \"`echo '$''{'ac_cv_have_uname_domainname_field'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -7411,7 +7311,7 @@ (void)uname(res); if (res != 0) { domain = res->domainname; } ; return 0; } EOF -if { (eval echo configure:7415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_uname_domainname_field=true else @@ -7435,12 +7335,12 @@ fi echo $ac_n "checking for uname.__domainname""... $ac_c" 1>&6 -echo "configure:7439: checking for uname.__domainname" >&5 +echo "configure:7339: checking for uname.__domainname" >&5 if eval "test \"`echo '$''{'ac_cv_have_uname_us_domainname_field'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -7448,7 +7348,7 @@ (void)uname(res); if (res != 0) { domain = res->__domainname; } ; return 0; } EOF -if { (eval echo configure:7452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_have_uname_us_domainname_field=true else @@ -7481,7 +7381,7 @@ echo $ac_n "checking for usable wchar_t (2 bytes, unsigned)""... $ac_c" 1>&6 -echo "configure:7485: checking for usable wchar_t (2 bytes, unsigned)" >&5 +echo "configure:7385: checking for usable wchar_t (2 bytes, unsigned)" >&5 if eval "test \"`echo '$''{'ac_cv_have_usable_wchar'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7489,14 +7389,14 @@ ac_cv_have_usable_wchar="maybe" else cat > conftest.$ac_ext < int main () { return (sizeof(wchar_t) != 2) || (wchar_t)-1 < (wchar_t) 0 ; } EOF -if { (eval echo configure:7500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_have_usable_wchar="yes" else @@ -7531,7 +7431,7 @@ CXXFLAGS="$CXXFLAGS -fshort-wchar" echo $ac_n "checking for compiler -fshort-wchar option""... $ac_c" 1>&6 -echo "configure:7535: checking for compiler -fshort-wchar option" >&5 +echo "configure:7435: checking for compiler -fshort-wchar option" >&5 if eval "test \"`echo '$''{'ac_cv_have_usable_wchar_option'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7539,14 +7439,17 @@ ac_cv_have_usable_wchar_option="maybe" else cat > conftest.$ac_ext < int main () { return (sizeof(wchar_t) != 2) || (wchar_t)-1 < (wchar_t) 0 ; } EOF -if { (eval echo configure:7550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_have_usable_wchar_option="yes" else @@ -7582,7 +7485,7 @@ if test "$GNU_CC"; then echo $ac_n "checking for visibility(hidden) attribute""... $ac_c" 1>&6 -echo "configure:7586: checking for visibility(hidden) attribute" >&5 +echo "configure:7489: checking for visibility(hidden) attribute" >&5 if eval "test \"`echo '$''{'ac_cv_visibility_hidden'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7606,7 +7509,7 @@ EOF echo $ac_n "checking for visibility pragma support""... $ac_c" 1>&6 -echo "configure:7610: checking for visibility pragma support" >&5 +echo "configure:7513: checking for visibility pragma support" >&5 if eval "test \"`echo '$''{'ac_cv_visibility_pragma'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7648,12 +7551,12 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:7652: checking for $ac_hdr that defines DIR" >&5 +echo "configure:7555: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -7661,7 +7564,7 @@ DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:7665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7568: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -7686,7 +7589,7 @@ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:7690: checking for opendir in -ldir" >&5 +echo "configure:7593: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7694,7 +7597,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7727,7 +7630,7 @@ else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:7731: checking for opendir in -lx" >&5 +echo "configure:7634: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7735,7 +7638,7 @@ ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7778,17 +7681,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7782: checking for $ac_hdr" >&5 +echo "configure:7685: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7792: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7818,17 +7721,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7822: checking for $ac_hdr" >&5 +echo "configure:7725: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7858,17 +7761,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7862: checking for $ac_hdr" >&5 +echo "configure:7765: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7898,17 +7801,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7902: checking for $ac_hdr" >&5 +echo "configure:7805: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7912: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7938,17 +7841,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7942: checking for $ac_hdr" >&5 +echo "configure:7845: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7855: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7979,17 +7882,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7983: checking for $ac_hdr" >&5 +echo "configure:7886: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7896: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8020,17 +7923,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8024: checking for $ac_hdr" >&5 +echo "configure:7927: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8067,17 +7970,17 @@ NEW_H=new.h ac_safe=`echo "new" | sed 'y%./+-%__p_%'` echo $ac_n "checking for new""... $ac_c" 1>&6 -echo "configure:8071: checking for new" >&5 +echo "configure:7974: checking for new" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8118,17 +8021,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8122: checking for $ac_hdr" >&5 +echo "configure:8025: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8162,7 +8065,7 @@ ;; *) echo $ac_n "checking for gethostbyname_r in -lc_r""... $ac_c" 1>&6 -echo "configure:8166: checking for gethostbyname_r in -lc_r" >&5 +echo "configure:8069: checking for gethostbyname_r in -lc_r" >&5 ac_lib_var=`echo c_r'_'gethostbyname_r | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8170,7 +8073,7 @@ ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8211,7 +8114,7 @@ ;; esac echo $ac_n "checking for atan in -lm""... $ac_c" 1>&6 -echo "configure:8215: checking for atan in -lm" >&5 +echo "configure:8118: checking for atan in -lm" >&5 ac_lib_var=`echo m'_'atan | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8219,7 +8122,7 @@ ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8264,7 +8167,7 @@ ;; *) echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:8268: checking for dlopen in -ldl" >&5 +echo "configure:8171: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8272,7 +8175,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8300,17 +8203,17 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:8304: checking for dlfcn.h" >&5 +echo "configure:8207: checking for dlfcn.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8314: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8217: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8346,7 +8249,7 @@ case $target in *-aix*) echo $ac_n "checking for demangle in -lC_r""... $ac_c" 1>&6 -echo "configure:8350: checking for demangle in -lC_r" >&5 +echo "configure:8253: checking for demangle in -lC_r" >&5 ac_lib_var=`echo C_r'_'demangle | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8354,7 +8257,7 @@ ac_save_LIBS="$LIBS" LIBS="-lC_r $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8395,7 +8298,7 @@ ;; *) echo $ac_n "checking for demangle in -lC""... $ac_c" 1>&6 -echo "configure:8399: checking for demangle in -lC" >&5 +echo "configure:8302: checking for demangle in -lC" >&5 ac_lib_var=`echo C'_'demangle | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8403,7 +8306,7 @@ ac_save_LIBS="$LIBS" LIBS="-lC $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8445,7 +8348,7 @@ esac fi echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:8449: checking for socket in -lsocket" >&5 +echo "configure:8352: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8453,7 +8356,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8509,7 +8412,7 @@ _SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$XLDFLAGS $LDFLAGS" echo $ac_n "checking for XDrawLines in -lX11""... $ac_c" 1>&6 -echo "configure:8513: checking for XDrawLines in -lX11" >&5 +echo "configure:8416: checking for XDrawLines in -lX11" >&5 ac_lib_var=`echo X11'_'XDrawLines | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8517,7 +8420,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8550,7 +8453,7 @@ fi echo $ac_n "checking for XextAddDisplay in -lXext""... $ac_c" 1>&6 -echo "configure:8554: checking for XextAddDisplay in -lXext" >&5 +echo "configure:8457: checking for XextAddDisplay in -lXext" >&5 ac_lib_var=`echo Xext'_'XextAddDisplay | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8558,7 +8461,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8593,7 +8496,7 @@ echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6 -echo "configure:8597: checking for XtFree in -lXt" >&5 +echo "configure:8500: checking for XtFree in -lXt" >&5 ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8601,7 +8504,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8633,7 +8536,7 @@ unset ac_cv_lib_Xt_XtFree echo $ac_n "checking for IceFlush in -lICE""... $ac_c" 1>&6 -echo "configure:8637: checking for IceFlush in -lICE" >&5 +echo "configure:8540: checking for IceFlush in -lICE" >&5 ac_lib_var=`echo ICE'_'IceFlush | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8641,7 +8544,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $XT_LIBS $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8673,7 +8576,7 @@ fi echo $ac_n "checking for SmcCloseConnection in -lSM""... $ac_c" 1>&6 -echo "configure:8677: checking for SmcCloseConnection in -lSM" >&5 +echo "configure:8580: checking for SmcCloseConnection in -lSM" >&5 ac_lib_var=`echo SM'_'SmcCloseConnection | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8681,7 +8584,7 @@ ac_save_LIBS="$LIBS" LIBS="-lSM $XT_LIBS $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8713,7 +8616,7 @@ fi echo $ac_n "checking for XtFree in -lXt""... $ac_c" 1>&6 -echo "configure:8717: checking for XtFree in -lXt" >&5 +echo "configure:8620: checking for XtFree in -lXt" >&5 ac_lib_var=`echo Xt'_'XtFree | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8721,7 +8624,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $X_PRE_LIBS $XT_LIBS $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8766,7 +8669,7 @@ esac echo $ac_n "checking for XineramaIsActive in -lXinerama""... $ac_c" 1>&6 -echo "configure:8770: checking for XineramaIsActive in -lXinerama" >&5 +echo "configure:8673: checking for XineramaIsActive in -lXinerama" >&5 ac_lib_var=`echo Xinerama'_'XineramaIsActive | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8774,7 +8677,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXinerama $XLIBS $XEXT_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8807,17 +8710,17 @@ ac_safe=`echo "X11/extensions/Xinerama.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/Xinerama.h""... $ac_c" 1>&6 -echo "configure:8811: checking for X11/extensions/Xinerama.h" >&5 +echo "configure:8714: checking for X11/extensions/Xinerama.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8840,7 +8743,7 @@ echo $ac_n "checking for XShmCreateImage in -lXext""... $ac_c" 1>&6 -echo "configure:8844: checking for XShmCreateImage in -lXext" >&5 +echo "configure:8747: checking for XShmCreateImage in -lXext" >&5 ac_lib_var=`echo Xext'_'XShmCreateImage | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8848,7 +8751,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $XLIBS $XEXT_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8881,17 +8784,17 @@ ac_safe=`echo "X11/extensions/XShm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XShm.h""... $ac_c" 1>&6 -echo "configure:8885: checking for X11/extensions/XShm.h" >&5 +echo "configure:8788: checking for X11/extensions/XShm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8921,7 +8824,7 @@ fi echo $ac_n "checking for XieFloGeometry in -lXIE""... $ac_c" 1>&6 -echo "configure:8925: checking for XieFloGeometry in -lXIE" >&5 +echo "configure:8828: checking for XieFloGeometry in -lXIE" >&5 ac_lib_var=`echo XIE'_'XieFloGeometry | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8929,7 +8832,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXIE $XLIBS $XEXT_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8962,17 +8865,17 @@ ac_safe=`echo "X11/extensions/XIElib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/XIElib.h""... $ac_c" 1>&6 -echo "configure:8966: checking for X11/extensions/XIElib.h" >&5 +echo "configure:8869: checking for X11/extensions/XIElib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9046,7 +8949,7 @@ # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:9050: checking for $ac_word" >&5 +echo "configure:8953: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_FT2_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9082,7 +8985,7 @@ min_ft_version=6.1.0 echo $ac_n "checking for FreeType - version >= $min_ft_version""... $ac_c" 1>&6 -echo "configure:9086: checking for FreeType - version >= $min_ft_version" >&5 +echo "configure:8989: checking for FreeType - version >= $min_ft_version" >&5 no_ft="" if test "$FT2_CONFIG" = "no" ; then no_ft=yes @@ -9130,7 +9033,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -9156,7 +9059,7 @@ } EOF -if { (eval echo configure:9160: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -9208,7 +9111,7 @@ echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6 -echo "configure:9212: checking for pthread_create in -lpthreads" >&5 +echo "configure:9115: checking for pthread_create in -lpthreads" >&5 echo " #include void *foo(void *v) { int a = 1; } @@ -9230,7 +9133,7 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -echo "configure:9234: checking for pthread_create in -lpthread" >&5 +echo "configure:9137: checking for pthread_create in -lpthread" >&5 echo " #include void *foo(void *v) { int a = 1; } @@ -9252,7 +9155,7 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 -echo "configure:9256: checking for pthread_create in -lc_r" >&5 +echo "configure:9159: checking for pthread_create in -lc_r" >&5 echo " #include void *foo(void *v) { int a = 1; } @@ -9274,7 +9177,7 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 -echo "configure:9278: checking for pthread_create in -lc" >&5 +echo "configure:9181: checking for pthread_create in -lc" >&5 echo " #include void *foo(void *v) { int a = 1; } @@ -9330,7 +9233,7 @@ rm -f conftest* ac_cv_have_dash_pthread=no echo $ac_n "checking whether ${CC-cc} accepts -pthread""... $ac_c" 1>&6 -echo "configure:9334: checking whether ${CC-cc} accepts -pthread" >&5 +echo "configure:9237: checking whether ${CC-cc} accepts -pthread" >&5 echo 'int main() { return 0; }' | cat > conftest.c ${CC-cc} -pthread -o conftest conftest.c > conftest.out 2>&1 if test $? -eq 0; then @@ -9353,7 +9256,7 @@ ac_cv_have_dash_pthreads=no if test "$ac_cv_have_dash_pthread" = "no"; then echo $ac_n "checking whether ${CC-cc} accepts -pthreads""... $ac_c" 1>&6 -echo "configure:9357: checking whether ${CC-cc} accepts -pthreads" >&5 +echo "configure:9260: checking whether ${CC-cc} accepts -pthreads" >&5 echo 'int main() { return 0; }' | cat > conftest.c ${CC-cc} -pthreads -o conftest conftest.c > conftest.out 2>&1 if test $? -eq 0; then @@ -9475,7 +9378,7 @@ echo $ac_n "checking whether mmap() sees write()s""... $ac_c" 1>&6 -echo "configure:9479: checking whether mmap() sees write()s" >&5 +echo "configure:9382: checking whether mmap() sees write()s" >&5 mmap_test_prog=' @@ -9514,11 +9417,11 @@ result="yes" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then result="yes" else @@ -9543,13 +9446,13 @@ if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:9547: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:9450: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -9567,7 +9470,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -9589,7 +9492,7 @@ fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:9593: checking for 8-bit clean memcmp" >&5 +echo "configure:9496: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -9597,7 +9500,7 @@ ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -9627,12 +9530,12 @@ for ac_func in random strerror lchown fchmod snprintf statvfs memmove rint stat64 lstat64 do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9631: checking for $ac_func" >&5 +echo "configure:9534: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9682,12 +9585,12 @@ for ac_func in flockfile getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9686: checking for $ac_func" >&5 +echo "configure:9589: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9739,12 +9642,12 @@ for ac_func in localtime_r strtok_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:9743: checking for $ac_func" >&5 +echo "configure:9646: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -9803,19 +9706,19 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for wcrtomb""... $ac_c" 1>&6 -echo "configure:9807: checking for wcrtomb" >&5 +echo "configure:9710: checking for wcrtomb" >&5 if eval "test \"`echo '$''{'ac_cv_have_wcrtomb'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { mbstate_t ps={0};wcrtomb(0,'f',&ps); ; return 0; } EOF -if { (eval echo configure:9819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_have_wcrtomb="yes" else @@ -9835,19 +9738,19 @@ fi echo $ac_n "checking for mbrtowc""... $ac_c" 1>&6 -echo "configure:9839: checking for mbrtowc" >&5 +echo "configure:9742: checking for mbrtowc" >&5 if eval "test \"`echo '$''{'ac_cv_have_mbrtowc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { mbstate_t ps={0};mbrtowc(0,0,0,&ps); ; return 0; } EOF -if { (eval echo configure:9851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_have_mbrtowc="yes" else @@ -9876,12 +9779,12 @@ fi echo $ac_n "checking for res_ninit()""... $ac_c" 1>&6 -echo "configure:9880: checking for res_ninit()" >&5 +echo "configure:9783: checking for res_ninit()" >&5 if eval "test \"`echo '$''{'ac_cv_func_res_ninit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_res_ninit=yes else @@ -9923,12 +9826,12 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for gnu_get_libc_version()""... $ac_c" 1>&6 -echo "configure:9927: checking for gnu_get_libc_version()" >&5 +echo "configure:9830: checking for gnu_get_libc_version()" >&5 if eval "test \"`echo '$''{'ac_cv_func_gnu_get_libc_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_gnu_get_libc_version=yes else @@ -9968,7 +9871,7 @@ *) echo $ac_n "checking for iconv in -lc""... $ac_c" 1>&6 -echo "configure:9972: checking for iconv in -lc" >&5 +echo "configure:9875: checking for iconv in -lc" >&5 ac_lib_var=`echo c'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -9976,7 +9879,7 @@ ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10009,7 +9912,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 -echo "configure:10013: checking for iconv in -liconv" >&5 +echo "configure:9916: checking for iconv in -liconv" >&5 ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -10017,7 +9920,7 @@ ac_save_LIBS="$LIBS" LIBS="-liconv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10050,7 +9953,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for libiconv in -liconv""... $ac_c" 1>&6 -echo "configure:10054: checking for libiconv in -liconv" >&5 +echo "configure:9957: checking for libiconv in -liconv" >&5 ac_lib_var=`echo iconv'_'libiconv | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -10058,7 +9961,7 @@ ac_save_LIBS="$LIBS" LIBS="-liconv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10099,12 +10002,12 @@ _SAVE_LIBS=$LIBS LIBS="$LIBS $_ICONV_LIBS" echo $ac_n "checking for iconv()""... $ac_c" 1>&6 -echo "configure:10103: checking for iconv()" >&5 +echo "configure:10006: checking for iconv()" >&5 if eval "test \"`echo '$''{'ac_cv_func_iconv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -10118,7 +10021,7 @@ ; return 0; } EOF -if { (eval echo configure:10122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_iconv=yes else @@ -10142,12 +10045,12 @@ LIBXUL_LIBS="$LIBXUL_LIBS $_ICONV_LIBS" LIBICONV="$_ICONV_LIBS" echo $ac_n "checking for iconv() with const input""... $ac_c" 1>&6 -echo "configure:10146: checking for iconv() with const input" >&5 +echo "configure:10049: checking for iconv() with const input" >&5 if eval "test \"`echo '$''{'ac_cv_func_const_iconv'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -10162,7 +10065,7 @@ ; return 0; } EOF -if { (eval echo configure:10166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_func_const_iconv=yes else @@ -10191,19 +10094,19 @@ echo $ac_n "checking for nl_langinfo and CODESET""... $ac_c" 1>&6 -echo "configure:10195: checking for nl_langinfo and CODESET" >&5 +echo "configure:10098: checking for nl_langinfo and CODESET" >&5 if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char* cs = nl_langinfo(CODESET); ; return 0; } EOF -if { (eval echo configure:10207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_langinfo_codeset=yes else @@ -10235,7 +10138,7 @@ echo $ac_n "checking for an implementation of va_copy()""... $ac_c" 1>&6 -echo "configure:10239: checking for an implementation of va_copy()" >&5 +echo "configure:10142: checking for an implementation of va_copy()" >&5 if eval "test \"`echo '$''{'ac_cv_va_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10245,7 +10148,7 @@ else cat > conftest.$ac_ext < @@ -10259,7 +10162,7 @@ } int main() { f (0, 42); return 0; } EOF -if { (eval echo configure:10263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_va_copy=yes else @@ -10276,7 +10179,7 @@ echo "$ac_t""$ac_cv_va_copy" 1>&6 echo $ac_n "checking for an implementation of __va_copy()""... $ac_c" 1>&6 -echo "configure:10280: checking for an implementation of __va_copy()" >&5 +echo "configure:10183: checking for an implementation of __va_copy()" >&5 if eval "test \"`echo '$''{'ac_cv___va_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10286,7 +10189,7 @@ else cat > conftest.$ac_ext < @@ -10300,7 +10203,7 @@ } int main() { f (0, 42); return 0; } EOF -if { (eval echo configure:10304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv___va_copy=yes else @@ -10317,7 +10220,7 @@ echo "$ac_t""$ac_cv___va_copy" 1>&6 echo $ac_n "checking whether va_lists can be copied by value""... $ac_c" 1>&6 -echo "configure:10321: checking whether va_lists can be copied by value" >&5 +echo "configure:10224: checking whether va_lists can be copied by value" >&5 if eval "test \"`echo '$''{'ac_cv_va_val_copy'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10327,7 +10230,7 @@ else cat > conftest.$ac_ext < @@ -10341,7 +10244,7 @@ } int main() { f (0, 42); return 0; } EOF -if { (eval echo configure:10345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_va_val_copy=yes else @@ -10440,7 +10343,7 @@ if test "$GNU_CXX"; then echo $ac_n "checking for C++ exceptions flag""... $ac_c" 1>&6 -echo "configure:10444: checking for C++ exceptions flag" >&5 +echo "configure:10347: checking for C++ exceptions flag" >&5 if eval "test \"`echo '$''{'ac_cv_cxx_exceptions_flags'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -10475,12 +10378,12 @@ HAVE_GCC3_ABI= if test "$GNU_CC"; then echo $ac_n "checking for gcc 3.0 ABI""... $ac_c" 1>&6 -echo "configure:10479: checking for gcc 3.0 ABI" >&5 +echo "configure:10382: checking for gcc 3.0 ABI" >&5 if eval "test \"`echo '$''{'ac_cv_gcc_three_abi'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_gcc_three_abi="yes" else @@ -10517,12 +10420,12 @@ echo $ac_n "checking for C++ \"explicit\" keyword""... $ac_c" 1>&6 -echo "configure:10521: checking for C++ \"explicit\" keyword" >&5 +echo "configure:10424: checking for C++ \"explicit\" keyword" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_explicit'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_explicit=yes else @@ -10553,12 +10456,12 @@ fi echo $ac_n "checking for C++ \"typename\" keyword""... $ac_c" 1>&6 -echo "configure:10557: checking for C++ \"typename\" keyword" >&5 +echo "configure:10460: checking for C++ \"typename\" keyword" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_typename'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_typename=yes else @@ -10598,12 +10501,12 @@ fi echo $ac_n "checking for modern C++ template specialization syntax support""... $ac_c" 1>&6 -echo "configure:10602: checking for modern C++ template specialization syntax support" >&5 +echo "configure:10505: checking for modern C++ template specialization syntax support" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_modern_specialize_template_syntax'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct X { int a; }; class Y {}; @@ -10613,7 +10516,7 @@ X y_x; ; return 0; } EOF -if { (eval echo configure:10617: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_modern_specialize_template_syntax=yes else @@ -10635,12 +10538,12 @@ echo $ac_n "checking whether partial template specialization works""... $ac_c" 1>&6 -echo "configure:10639: checking whether partial template specialization works" >&5 +echo "configure:10542: checking whether partial template specialization works" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_partial_specialization'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < class Foo {}; template class Foo {}; @@ -10648,7 +10551,7 @@ return 0; ; return 0; } EOF -if { (eval echo configure:10652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10555: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_partial_specialization=yes else @@ -10669,12 +10572,12 @@ fi echo $ac_n "checking whether operators must be re-defined for templates derived from templates""... $ac_c" 1>&6 -echo "configure:10673: checking whether operators must be re-defined for templates derived from templates" >&5 +echo "configure:10576: checking whether operators must be re-defined for templates derived from templates" >&5 if eval "test \"`echo '$''{'ac_cv_need_derived_template_operators'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < class Base { }; template @@ -10686,7 +10589,7 @@ return 0; ; return 0; } EOF -if { (eval echo configure:10690: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_need_derived_template_operators=no else @@ -10708,12 +10611,12 @@ echo $ac_n "checking whether we need to cast a derived template to pass as its base class""... $ac_c" 1>&6 -echo "configure:10712: checking whether we need to cast a derived template to pass as its base class" >&5 +echo "configure:10615: checking whether we need to cast a derived template to pass as its base class" >&5 if eval "test \"`echo '$''{'ac_cv_need_cpp_template_cast_to_base'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < class Base { }; template class Derived : public Base { }; @@ -10722,7 +10625,7 @@ Derived bar; return foo(bar); ; return 0; } EOF -if { (eval echo configure:10726: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10629: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_need_cpp_template_cast_to_base=no else @@ -10743,12 +10646,12 @@ fi echo $ac_n "checking whether the compiler can resolve const ambiguities for templates""... $ac_c" 1>&6 -echo "configure:10747: checking whether the compiler can resolve const ambiguities for templates" >&5 +echo "configure:10650: checking whether the compiler can resolve const ambiguities for templates" >&5 if eval "test \"`echo '$''{'ac_cv_can_resolve_const_ambiguity'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < class ptrClass { @@ -10769,7 +10672,7 @@ a(&i); ; return 0; } EOF -if { (eval echo configure:10773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_can_resolve_const_ambiguity=yes else @@ -10791,12 +10694,12 @@ echo $ac_n "checking whether the C++ \"using\" keyword can change access""... $ac_c" 1>&6 -echo "configure:10795: checking whether the C++ \"using\" keyword can change access" >&5 +echo "configure:10698: checking whether the C++ \"using\" keyword can change access" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_access_changing_using2'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_access_changing_using2=no else @@ -10843,12 +10746,12 @@ fi echo $ac_n "checking whether the C++ \"using\" keyword resolves ambiguity""... $ac_c" 1>&6 -echo "configure:10847: checking whether the C++ \"using\" keyword resolves ambiguity" >&5 +echo "configure:10750: checking whether the C++ \"using\" keyword resolves ambiguity" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_ambiguity_resolving_using'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_ambiguity_resolving_using=yes else @@ -10885,19 +10788,19 @@ fi echo $ac_n "checking for \"std::\" namespace""... $ac_c" 1>&6 -echo "configure:10889: checking for \"std::\" namespace" >&5 +echo "configure:10792: checking for \"std::\" namespace" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_namespace_std'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return std::min(0, 1); ; return 0; } EOF -if { (eval echo configure:10901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10804: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_namespace_std=yes else @@ -10918,12 +10821,12 @@ fi echo $ac_n "checking whether standard template operator!=() is ambiguous""... $ac_c" 1>&6 -echo "configure:10922: checking whether standard template operator!=() is ambiguous" >&5 +echo "configure:10825: checking whether standard template operator!=() is ambiguous" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_unambiguous_std_notequal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < struct T1 {}; @@ -10933,7 +10836,7 @@ T1 a,b; return a != b; ; return 0; } EOF -if { (eval echo configure:10937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10840: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_unambiguous_std_notequal=unambiguous else @@ -10955,12 +10858,12 @@ echo $ac_n "checking for C++ reinterpret_cast""... $ac_c" 1>&6 -echo "configure:10959: checking for C++ reinterpret_cast" >&5 +echo "configure:10862: checking for C++ reinterpret_cast" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_reinterpret_cast'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <(z); ; return 0; } EOF -if { (eval echo configure:10972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cpp_reinterpret_cast=yes else @@ -10989,7 +10892,7 @@ fi echo $ac_n "checking for C++ dynamic_cast to void*""... $ac_c" 1>&6 -echo "configure:10993: checking for C++ dynamic_cast to void*" >&5 +echo "configure:10896: checking for C++ dynamic_cast to void*" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_dynamic_cast_void_ptr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -10997,8 +10900,11 @@ ac_cv_cpp_dynamic_cast_void_ptr=no else cat > conftest.$ac_ext <(suby)))); } EOF -if { (eval echo configure:11017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:10923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_cpp_dynamic_cast_void_ptr=yes else @@ -11037,19 +10943,19 @@ echo $ac_n "checking whether C++ requires implementation of unused virtual methods""... $ac_c" 1>&6 -echo "configure:11041: checking whether C++ requires implementation of unused virtual methods" >&5 +echo "configure:10947: checking whether C++ requires implementation of unused virtual methods" >&5 if eval "test \"`echo '$''{'ac_cv_cpp_unused_required'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_cpp_unused_required=no else @@ -11072,12 +10978,12 @@ echo $ac_n "checking for trouble comparing to zero near std::operator!=()""... $ac_c" 1>&6 -echo "configure:11076: checking for trouble comparing to zero near std::operator!=()" >&5 +echo "configure:10982: checking for trouble comparing to zero near std::operator!=()" >&5 if eval "test \"`echo '$''{'ac_cv_trouble_comparing_to_zero'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < template class Foo {}; @@ -11088,7 +10994,7 @@ Foo f; return (0 != f); ; return 0; } EOF -if { (eval echo configure:11092: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:10998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_trouble_comparing_to_zero=no else @@ -11120,19 +11026,19 @@ echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:11124: checking for LC_MESSAGES" >&5 +echo "configure:11030: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'ac_cv_i18n_lc_messages'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { int category = LC_MESSAGES; ; return 0; } EOF -if { (eval echo configure:11136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_i18n_lc_messages=yes else @@ -11213,7 +11119,7 @@ # Extract the first word of "nspr-config", so it can be a program name with args. set dummy nspr-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:11217: checking for $ac_word" >&5 +echo "configure:11123: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_NSPR_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11248,7 +11154,7 @@ min_nspr_version=4.0.0 echo $ac_n "checking for NSPR - version >= $min_nspr_version (skipping)""... $ac_c" 1>&6 -echo "configure:11252: checking for NSPR - version >= $min_nspr_version (skipping)" >&5 +echo "configure:11158: checking for NSPR - version >= $min_nspr_version (skipping)" >&5 no_nspr="" if test "$NSPR_CONFIG" = "no"; then @@ -11318,7 +11224,7 @@ SYSTEM_JPEG= else echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6 -echo "configure:11322: checking for jpeg_destroy_compress in -ljpeg" >&5 +echo "configure:11228: checking for jpeg_destroy_compress in -ljpeg" >&5 ac_lib_var=`echo jpeg'_'jpeg_destroy_compress | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11326,7 +11232,7 @@ ac_save_LIBS="$LIBS" LIBS="-ljpeg $JPEG_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11366,7 +11272,7 @@ SYSTEM_JPEG= else cat > conftest.$ac_ext < #include @@ -11380,7 +11286,7 @@ } EOF -if { (eval echo configure:11384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then SYSTEM_JPEG=1 else @@ -11421,7 +11327,7 @@ SYSTEM_ZLIB= else echo $ac_n "checking for gzread in -lz""... $ac_c" 1>&6 -echo "configure:11425: checking for gzread in -lz" >&5 +echo "configure:11331: checking for gzread in -lz" >&5 ac_lib_var=`echo z'_'gzread | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11429,7 +11335,7 @@ ac_save_LIBS="$LIBS" LIBS="-lz $ZLIB_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11468,7 +11374,7 @@ SYSTEM_ZLIB= else cat > conftest.$ac_ext < @@ -11489,7 +11395,7 @@ } EOF -if { (eval echo configure:11493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then SYSTEM_ZLIB=1 else @@ -11532,7 +11438,7 @@ SYSTEM_PNG= else echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6 -echo "configure:11536: checking for png_get_valid in -lpng" >&5 +echo "configure:11442: checking for png_get_valid in -lpng" >&5 ac_lib_var=`echo png'_'png_get_valid | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -11540,7 +11446,7 @@ ac_save_LIBS="$LIBS" LIBS="-lpng $PNG_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11579,7 +11485,7 @@ SYSTEM_PNG= else cat > conftest.$ac_ext < #include @@ -11593,7 +11499,7 @@ } EOF -if { (eval echo configure:11597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then SYSTEM_PNG=1 else @@ -11888,7 +11794,7 @@ # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:11892: checking for $ac_word" >&5 +echo "configure:11798: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -11923,7 +11829,7 @@ min_gtk_version=$GTK_VERSION echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:11927: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:11833: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -11946,7 +11852,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -12024,7 +11930,7 @@ } EOF -if { (eval echo configure:12028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -12059,7 +11965,7 @@ CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -12069,7 +11975,7 @@ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:12073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -12121,7 +12027,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12125: checking for $ac_word" >&5 +echo "configure:12031: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12165,19 +12071,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for gtk+-2.0 >= 1.3.7""... $ac_c" 1>&6 -echo "configure:12169: checking for gtk+-2.0 >= 1.3.7" >&5 +echo "configure:12075: checking for gtk+-2.0 >= 1.3.7" >&5 if $PKG_CONFIG --exists "gtk+-2.0 >= 1.3.7" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_GTK2_CFLAGS""... $ac_c" 1>&6 -echo "configure:12176: checking MOZ_GTK2_CFLAGS" >&5 +echo "configure:12082: checking MOZ_GTK2_CFLAGS" >&5 MOZ_GTK2_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0 >= 1.3.7"` echo "$ac_t""$MOZ_GTK2_CFLAGS" 1>&6 echo $ac_n "checking MOZ_GTK2_LIBS""... $ac_c" 1>&6 -echo "configure:12181: checking MOZ_GTK2_LIBS" >&5 +echo "configure:12087: checking MOZ_GTK2_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_GTK2_LIBS="`$PKG_CONFIG --libs-only-L \"gtk+-2.0 >= 1.3.7\"` `$PKG_CONFIG --libs-only-l \"gtk+-2.0 >= 1.3.7\"`" @@ -12242,7 +12148,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12246: checking for $ac_word" >&5 +echo "configure:12152: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_MOC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12294,7 +12200,7 @@ cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking for main in -lqt""... $ac_c" 1>&6 -echo "configure:12298: checking for main in -lqt" >&5 +echo "configure:12204: checking for main in -lqt" >&5 ac_lib_var=`echo qt'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -12302,14 +12208,14 @@ ac_save_LIBS="$LIBS" LIBS="-lqt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12328,7 +12234,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for main in -lqt-mt""... $ac_c" 1>&6 -echo "configure:12332: checking for main in -lqt-mt" >&5 +echo "configure:12238: checking for main in -lqt-mt" >&5 ac_lib_var=`echo qt-mt'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -12336,14 +12242,14 @@ ac_save_LIBS="$LIBS" LIBS="-lqt-mt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12379,9 +12285,9 @@ LIBS="$LIBS $QT_LIBS" echo $ac_n "checking Qt - version >= $QT_VERSION""... $ac_c" 1>&6 -echo "configure:12383: checking Qt - version >= $QT_VERSION" >&5 +echo "configure:12289: checking Qt - version >= $QT_VERSION" >&5 cat > conftest.$ac_ext < int main() { @@ -12392,7 +12298,7 @@ ; return 0; } EOF -if { (eval echo configure:12396: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* result="yes" else @@ -12901,7 +12807,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12905: checking for $ac_word" >&5 +echo "configure:12811: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -12945,19 +12851,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for xft""... $ac_c" 1>&6 -echo "configure:12949: checking for xft" >&5 +echo "configure:12855: checking for xft" >&5 if $PKG_CONFIG --exists "xft" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_XFT_CFLAGS""... $ac_c" 1>&6 -echo "configure:12956: checking MOZ_XFT_CFLAGS" >&5 +echo "configure:12862: checking MOZ_XFT_CFLAGS" >&5 MOZ_XFT_CFLAGS=`$PKG_CONFIG --cflags "xft"` echo "$ac_t""$MOZ_XFT_CFLAGS" 1>&6 echo $ac_n "checking MOZ_XFT_LIBS""... $ac_c" 1>&6 -echo "configure:12961: checking MOZ_XFT_LIBS" >&5 +echo "configure:12867: checking MOZ_XFT_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_XFT_LIBS="`$PKG_CONFIG --libs-only-L \"xft\"` `$PKG_CONFIG --libs-only-l \"xft\"`" @@ -12992,7 +12898,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:12996: checking for $ac_word" >&5 +echo "configure:12902: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13036,19 +12942,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for pango >= 1.1.0""... $ac_c" 1>&6 -echo "configure:13040: checking for pango >= 1.1.0" >&5 +echo "configure:12946: checking for pango >= 1.1.0" >&5 if $PKG_CONFIG --exists "pango >= 1.1.0" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking _PANGOCHK_CFLAGS""... $ac_c" 1>&6 -echo "configure:13047: checking _PANGOCHK_CFLAGS" >&5 +echo "configure:12953: checking _PANGOCHK_CFLAGS" >&5 _PANGOCHK_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.1.0"` echo "$ac_t""$_PANGOCHK_CFLAGS" 1>&6 echo $ac_n "checking _PANGOCHK_LIBS""... $ac_c" 1>&6 -echo "configure:13052: checking _PANGOCHK_LIBS" >&5 +echo "configure:12958: checking _PANGOCHK_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic _PANGOCHK_LIBS="`$PKG_CONFIG --libs-only-L \"pango >= 1.1.0\"` `$PKG_CONFIG --libs-only-l \"pango >= 1.1.0\"`" @@ -13108,7 +13014,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13112: checking for $ac_word" >&5 +echo "configure:13018: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13152,19 +13058,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for pango >= 1.6.0 pangoft2 >= 1.6.0""... $ac_c" 1>&6 -echo "configure:13156: checking for pango >= 1.6.0 pangoft2 >= 1.6.0" >&5 +echo "configure:13062: checking for pango >= 1.6.0 pangoft2 >= 1.6.0" >&5 if $PKG_CONFIG --exists "pango >= 1.6.0 pangoft2 >= 1.6.0" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_PANGO_CFLAGS""... $ac_c" 1>&6 -echo "configure:13163: checking MOZ_PANGO_CFLAGS" >&5 +echo "configure:13069: checking MOZ_PANGO_CFLAGS" >&5 MOZ_PANGO_CFLAGS=`$PKG_CONFIG --cflags "pango >= 1.6.0 pangoft2 >= 1.6.0"` echo "$ac_t""$MOZ_PANGO_CFLAGS" 1>&6 echo $ac_n "checking MOZ_PANGO_LIBS""... $ac_c" 1>&6 -echo "configure:13168: checking MOZ_PANGO_LIBS" >&5 +echo "configure:13074: checking MOZ_PANGO_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_PANGO_LIBS="`$PKG_CONFIG --libs-only-L \"pango >= 1.6.0 pangoft2 >= 1.6.0\"` `$PKG_CONFIG --libs-only-l \"pango >= 1.6.0 pangoft2 >= 1.6.0\"`" @@ -13232,7 +13138,7 @@ _SAVE_LDFLAGS="$LDFLAGS" LDFLAGS="$XLDFLAGS $LDFLAGS" echo $ac_n "checking for XpGetPrinterList in -lXp""... $ac_c" 1>&6 -echo "configure:13236: checking for XpGetPrinterList in -lXp" >&5 +echo "configure:13142: checking for XpGetPrinterList in -lXp" >&5 ac_lib_var=`echo Xp'_'XpGetPrinterList | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -13240,7 +13146,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXp $XEXT_LIBS $XLIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13324,7 +13230,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13328: checking for $ac_word" >&5 +echo "configure:13234: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13368,19 +13274,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION""... $ac_c" 1>&6 -echo "configure:13372: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5 +echo "configure:13278: checking for gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" >&5 if $PKG_CONFIG --exists "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_GNOMEVFS_CFLAGS""... $ac_c" 1>&6 -echo "configure:13379: checking MOZ_GNOMEVFS_CFLAGS" >&5 +echo "configure:13285: checking MOZ_GNOMEVFS_CFLAGS" >&5 MOZ_GNOMEVFS_CFLAGS=`$PKG_CONFIG --cflags "gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION"` echo "$ac_t""$MOZ_GNOMEVFS_CFLAGS" 1>&6 echo $ac_n "checking MOZ_GNOMEVFS_LIBS""... $ac_c" 1>&6 -echo "configure:13384: checking MOZ_GNOMEVFS_LIBS" >&5 +echo "configure:13290: checking MOZ_GNOMEVFS_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_GNOMEVFS_LIBS="`$PKG_CONFIG --libs-only-L \"gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION\"` `$PKG_CONFIG --libs-only-l \"gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION\"`" @@ -13430,7 +13336,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13434: checking for $ac_word" >&5 +echo "configure:13340: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13474,19 +13380,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for gconf-2.0 >= $GCONF_VERSION""... $ac_c" 1>&6 -echo "configure:13478: checking for gconf-2.0 >= $GCONF_VERSION" >&5 +echo "configure:13384: checking for gconf-2.0 >= $GCONF_VERSION" >&5 if $PKG_CONFIG --exists "gconf-2.0 >= $GCONF_VERSION" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_GCONF_CFLAGS""... $ac_c" 1>&6 -echo "configure:13485: checking MOZ_GCONF_CFLAGS" >&5 +echo "configure:13391: checking MOZ_GCONF_CFLAGS" >&5 MOZ_GCONF_CFLAGS=`$PKG_CONFIG --cflags "gconf-2.0 >= $GCONF_VERSION"` echo "$ac_t""$MOZ_GCONF_CFLAGS" 1>&6 echo $ac_n "checking MOZ_GCONF_LIBS""... $ac_c" 1>&6 -echo "configure:13490: checking MOZ_GCONF_LIBS" >&5 +echo "configure:13396: checking MOZ_GCONF_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_GCONF_LIBS="`$PKG_CONFIG --libs-only-L \"gconf-2.0 >= $GCONF_VERSION\"` `$PKG_CONFIG --libs-only-l \"gconf-2.0 >= $GCONF_VERSION\"`" @@ -13532,7 +13438,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13536: checking for $ac_word" >&5 +echo "configure:13442: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13576,19 +13482,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for libgnome-2.0 >= $LIBGNOME_VERSION""... $ac_c" 1>&6 -echo "configure:13580: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5 +echo "configure:13486: checking for libgnome-2.0 >= $LIBGNOME_VERSION" >&5 if $PKG_CONFIG --exists "libgnome-2.0 >= $LIBGNOME_VERSION" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_LIBGNOME_CFLAGS""... $ac_c" 1>&6 -echo "configure:13587: checking MOZ_LIBGNOME_CFLAGS" >&5 +echo "configure:13493: checking MOZ_LIBGNOME_CFLAGS" >&5 MOZ_LIBGNOME_CFLAGS=`$PKG_CONFIG --cflags "libgnome-2.0 >= $LIBGNOME_VERSION"` echo "$ac_t""$MOZ_LIBGNOME_CFLAGS" 1>&6 echo $ac_n "checking MOZ_LIBGNOME_LIBS""... $ac_c" 1>&6 -echo "configure:13592: checking MOZ_LIBGNOME_LIBS" >&5 +echo "configure:13498: checking MOZ_LIBGNOME_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_LIBGNOME_LIBS="`$PKG_CONFIG --libs-only-L \"libgnome-2.0 >= $LIBGNOME_VERSION\"` `$PKG_CONFIG --libs-only-l \"libgnome-2.0 >= $LIBGNOME_VERSION\"`" @@ -13665,7 +13571,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13669: checking for $ac_word" >&5 +echo "configure:13575: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -13709,19 +13615,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for libgnomeui-2.0 >= $GNOMEUI_VERSION""... $ac_c" 1>&6 -echo "configure:13713: checking for libgnomeui-2.0 >= $GNOMEUI_VERSION" >&5 +echo "configure:13619: checking for libgnomeui-2.0 >= $GNOMEUI_VERSION" >&5 if $PKG_CONFIG --exists "libgnomeui-2.0 >= $GNOMEUI_VERSION" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking MOZ_GNOMEUI_CFLAGS""... $ac_c" 1>&6 -echo "configure:13720: checking MOZ_GNOMEUI_CFLAGS" >&5 +echo "configure:13626: checking MOZ_GNOMEUI_CFLAGS" >&5 MOZ_GNOMEUI_CFLAGS=`$PKG_CONFIG --cflags "libgnomeui-2.0 >= $GNOMEUI_VERSION"` echo "$ac_t""$MOZ_GNOMEUI_CFLAGS" 1>&6 echo $ac_n "checking MOZ_GNOMEUI_LIBS""... $ac_c" 1>&6 -echo "configure:13725: checking MOZ_GNOMEUI_LIBS" >&5 +echo "configure:13631: checking MOZ_GNOMEUI_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic MOZ_GNOMEUI_LIBS="`$PKG_CONFIG --libs-only-L \"libgnomeui-2.0 >= $GNOMEUI_VERSION\"` `$PKG_CONFIG --libs-only-l \"libgnomeui-2.0 >= $GNOMEUI_VERSION\"`" @@ -14201,7 +14107,7 @@ # Extract the first word of "javac", so it can be a program name with args. set dummy javac; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:14205: checking for $ac_word" >&5 +echo "configure:14111: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_JAVAC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -14237,7 +14143,7 @@ # Extract the first word of "jar", so it can be a program name with args. set dummy jar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:14241: checking for $ac_word" >&5 +echo "configure:14147: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_JAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -14390,7 +14296,7 @@ gdiplus) MOZ_SVG_RENDERER_GDIPLUS=1 echo $ac_n "checking for Gdiplus.h""... $ac_c" 1>&6 -echo "configure:14394: checking for Gdiplus.h" >&5 +echo "configure:14300: checking for Gdiplus.h" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -14400,7 +14306,7 @@ cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext < #include @@ -14409,7 +14315,7 @@ ; return 0; } EOF -if { (eval echo configure:14413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14319: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -14455,6 +14361,25 @@ fi +# Check whether --enable-smil or --disable-smil was given. +if test "${enable_smil+set}" = set; then + enableval="$enable_smil" + if test "$enableval" = "yes"; then + MOZ_SMIL=1 + elif test "$enableval" = "no"; then + MOZ_SMIL= + else + { echo "configure: error: Option, smil, does not take an argument ($enableval)." 1>&2; exit 1; } + fi +fi + +if test -n "$MOZ_SMIL"; then + cat >> confdefs.h <<\EOF +#define MOZ_SMIL 1 +EOF + +fi + if test "$TX_EXE"; then cat >> confdefs.h <<\EOF @@ -14509,13 +14434,13 @@ msvc*|mks*|cygwin*|mingw*|wince*) if test -n "$MOZ_UPDATER"; then echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:14513: checking for iconv" >&5 +echo "configure:14438: checking for iconv" >&5 for ac_prog in $HOST_ICONV "iconv" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:14519: checking for $ac_word" >&5 +echo "configure:14444: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HOST_ICONV'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -14790,18 +14715,18 @@ if test -n "$MOZ_DEBUG"; then echo $ac_n "checking for valid debug flags""... $ac_c" 1>&6 -echo "configure:14794: checking for valid debug flags" >&5 +echo "configure:14719: checking for valid debug flags" >&5 _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $MOZ_DEBUG_FLAGS" cat > conftest.$ac_ext < int main() { printf("Hello World\n"); ; return 0; } EOF -if { (eval echo configure:14805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14730: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _results=yes else @@ -14842,18 +14767,18 @@ if test "$COMPILE_ENVIRONMENT"; then if test -n "$MOZ_OPTIMIZE"; then echo $ac_n "checking for valid optimization flags""... $ac_c" 1>&6 -echo "configure:14846: checking for valid optimization flags" >&5 +echo "configure:14771: checking for valid optimization flags" >&5 _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $MOZ_OPTIMIZE_FLAGS" cat > conftest.$ac_ext < int main() { printf("Hello World\n"); ; return 0; } EOF -if { (eval echo configure:14857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _results=yes else @@ -15070,7 +14995,7 @@ if test -n "$_ENABLE_EFENCE"; then echo $ac_n "checking for malloc in -lefence""... $ac_c" 1>&6 -echo "configure:15074: checking for malloc in -lefence" >&5 +echo "configure:14999: checking for malloc in -lefence" >&5 ac_lib_var=`echo efence'_'malloc | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -15078,7 +15003,7 @@ ac_save_LIBS="$LIBS" LIBS="-lefence $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -15190,12 +15115,12 @@ for ac_func in __builtin_vec_new __builtin_vec_delete __builtin_new __builtin_delete __pure_virtual do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15194: checking for $ac_func" >&5 +echo "configure:15119: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -15464,12 +15389,12 @@ for ac_func in __cxa_demangle do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15468: checking for $ac_func" >&5 +echo "configure:15393: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -15633,7 +15558,7 @@ # Compiler Options echo $ac_n "checking for gcc -pipe support""... $ac_c" 1>&6 -echo "configure:15637: checking for gcc -pipe support" >&5 +echo "configure:15562: checking for gcc -pipe support" >&5 if test -n "$GNU_CC" && test -n "$GNU_CXX" && test -n "$GNU_AS"; then echo '#include ' > dummy-hello.c echo 'int main() { printf("Hello World\n"); exit(0); }' >> dummy-hello.c @@ -15648,14 +15573,14 @@ _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -pipe" cat > conftest.$ac_ext < int main() { printf("Hello World\n"); ; return 0; } EOF -if { (eval echo configure:15659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _res_gcc_pipe="yes" else @@ -15697,16 +15622,16 @@ _SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS ${_COMPILER_PREFIX}-Wno-long-long" echo $ac_n "checking whether compiler supports -Wno-long-long""... $ac_c" 1>&6 -echo "configure:15701: checking whether compiler supports -Wno-long-long" >&5 +echo "configure:15626: checking whether compiler supports -Wno-long-long" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15635: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* _WARNINGS_CFLAGS="${_WARNINGS_CFLAGS} ${_COMPILER_PREFIX}-Wno-long-long" _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-Wno-long-long" @@ -15727,16 +15652,16 @@ CFLAGS="$CFLAGS -fprofile-generate" echo $ac_n "checking whether C compiler supports -fprofile-generate""... $ac_c" 1>&6 -echo "configure:15731: checking whether C compiler supports -fprofile-generate" >&5 +echo "configure:15656: checking whether C compiler supports -fprofile-generate" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15665: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* PROFILE_GEN_CFLAGS="-fprofile-generate" result="yes" @@ -15754,16 +15679,16 @@ else CFLAGS="$_SAVE_CFLAGS -fprofile-arcs" echo $ac_n "checking whether C compiler supports -fprofile-arcs""... $ac_c" 1>&6 -echo "configure:15758: checking whether C compiler supports -fprofile-arcs" >&5 +echo "configure:15683: checking whether C compiler supports -fprofile-arcs" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15692: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* PROFILE_GEN_CFLAGS="-fprofile-arcs" result="yes" @@ -15809,18 +15734,21 @@ _SAVE_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS} ${_COMPILER_PREFIX}-pedantic" echo $ac_n "checking whether C++ compiler has -pedantic long long bug""... $ac_c" 1>&6 -echo "configure:15813: checking whether C++ compiler has -pedantic long long bug" >&5 +echo "configure:15738: checking whether C++ compiler has -pedantic long long bug" >&5 if test "$cross_compiling" = yes; then result="maybe" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then result="no" else @@ -15850,13 +15778,16 @@ fi echo $ac_n "checking for correct temporary object destruction order""... $ac_c" 1>&6 -echo "configure:15854: checking for correct temporary object destruction order" >&5 +echo "configure:15782: checking for correct temporary object destruction order" >&5 if test "$cross_compiling" = yes; then result="maybe" else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then result="yes" else @@ -15896,12 +15827,12 @@ _SAVE_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS ${_WARNINGS_CXXFLAGS}" echo $ac_n "checking for correct overload resolution with const and templates""... $ac_c" 1>&6 -echo "configure:15900: checking for correct overload resolution with const and templates" >&5 +echo "configure:15831: checking for correct overload resolution with const and templates" >&5 if eval "test \"`echo '$''{'ac_nscap_nonconst_opeq_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -15931,7 +15862,7 @@ ; return 0; } EOF -if { (eval echo configure:15935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:15866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_nscap_nonconst_opeq_bug="no" else @@ -16194,7 +16125,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:16198: checking for $ac_word" >&5 +echo "configure:16129: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -16238,19 +16169,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6 -echo "configure:16242: checking for libIDL-2.0 >= 0.8.0" >&5 +echo "configure:16173: checking for libIDL-2.0 >= 0.8.0" >&5 if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6 -echo "configure:16249: checking LIBIDL_CFLAGS" >&5 +echo "configure:16180: checking LIBIDL_CFLAGS" >&5 LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"` echo "$ac_t""$LIBIDL_CFLAGS" 1>&6 echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6 -echo "configure:16254: checking LIBIDL_LIBS" >&5 +echo "configure:16185: checking LIBIDL_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic LIBIDL_LIBS="`$PKG_CONFIG --libs-only-L \"libIDL-2.0 >= 0.8.0\"` `$PKG_CONFIG --libs-only-l \"libIDL-2.0 >= 0.8.0\"`" @@ -16373,7 +16304,7 @@ # Extract the first word of "glib-config", so it can be a program name with args. set dummy glib-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:16377: checking for $ac_word" >&5 +echo "configure:16308: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -16408,7 +16339,7 @@ min_glib_version=1.2.0 echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6 -echo "configure:16412: checking for GLIB - version >= $min_glib_version" >&5 +echo "configure:16343: checking for GLIB - version >= $min_glib_version" >&5 no_glib="" if test "$GLIB_CONFIG" = "no" ; then no_glib=yes @@ -16431,7 +16362,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -16507,7 +16438,7 @@ } EOF -if { (eval echo configure:16511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:16442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -16541,7 +16472,7 @@ CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat > conftest.$ac_ext < @@ -16551,7 +16482,7 @@ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } EOF -if { (eval echo configure:16555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" @@ -16595,7 +16526,7 @@ # Extract the first word of "libIDL-config", so it can be a program name with args. set dummy libIDL-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:16599: checking for $ac_word" >&5 +echo "configure:16530: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -16630,7 +16561,7 @@ min_libIDL_version=$LIBIDL_VERSION echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6 -echo "configure:16634: checking for libIDL - version >= $min_libIDL_version" >&5 +echo "configure:16565: checking for libIDL - version >= $min_libIDL_version" >&5 no_libIDL="" if test "$LIBIDL_CONFIG" = "no" ; then no_libIDL=yes @@ -16657,7 +16588,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -16743,7 +16674,7 @@ } EOF -if { (eval echo configure:16747: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:16678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -16777,7 +16708,7 @@ CFLAGS="$CFLAGS $LIBIDL_CFLAGS" LIBS="$LIBS $LIBIDL_LIBS" cat > conftest.$ac_ext < @@ -16788,7 +16719,7 @@ return IDL_get_libver_string ? 1 : 0; ; return 0; } EOF -if { (eval echo configure:16792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding libIDL or finding the wrong" @@ -16916,7 +16847,7 @@ # Extract the first word of "glib-config", so it can be a program name with args. set dummy glib-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:16920: checking for $ac_word" >&5 +echo "configure:16851: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -16951,7 +16882,7 @@ min_glib_version=1.2.0 echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6 -echo "configure:16955: checking for GLIB - version >= $min_glib_version" >&5 +echo "configure:16886: checking for GLIB - version >= $min_glib_version" >&5 no_glib="" if test "$GLIB_CONFIG" = "no" ; then no_glib=yes @@ -16974,7 +16905,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -17050,7 +16981,7 @@ } EOF -if { (eval echo configure:17054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:16985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -17084,7 +17015,7 @@ CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat > conftest.$ac_ext < @@ -17094,7 +17025,7 @@ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } EOF -if { (eval echo configure:17098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" @@ -17138,7 +17069,7 @@ # Extract the first word of "libIDL-config", so it can be a program name with args. set dummy libIDL-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:17142: checking for $ac_word" >&5 +echo "configure:17073: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_LIBIDL_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17173,7 +17104,7 @@ min_libIDL_version=$LIBIDL_VERSION echo $ac_n "checking for libIDL - version >= $min_libIDL_version""... $ac_c" 1>&6 -echo "configure:17177: checking for libIDL - version >= $min_libIDL_version" >&5 +echo "configure:17108: checking for libIDL - version >= $min_libIDL_version" >&5 no_libIDL="" if test "$LIBIDL_CONFIG" = "no" ; then no_libIDL=yes @@ -17200,7 +17131,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -17286,7 +17217,7 @@ } EOF -if { (eval echo configure:17290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:17221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -17320,7 +17251,7 @@ CFLAGS="$CFLAGS $LIBIDL_CFLAGS" LIBS="$LIBS $LIBIDL_LIBS" cat > conftest.$ac_ext < @@ -17331,7 +17262,7 @@ return IDL_get_libver_string ? 1 : 0; ; return 0; } EOF -if { (eval echo configure:17335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding libIDL or finding the wrong" @@ -17372,7 +17303,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:17376: checking for $ac_word" >&5 +echo "configure:17307: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17416,19 +17347,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for libIDL-2.0 >= 0.8.0""... $ac_c" 1>&6 -echo "configure:17420: checking for libIDL-2.0 >= 0.8.0" >&5 +echo "configure:17351: checking for libIDL-2.0 >= 0.8.0" >&5 if $PKG_CONFIG --exists "libIDL-2.0 >= 0.8.0" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking LIBIDL_CFLAGS""... $ac_c" 1>&6 -echo "configure:17427: checking LIBIDL_CFLAGS" >&5 +echo "configure:17358: checking LIBIDL_CFLAGS" >&5 LIBIDL_CFLAGS=`$PKG_CONFIG --cflags "libIDL-2.0 >= 0.8.0"` echo "$ac_t""$LIBIDL_CFLAGS" 1>&6 echo $ac_n "checking LIBIDL_LIBS""... $ac_c" 1>&6 -echo "configure:17432: checking LIBIDL_LIBS" >&5 +echo "configure:17363: checking LIBIDL_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic LIBIDL_LIBS="`$PKG_CONFIG --libs-only-L \"libIDL-2.0 >= 0.8.0\"` `$PKG_CONFIG --libs-only-l \"libIDL-2.0 >= 0.8.0\"`" @@ -17464,7 +17395,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:17468: checking for $ac_word" >&5 +echo "configure:17399: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_ORBIT_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17501,7 +17432,7 @@ if test -n "$ORBIT_CONFIG"; then echo $ac_n "checking for ORBit libIDL usability""... $ac_c" 1>&6 -echo "configure:17505: checking for ORBit libIDL usability" >&5 +echo "configure:17436: checking for ORBit libIDL usability" >&5 _ORBIT_CFLAGS=`${ORBIT_CONFIG} client --cflags` _ORBIT_LIBS=`${ORBIT_CONFIG} client --libs` _ORBIT_INC_PATH=`${PERL} -e '{ for $f (@ARGV) { print "$f " if ($f =~ m/^-I/); } }' -- ${_ORBIT_CFLAGS}` @@ -17518,7 +17449,7 @@ result="maybe" else cat > conftest.$ac_ext < @@ -17533,7 +17464,7 @@ } EOF -if { (eval echo configure:17537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:17468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then _LIBIDL_FOUND=1 result="yes" @@ -17587,7 +17518,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:17591: checking for $ac_word" >&5 +echo "configure:17522: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17631,19 +17562,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for glib-2.0 >= 1.3.7""... $ac_c" 1>&6 -echo "configure:17635: checking for glib-2.0 >= 1.3.7" >&5 +echo "configure:17566: checking for glib-2.0 >= 1.3.7" >&5 if $PKG_CONFIG --exists "glib-2.0 >= 1.3.7" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking GLIB_CFLAGS""... $ac_c" 1>&6 -echo "configure:17642: checking GLIB_CFLAGS" >&5 +echo "configure:17573: checking GLIB_CFLAGS" >&5 GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 1.3.7"` echo "$ac_t""$GLIB_CFLAGS" 1>&6 echo $ac_n "checking GLIB_LIBS""... $ac_c" 1>&6 -echo "configure:17647: checking GLIB_LIBS" >&5 +echo "configure:17578: checking GLIB_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic GLIB_LIBS="`$PKG_CONFIG --libs-only-L \"glib-2.0 >= 1.3.7\"` `$PKG_CONFIG --libs-only-l \"glib-2.0 >= 1.3.7\"`" @@ -17727,7 +17658,7 @@ # Extract the first word of "glib-config", so it can be a program name with args. set dummy glib-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:17731: checking for $ac_word" >&5 +echo "configure:17662: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -17762,7 +17693,7 @@ min_glib_version=${GLIB_VERSION} echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6 -echo "configure:17766: checking for GLIB - version >= $min_glib_version" >&5 +echo "configure:17697: checking for GLIB - version >= $min_glib_version" >&5 no_glib="" if test "$GLIB_CONFIG" = "no" ; then no_glib=yes @@ -17785,7 +17716,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -17861,7 +17792,7 @@ } EOF -if { (eval echo configure:17865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:17796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -17895,7 +17826,7 @@ CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat > conftest.$ac_ext < @@ -17905,7 +17836,7 @@ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } EOF -if { (eval echo configure:17909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" @@ -17984,19 +17915,19 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:17988: checking for working alloca.h" >&5 +echo "configure:17919: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:18000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -18017,12 +17948,12 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:18021: checking for alloca" >&5 +echo "configure:17952: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -18082,12 +18013,12 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:18086: checking whether alloca needs Cray hooks" >&5 +echo "configure:18017: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 -echo "configure:18116: checking for $ac_func" >&5 +echo "configure:18047: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -18167,7 +18098,7 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:18171: checking stack direction for C alloca" >&5 +echo "configure:18102: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18175,7 +18106,7 @@ ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:18129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -18243,17 +18174,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:18247: checking for $ac_hdr" >&5 +echo "configure:18178: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:18188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -18358,7 +18289,7 @@ # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:18362: checking for $ac_word" >&5 +echo "configure:18293: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18402,19 +18333,19 @@ PKG_CONFIG_MIN_VERSION=0.9.0 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then echo $ac_n "checking for cairo >= $CAIRO_VERSION""... $ac_c" 1>&6 -echo "configure:18406: checking for cairo >= $CAIRO_VERSION" >&5 +echo "configure:18337: checking for cairo >= $CAIRO_VERSION" >&5 if $PKG_CONFIG --exists "cairo >= $CAIRO_VERSION" ; then echo "$ac_t""yes" 1>&6 succeeded=yes echo $ac_n "checking CAIRO_CFLAGS""... $ac_c" 1>&6 -echo "configure:18413: checking CAIRO_CFLAGS" >&5 +echo "configure:18344: checking CAIRO_CFLAGS" >&5 CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo >= $CAIRO_VERSION"` echo "$ac_t""$CAIRO_CFLAGS" 1>&6 echo $ac_n "checking CAIRO_LIBS""... $ac_c" 1>&6 -echo "configure:18418: checking CAIRO_LIBS" >&5 +echo "configure:18349: checking CAIRO_LIBS" >&5 ## don't use --libs since that can do evil things like add ## -Wl,--export-dynamic CAIRO_LIBS="`$PKG_CONFIG --libs-only-L \"cairo >= $CAIRO_VERSION\"` `$PKG_CONFIG --libs-only-l \"cairo >= $CAIRO_VERSION\"`" @@ -18479,7 +18410,7 @@ # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:18483: checking for $ac_word" >&5 +echo "configure:18414: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18740,14 +18671,14 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext < int main() { int x = 1; x++; ; return 0; } EOF -if { (eval echo configure:18751: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:18682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 @@ -18922,6 +18853,7 @@ + CFLAGS=`echo \ $_WARNINGS_CFLAGS \ $CFLAGS` @@ -19040,7 +18972,7 @@ _SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $XCFLAGS" cat > conftest.$ac_ext < @@ -19056,7 +18988,7 @@ ; return 0; } EOF -if { (eval echo configure:19060: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:18992: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then : else echo "configure: failed program was:" >&5 @@ -19273,34 +19205,15 @@ # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs MOZ_DEFINES=$DEFS @@ -19698,6 +19611,7 @@ s%@MOZ_SVG_RENDERER_GDIPLUS@%$MOZ_SVG_RENDERER_GDIPLUS%g s%@MOZ_SVG_RENDERER_LIBART@%$MOZ_SVG_RENDERER_LIBART%g s%@MOZ_SVG_RENDERER_CAIRO@%$MOZ_SVG_RENDERER_CAIRO%g +s%@MOZ_SMIL@%$MOZ_SMIL%g s%@TX_EXE@%$TX_EXE%g s%@MOZ_JS_LIBS@%$MOZ_JS_LIBS%g s%@MOZ_PSM@%$MOZ_PSM%g Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGCircleFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGCircleFrame.cpp,v retrieving revision 1.8 diff -u -r1.8 nsSVGCircleFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGCircleFrame.cpp 19 Apr 2005 03:48:09 -0000 1.8 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGCircleFrame.cpp 29 Aug 2005 09:50:27 -0000 @@ -43,9 +43,10 @@ #include "nsIDOMSVGCircleElement.h" #include "nsIDOMSVGElement.h" #include "nsIDOMSVGSVGElement.h" -//#include "nsASVGPathBuilder.h" #include "nsISVGRendererPathBuilder.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGCircleFrame : public nsSVGPathGeometryFrame { @@ -53,7 +54,6 @@ friend nsresult NS_NewSVGCircleFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGCircleFrame(); NS_IMETHOD InitSVG(); public: @@ -71,9 +71,11 @@ } #endif - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -108,17 +110,6 @@ return NS_OK; } -nsSVGCircleFrame::~nsSVGCircleFrame() -{ - nsCOMPtr value; - if (mCx && (value = do_QueryInterface(mCx))) - value->RemoveObserver(this); - if (mCy && (value = do_QueryInterface(mCy))) - value->RemoveObserver(this); - if (mR && (value = do_QueryInterface(mR))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGCircleFrame::InitSVG() { @@ -135,9 +126,6 @@ length->GetAnimVal(getter_AddRefs(mCx)); NS_ASSERTION(mCx, "no cx"); if (!mCx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mCx); - if (value) - value->AddObserver(this); } { @@ -146,9 +134,6 @@ length->GetAnimVal(getter_AddRefs(mCy)); NS_ASSERTION(mCx, "no cy"); if (!mCx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mCy); - if (value) - value->AddObserver(this); } { @@ -157,9 +142,6 @@ length->GetAnimVal(getter_AddRefs(mR)); NS_ASSERTION(mCx, "no r"); if (!mCx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mR); - if (value) - value->AddObserver(this); } return NS_OK; @@ -172,21 +154,25 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGCircleFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr l = do_QueryInterface(observable); - if (l && (mCx==l || mCy==l || mR==l)) { +nsSVGCircleFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::cx || + aAttribute == nsSVGAtoms::cy || + aAttribute == nsSVGAtoms::r)) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); -} + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); +} //---------------------------------------------------------------------- // nsISVGPathGeometrySource methods: Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.cpp,v retrieving revision 1.13 diff -u -r1.13 nsSVGDefsFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.cpp 9 Aug 2005 13:53:01 -0000 1.13 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.cpp 29 Aug 2005 09:50:28 -0000 @@ -46,6 +46,8 @@ #include "nsIDOMSVGAnimTransformList.h" #include "nsIDOMSVGTransformList.h" #include "nsSVGDefsFrame.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" //---------------------------------------------------------------------- // Implementation @@ -64,37 +66,11 @@ return NS_OK; } -nsSVGDefsFrame::nsSVGDefsFrame() -{ -} - -nsSVGDefsFrame::~nsSVGDefsFrame() -{ - nsCOMPtr transformable = do_QueryInterface(mContent); - if (!transformable) - return; - - nsCOMPtr transforms; - transformable->GetTransform(getter_AddRefs(transforms)); - nsCOMPtr value = do_QueryInterface(transforms); - NS_ASSERTION(value, "interface not found"); - if (value) - value->RemoveObserver(this); -} - +// Stub method specialized by subclasses. Not called by said +// specializations. NS_IMETHODIMP nsSVGDefsFrame::InitSVG() { - nsCOMPtr transformable = do_QueryInterface(mContent); - if (!transformable) - return NS_OK; - - nsCOMPtr transforms; - transformable->GetTransform(getter_AddRefs(transforms)); - nsCOMPtr value = do_QueryInterface(transforms); - NS_ASSERTION(value, "interface not found"); - if (value) - value->AddObserver(this); return NS_OK; } @@ -104,8 +80,6 @@ NS_INTERFACE_MAP_BEGIN(nsSVGDefsFrame) NS_INTERFACE_MAP_ENTRY(nsISVGChildFrame) NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_END_INHERITING(nsSVGDefsFrameBase) @@ -205,35 +179,29 @@ return nsLayoutAtoms::svgDefsFrame; } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - NS_IMETHODIMP -nsSVGDefsFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} - +nsSVGDefsFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + aAttribute == nsSVGAtoms::transform) { + // make sure our cached transform matrix gets (lazily) updated + mCanvasTM = nsnull; + + for (nsIFrame* kid = mFrames.FirstChild(); kid; + kid = kid->GetNextSibling()) { + nsISVGChildFrame* SVGFrame=nsnull; + kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); + if (SVGFrame) + SVGFrame->NotifyCanvasTMChanged(); + } + } -NS_IMETHODIMP -nsSVGDefsFrame::DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - // make sure our cached transform matrix gets (lazily) updated - mCanvasTM = nsnull; - - for (nsIFrame* kid = mFrames.FirstChild(); kid; - kid = kid->GetNextSibling()) { - nsISVGChildFrame* SVGFrame=nsnull; - kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); - if (SVGFrame) - SVGFrame->NotifyCanvasTMChanged(); - } return NS_OK; } - //---------------------------------------------------------------------- // nsISVGChildFrame methods Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.h =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.h,v retrieving revision 1.11 diff -u -r1.11 nsSVGDefsFrame.h --- /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.h 19 Apr 2005 03:48:09 -0000 1.11 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGDefsFrame.h 29 Aug 2005 09:50:28 -0000 @@ -42,23 +42,17 @@ #include "nsContainerFrame.h" #include "nsISVGChildFrame.h" #include "nsISVGContainerFrame.h" -#include "nsISVGValueObserver.h" -#include "nsWeakReference.h" #include "nsLayoutAtoms.h" typedef nsContainerFrame nsSVGDefsFrameBase; class nsSVGDefsFrame : public nsSVGDefsFrameBase, public nsISVGChildFrame, - public nsISVGContainerFrame, - public nsISVGValueObserver, - public nsSupportsWeakReference + public nsISVGContainerFrame { friend nsresult NS_NewSVGDefsFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); protected: - nsSVGDefsFrame(); - virtual ~nsSVGDefsFrame(); NS_IMETHOD InitSVG(); // nsISupports interface: @@ -69,21 +63,26 @@ public: // nsIFrame: - NS_IMETHOD AppendFrames(nsIAtom* aListName, - nsIFrame* aFrameList); - NS_IMETHOD InsertFrames(nsIAtom* aListName, - nsIFrame* aPrevFrame, - nsIFrame* aFrameList); - NS_IMETHOD RemoveFrame(nsIAtom* aListName, - nsIFrame* aOldFrame); - NS_IMETHOD ReplaceFrame(nsIAtom* aListName, - nsIFrame* aOldFrame, - nsIFrame* aNewFrame); + NS_IMETHOD AppendFrames(nsIAtom* aListName, + nsIFrame* aFrameList); + NS_IMETHOD InsertFrames(nsIAtom* aListName, + nsIFrame* aPrevFrame, + nsIFrame* aFrameList); + NS_IMETHOD RemoveFrame(nsIAtom* aListName, + nsIFrame* aOldFrame); + NS_IMETHOD ReplaceFrame(nsIAtom* aListName, + nsIFrame* aOldFrame, + nsIFrame* aNewFrame); NS_IMETHOD Init(nsPresContext* aPresContext, nsIContent* aContent, nsIFrame* aParent, nsStyleContext* aContext, nsIFrame* aPrevInFlow); + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); + /** * Get the "type" of the frame * @@ -98,15 +97,6 @@ } #endif - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - - // nsISupportsWeakReference - // implementation inherited from nsSupportsWeakReference - // nsISVGChildFrame interface: NS_IMETHOD PaintSVG(nsISVGRendererCanvas* canvas, const nsRect& dirtyRectTwips); NS_IMETHOD GetFrameForPointSVG(float x, float y, nsIFrame** hit); Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGEllipseFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGEllipseFrame.cpp,v retrieving revision 1.8 diff -u -r1.8 nsSVGEllipseFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGEllipseFrame.cpp 19 Apr 2005 03:48:09 -0000 1.8 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGEllipseFrame.cpp 29 Aug 2005 09:50:29 -0000 @@ -46,14 +46,14 @@ #include "nsIDOMSVGSVGElement.h" #include "nsISVGRendererPathBuilder.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGEllipseFrame : public nsSVGPathGeometryFrame { friend nsresult NS_NewSVGEllipseFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGEllipseFrame(); - NS_IMETHOD InitSVG(); /** @@ -70,9 +70,11 @@ } #endif - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -107,19 +109,6 @@ return NS_OK; } -nsSVGEllipseFrame::~nsSVGEllipseFrame() -{ - nsCOMPtr value; - if (mCx && (value = do_QueryInterface(mCx))) - value->RemoveObserver(this); - if (mCy && (value = do_QueryInterface(mCy))) - value->RemoveObserver(this); - if (mRx && (value = do_QueryInterface(mRx))) - value->RemoveObserver(this); - if (mRy && (value = do_QueryInterface(mRy))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGEllipseFrame::InitSVG() { @@ -135,9 +124,6 @@ length->GetAnimVal(getter_AddRefs(mCx)); NS_ASSERTION(mCx, "no cx"); if (!mCx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mCx); - if (value) - value->AddObserver(this); } { @@ -146,9 +132,6 @@ length->GetAnimVal(getter_AddRefs(mCy)); NS_ASSERTION(mCy, "no cy"); if (!mCy) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mCy); - if (value) - value->AddObserver(this); } { @@ -157,9 +140,6 @@ length->GetAnimVal(getter_AddRefs(mRx)); NS_ASSERTION(mRx, "no rx"); if (!mRx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRx); - if (value) - value->AddObserver(this); } { @@ -168,9 +148,6 @@ length->GetAnimVal(getter_AddRefs(mRy)); NS_ASSERTION(mRy, "no ry"); if (!mRy) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRy); - if (value) - value->AddObserver(this); } return NS_OK; @@ -183,19 +160,25 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGEllipseFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr l = do_QueryInterface(observable); - if (l && (mCx==l || mCy==l || mRx==l || mRy==l)) { +nsSVGEllipseFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::cx || + aAttribute == nsSVGAtoms::cy || + aAttribute == nsSVGAtoms::rx || + aAttribute == nsSVGAtoms::ry)) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGForeignObjectFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGForeignObjectFrame.cpp,v retrieving revision 1.21 diff -u -r1.21 nsSVGForeignObjectFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGForeignObjectFrame.cpp 16 Aug 2005 22:06:17 -0000 1.21 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGForeignObjectFrame.cpp 29 Aug 2005 09:50:30 -0000 @@ -42,9 +42,7 @@ #include "nsISVGChildFrame.h" #include "nsISVGContainerFrame.h" #include "nsISVGRendererCanvas.h" -#include "nsWeakReference.h" #include "nsISVGValue.h" -#include "nsISVGValueObserver.h" #include "nsIDOMSVGTransformable.h" #include "nsIDOMSVGAnimTransformList.h" #include "nsIDOMSVGTransformList.h" @@ -63,20 +61,19 @@ #include "nsSVGRect.h" #include "nsSVGMatrix.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" typedef nsBlockFrame nsSVGForeignObjectFrameBase; class nsSVGForeignObjectFrame : public nsSVGForeignObjectFrameBase, public nsISVGContainerFrame, - public nsISVGChildFrame, - public nsISVGValueObserver, - public nsSupportsWeakReference + public nsISVGChildFrame { friend nsresult NS_NewSVGForeignObjectFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); protected: nsSVGForeignObjectFrame(); - virtual ~nsSVGForeignObjectFrame(); nsresult Init(); // nsISupports interface: @@ -110,6 +107,10 @@ NS_IMETHOD ReplaceFrame(nsIAtom* aListName, nsIFrame* aOldFrame, nsIFrame* aNewFrame); + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); /** * Get the "type" of the frame @@ -128,12 +129,6 @@ } #endif - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - // nsISupportsWeakReference // implementation inherited from nsSupportsWeakReference @@ -201,27 +196,6 @@ { } -nsSVGForeignObjectFrame::~nsSVGForeignObjectFrame() -{ -// nsCOMPtr transformable = do_QueryInterface(mContent); -// NS_ASSERTION(transformable, "wrong content element"); -// nsCOMPtr transforms; -// transformable->GetTransform(getter_AddRefs(transforms)); -// nsCOMPtr value = do_QueryInterface(transforms); -// NS_ASSERTION(value, "interface not found"); -// if (value) -// value->RemoveObserver(this); - nsCOMPtr value; - if (mX && (value = do_QueryInterface(mX))) - value->RemoveObserver(this); - if (mY && (value = do_QueryInterface(mY))) - value->RemoveObserver(this); - if (mWidth && (value = do_QueryInterface(mWidth))) - value->RemoveObserver(this); - if (mHeight && (value = do_QueryInterface(mHeight))) - value->RemoveObserver(this); -} - nsresult nsSVGForeignObjectFrame::Init() { nsCOMPtr foreignObject = do_QueryInterface(mContent); @@ -233,9 +207,6 @@ length->GetAnimVal(getter_AddRefs(mX)); NS_ASSERTION(mX, "no x"); if (!mX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX); - if (value) - value->AddObserver(this); } { @@ -244,9 +215,6 @@ length->GetAnimVal(getter_AddRefs(mY)); NS_ASSERTION(mY, "no y"); if (!mY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY); - if (value) - value->AddObserver(this); } { @@ -255,9 +223,6 @@ length->GetAnimVal(getter_AddRefs(mWidth)); NS_ASSERTION(mWidth, "no width"); if (!mWidth) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mWidth); - if (value) - value->AddObserver(this); } { @@ -266,21 +231,8 @@ length->GetAnimVal(getter_AddRefs(mHeight)); NS_ASSERTION(mHeight, "no height"); if (!mHeight) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mHeight); - if (value) - value->AddObserver(this); } -// XXX -// nsCOMPtr transformable = do_QueryInterface(mContent); -// NS_ASSERTION(transformable, "wrong content element"); -// nsCOMPtr transforms; -// transformable->GetTransform(getter_AddRefs(transforms)); -// nsCOMPtr value = do_QueryInterface(transforms); -// NS_ASSERTION(value, "interface not found"); -// if (value) -// value->AddObserver(this); - // XXX for some reason updating fails when done here. Why is this too early? // anyway - we use a less desirable mechanism now of updating in paint(). // Update(); @@ -294,8 +246,6 @@ NS_INTERFACE_MAP_BEGIN(nsSVGForeignObjectFrame) NS_INTERFACE_MAP_ENTRY(nsISVGChildFrame) NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_END_INHERITING(nsSVGForeignObjectFrameBase) @@ -442,27 +392,23 @@ // return nsLayoutAtoms::svgForeignObjectFrame; // } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - NS_IMETHODIMP -nsSVGForeignObjectFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} +nsSVGForeignObjectFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y || + aAttribute == nsSVGAtoms::width || + aAttribute == nsSVGAtoms::height || + aAttribute == nsSVGAtoms::transform)) + Update(); - -NS_IMETHODIMP -nsSVGForeignObjectFrame::DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - Update(); - return NS_OK; } - //---------------------------------------------------------------------- // nsISVGChildFrame methods Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGGlyphFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGGlyphFrame.cpp,v retrieving revision 1.33 diff -u -r1.33 nsSVGGlyphFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGGlyphFrame.cpp 26 Aug 2005 21:13:48 -0000 1.33 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGGlyphFrame.cpp 29 Aug 2005 09:50:33 -0000 @@ -233,10 +233,10 @@ nsSVGGlyphFrame::~nsSVGGlyphFrame() { if (mFillGradient) { - NS_ADD_SVGVALUE_OBSERVER(mFillGradient); + NS_REMOVE_SVGVALUE_OBSERVER(mFillGradient); } if (mStrokeGradient) { - NS_ADD_SVGVALUE_OBSERVER(mStrokeGradient); + NS_REMOVE_SVGVALUE_OBSERVER(mStrokeGradient); } } Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp,v retrieving revision 1.11 diff -u -r1.11 nsSVGImageFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp 2 Jul 2005 23:45:33 -0000 1.11 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGImageFrame.cpp 29 Aug 2005 09:50:35 -0000 @@ -55,6 +55,8 @@ #include "imgIRequest.h" #include "nsSVGClipPathFrame.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" #define NS_GET_BIT(rowptr, x) (rowptr[(x)>>3] & (1<<(7-(x)&0x7))) @@ -87,9 +89,11 @@ NS_IMETHOD InitSVG(); public: - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -158,18 +162,6 @@ nsSVGImageFrame::~nsSVGImageFrame() { - nsCOMPtr value; - if (mX && (value = do_QueryInterface(mX))) - value->RemoveObserver(this); - if (mY && (value = do_QueryInterface(mY))) - value->RemoveObserver(this); - if (mWidth && (value = do_QueryInterface(mWidth))) - value->RemoveObserver(this); - if (mHeight && (value = do_QueryInterface(mHeight))) - value->RemoveObserver(this); - if (mPreserveAspectRatio && (value = do_QueryInterface(mPreserveAspectRatio))) - value->RemoveObserver(this); - // set the frame to null so we don't send messages to a dead object. if (mListener) { nsCOMPtr imageLoader = do_QueryInterface(mContent); @@ -196,9 +188,6 @@ length->GetAnimVal(getter_AddRefs(mX)); NS_ASSERTION(mX, "no x"); if (!mX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX); - if (value) - value->AddObserver(this); } { @@ -207,9 +196,6 @@ length->GetAnimVal(getter_AddRefs(mY)); NS_ASSERTION(mY, "no y"); if (!mY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY); - if (value) - value->AddObserver(this); } { @@ -218,9 +204,6 @@ length->GetAnimVal(getter_AddRefs(mWidth)); NS_ASSERTION(mWidth, "no width"); if (!mWidth) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mWidth); - if (value) - value->AddObserver(this); } { @@ -229,9 +212,6 @@ length->GetAnimVal(getter_AddRefs(mHeight)); NS_ASSERTION(mHeight, "no height"); if (!mHeight) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mHeight); - if (value) - value->AddObserver(this); } { @@ -240,9 +220,6 @@ ratio->GetAnimVal(getter_AddRefs(mPreserveAspectRatio)); NS_ASSERTION(mHeight, "no preserveAspectRatio"); if (!mPreserveAspectRatio) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mPreserveAspectRatio); - if (value) - value->AddObserver(this); } mSurface = nsnull; @@ -258,19 +235,26 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGImageFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr l = do_QueryInterface(observable); - if (l && (mX==l || mY==l || mWidth==l || mHeight==l)) { - UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); - return NS_OK; - } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); +nsSVGImageFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y || + aAttribute == nsSVGAtoms::width || + aAttribute == nsSVGAtoms::height || + aAttribute == nsSVGAtoms::preserveAspectRatio)) { + UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); + return NS_OK; + } + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGInnerSVGFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGInnerSVGFrame.cpp,v retrieving revision 1.13 diff -u -r1.13 nsSVGInnerSVGFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGInnerSVGFrame.cpp 9 Aug 2005 13:53:02 -0000 1.13 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGInnerSVGFrame.cpp 29 Aug 2005 09:50:36 -0000 @@ -50,18 +50,15 @@ #include "nsIDOMSVGFitToViewBox.h" #include "nsSVGLength.h" #include "nsISVGValue.h" -#include "nsISVGValueObserver.h" -#include "nsWeakReference.h" #include "nsSVGMatrix.h" #include "nsLayoutAtoms.h" +#include "nsSVGAtoms.h" typedef nsContainerFrame nsSVGInnerSVGFrameBase; class nsSVGInnerSVGFrame : public nsSVGInnerSVGFrameBase, public nsISVGChildFrame, public nsISVGContainerFrame, - public nsISVGValueObserver, - public nsSupportsWeakReference, public nsISVGSVGFrame { friend nsresult @@ -95,10 +92,6 @@ nsStyleContext* aContext, nsIFrame* aPrevInFlow); - NS_IMETHOD AttributeChanged(nsIContent* aChild, - PRInt32 aNameSpaceID, - nsIAtom* aAttribute, - PRInt32 aModType); /** * Get the "type" of the frame * @@ -129,12 +122,6 @@ already_AddRefed GetCanvasTM(); already_AddRefed GetCoordContextProvider(); - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - // nsISupportsWeakReference // implementation inherited from nsSupportsWeakReference @@ -204,9 +191,6 @@ length->GetAnimVal(getter_AddRefs(mX)); NS_ASSERTION(mX, "no x"); if (!mX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX); - if (value) - value->AddObserver(this); // nsISVGValueObserver } { @@ -215,9 +199,6 @@ length->GetAnimVal(getter_AddRefs(mY)); NS_ASSERTION(mY, "no y"); if (!mY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY); - if (value) - value->AddObserver(this); } return NS_OK; @@ -229,8 +210,6 @@ NS_INTERFACE_MAP_BEGIN(nsSVGInnerSVGFrame) NS_INTERFACE_MAP_ENTRY(nsISVGChildFrame) NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) - NS_INTERFACE_MAP_ENTRY(nsSupportsWeakReference) NS_INTERFACE_MAP_ENTRY(nsISVGSVGFrame) NS_INTERFACE_MAP_END_INHERITING(nsSVGInnerSVGFrameBase) @@ -325,22 +304,6 @@ return NS_ERROR_NOT_IMPLEMENTED; } -NS_IMETHODIMP -nsSVGInnerSVGFrame::AttributeChanged(nsIContent* aChild, - PRInt32 aNameSpaceID, - nsIAtom* aAttribute, - PRInt32 aModType) -{ -#ifdef DEBUG - nsAutoString str; - aAttribute->ToString(str); - printf("** nsSVGInnerSVGFrame::AttributeChanged(%s)\n", - NS_LossyConvertUCS2toASCII(str).get()); -#endif - - return NS_OK; -} - nsIAtom * nsSVGInnerSVGFrame::GetType() const { @@ -691,21 +654,3 @@ return provider; } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - -NS_IMETHODIMP -nsSVGInnerSVGFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} - -NS_IMETHODIMP -nsSVGInnerSVGFrame::DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - NotifyViewportChange(); - - return NS_OK; -} Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGLineFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGLineFrame.cpp,v retrieving revision 1.10 diff -u -r1.10 nsSVGLineFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGLineFrame.cpp 19 Apr 2005 03:48:09 -0000 1.10 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGLineFrame.cpp 29 Aug 2005 09:50:37 -0000 @@ -47,6 +47,8 @@ #include "nsISVGRendererPathBuilder.h" #include "nsISVGMarkable.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGLineFrame : public nsSVGPathGeometryFrame, public nsISVGMarkable @@ -55,7 +57,6 @@ friend nsresult NS_NewSVGLineFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGLineFrame(); NS_IMETHOD InitSVG(); /** @@ -73,9 +74,11 @@ #endif public: - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -124,19 +127,6 @@ return NS_OK; } -nsSVGLineFrame::~nsSVGLineFrame() -{ - nsCOMPtr value; - if (mX1 && (value = do_QueryInterface(mX1))) - value->RemoveObserver(this); - if (mY1 && (value = do_QueryInterface(mY1))) - value->RemoveObserver(this); - if (mX2 && (value = do_QueryInterface(mX2))) - value->RemoveObserver(this); - if (mY2 && (value = do_QueryInterface(mY2))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGLineFrame::InitSVG() { @@ -152,9 +142,6 @@ length->GetAnimVal(getter_AddRefs(mX1)); NS_ASSERTION(mX1, "no x1"); if (!mX1) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX1); - if (value) - value->AddObserver(this); } { @@ -163,9 +150,6 @@ length->GetAnimVal(getter_AddRefs(mY1)); NS_ASSERTION(mY1, "no y1"); if (!mY1) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY1); - if (value) - value->AddObserver(this); } { @@ -174,9 +158,6 @@ length->GetAnimVal(getter_AddRefs(mX2)); NS_ASSERTION(mX2, "no x2"); if (!mX2) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX2); - if (value) - value->AddObserver(this); } { @@ -185,34 +166,37 @@ length->GetAnimVal(getter_AddRefs(mY2)); NS_ASSERTION(mY2, "no y2"); if (!mY2) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY2); - if (value) - value->AddObserver(this); } return NS_OK; } +//---------------------------------------------------------------------- +// nsIFrame methods: + nsIAtom * nsSVGLineFrame::GetType() const { return nsLayoutAtoms::svgLineFrame; } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - NS_IMETHODIMP -nsSVGLineFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr l = do_QueryInterface(observable); - if (l && (mX1==l || mY1==l || mX2==l || mY2==l)) { +nsSVGLineFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x1 || + aAttribute == nsSVGAtoms::y1 || + aAttribute == nsSVGAtoms::x2 || + aAttribute == nsSVGAtoms::y2)) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.cpp,v retrieving revision 1.11 diff -u -r1.11 nsSVGMarkerFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.cpp 4 Aug 2005 20:32:00 -0000 1.11 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.cpp 29 Aug 2005 09:50:37 -0000 @@ -56,6 +56,8 @@ #include "nsSVGPathGeometryFrame.h" #include "nsISVGRendererCanvas.h" #include "nsSVGUtils.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" NS_IMETHODIMP_(nsrefcnt) nsSVGMarkerFrame::AddRef() @@ -130,30 +132,10 @@ return NS_OK; } -nsSVGMarkerFrame::~nsSVGMarkerFrame() -{ - nsCOMPtr value; - if (mRefX && (value = do_QueryInterface(mRefX))) - value->RemoveObserver(this); - if (mRefY && (value = do_QueryInterface(mRefY))) - value->RemoveObserver(this); - if (mMarkerWidth && (value = do_QueryInterface(mMarkerWidth))) - value->RemoveObserver(this); - if (mMarkerHeight && (value = do_QueryInterface(mMarkerHeight))) - value->RemoveObserver(this); - if (mOrientAngle && (value = do_QueryInterface(mOrientAngle))) - value->RemoveObserver(this); - if (mViewBox && (value = do_QueryInterface(mViewBox))) - value->RemoveObserver(this); -} NS_IMETHODIMP nsSVGMarkerFrame::InitSVG() { - nsresult rv = nsSVGDefsFrame::InitSVG(); - if (NS_FAILED(rv)) - return rv; - nsCOMPtr marker = do_QueryInterface(mContent); NS_ASSERTION(marker, "wrong content element"); @@ -163,9 +145,6 @@ length->GetAnimVal(getter_AddRefs(mRefX)); NS_ASSERTION(mRefX, "no RefX"); if (!mRefX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRefX); - if (value) - value->AddObserver(this); } { @@ -174,9 +153,6 @@ length->GetAnimVal(getter_AddRefs(mRefY)); NS_ASSERTION(mRefY, "no RefY"); if (!mRefY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRefY); - if (value) - value->AddObserver(this); } { @@ -185,9 +161,6 @@ length->GetAnimVal(getter_AddRefs(mMarkerWidth)); NS_ASSERTION(mMarkerWidth, "no markerWidth"); if (!mMarkerWidth) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mMarkerWidth); - if (value) - value->AddObserver(this); } { @@ -196,9 +169,6 @@ length->GetAnimVal(getter_AddRefs(mMarkerHeight)); NS_ASSERTION(mMarkerHeight, "no markerHeight"); if (!mMarkerHeight) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mMarkerHeight); - if (value) - value->AddObserver(this); } { @@ -207,9 +177,6 @@ angle->GetAnimVal(getter_AddRefs(mOrientAngle)); NS_ASSERTION(mOrientAngle, "no orientAngle"); if (!mOrientAngle) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mOrientAngle); - if (value) - value->AddObserver(this); } { @@ -219,11 +186,8 @@ if (rect) { rect->GetAnimVal(getter_AddRefs(mViewBox)); - NS_ASSERTION(mRefY, "no viewBox"); - if (!mRefY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRefY); - if (value) - value->AddObserver(this); + NS_ASSERTION(mViewBox, "no viewBox"); + if (!mViewBox) return NS_ERROR_FAILURE; } } @@ -237,15 +201,30 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGMarkerFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return nsSVGDefsFrame::DidModifySVGObservable(observable, aModType); +nsSVGMarkerFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::refX || + aAttribute == nsSVGAtoms::refY || + aAttribute == nsSVGAtoms::markerWidth || + aAttribute == nsSVGAtoms::markerHeight || + aAttribute == nsSVGAtoms::orient || + aAttribute == nsSVGAtoms::viewBox)) { + // XXX: marker frame should be a nsSVGValue and call DidModify() here + return NS_OK; + } + + return nsSVGDefsFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } + //---------------------------------------------------------------------- // nsISVGContainerFrame methods: already_AddRefed Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.h =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.h,v retrieving revision 1.6 diff -u -r1.6 nsSVGMarkerFrame.h --- /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.h 1 Jul 2005 01:34:34 -0000 1.6 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGMarkerFrame.h 29 Aug 2005 09:50:38 -0000 @@ -62,7 +62,6 @@ nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGMarkerFrame(); NS_IMETHOD InitSVG(); public: @@ -71,9 +70,11 @@ NS_DEFINE_STATIC_CID_ACCESSOR(NS_SVGMARKERFRAME_CID) NS_DEFINE_STATIC_IID_ACCESSOR(NS_SVGMARKERFRAME_CID) - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); /** * Get the "type" of the frame Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGOuterSVGFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGOuterSVGFrame.cpp,v retrieving revision 1.48 diff -u -r1.48 nsSVGOuterSVGFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGOuterSVGFrame.cpp 25 Aug 2005 21:31:09 -0000 1.48 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGOuterSVGFrame.cpp 29 Aug 2005 09:50:40 -0000 @@ -49,9 +49,7 @@ #include "nsISVGRendererCanvas.h" #include "nsIView.h" #include "nsIViewManager.h" -#include "nsWeakReference.h" #include "nsISVGValue.h" -#include "nsISVGValueObserver.h" #include "nsHTMLParts.h" #include "nsReflowPath.h" #include "nsISVGRenderer.h" @@ -159,15 +157,12 @@ class nsSVGOuterSVGFrame : public nsSVGOuterSVGFrameBase, public nsISVGOuterSVGFrame, public nsISVGContainerFrame, - public nsISVGValueObserver, - public nsSupportsWeakReference, public nsSVGCoordCtxProvider { friend nsresult NS_NewSVGOuterSVGFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); protected: nsSVGOuterSVGFrame(); - virtual ~nsSVGOuterSVGFrame(); nsresult Init(); // nsISupports interface: @@ -236,15 +231,6 @@ } #endif - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - - // nsISupportsWeakReference - // implementation inherited from nsSupportsWeakReference - // nsISVGOuterSVGFrame interface: NS_IMETHOD InvalidateRegion(nsISVGRendererRegion* region, PRBool bRedraw); NS_IMETHOD IsRedrawSuspended(PRBool* isSuspended); @@ -267,9 +253,6 @@ float GetPxPerTwips(); float GetTwipsPerPx(); - void AddAsWidthHeightObserver(); - void RemoveAsWidthHeightObserver(); - void CalculateAvailableSpace(nsRect *maxRect, nsRect *preferredRect, nsPresContext* aPresContext, const nsHTMLReflowState& aReflowState); @@ -319,18 +302,6 @@ { } -nsSVGOuterSVGFrame::~nsSVGOuterSVGFrame() -{ -#ifdef DEBUG -// printf("~nsSVGOuterSVGFrame %p\n", this); -#endif - - if (mZoomAndPan) - NS_REMOVE_SVGVALUE_OBSERVER(mZoomAndPan); - - RemoveAsWidthHeightObserver(); -} - #ifdef MOZ_SVG_RENDERER_GDIPLUS // alert the user if GDI+ is not installed. // it is non-modal (i.e., it doesn't wait for input from the user) @@ -421,12 +392,10 @@ nsIDocument* doc = mContent->GetCurrentDoc(); if (doc && doc->GetRootContent() == mContent) { SVGElement->GetZoomAndPanEnum(getter_AddRefs(mZoomAndPan)); - NS_ADD_SVGVALUE_OBSERVER(mZoomAndPan); SVGElement->GetCurrentTranslate(getter_AddRefs(mCurrentTranslate)); SVGElement->GetCurrentScaleNumber(getter_AddRefs(mCurrentScale)); } - AddAsWidthHeightObserver(); SuspendRedraw(); return NS_OK; } @@ -438,8 +407,6 @@ NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) NS_INTERFACE_MAP_ENTRY(nsISVGOuterSVGFrame) NS_INTERFACE_MAP_ENTRY(nsISVGSVGFrame) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_ENTRY(nsSVGCoordCtxProvider) NS_INTERFACE_MAP_END_INHERITING(nsSVGOuterSVGFrameBase) @@ -558,11 +525,6 @@ SuspendRedraw(); - // As soon as we set the coordinate context, the width/height - // attributes might emit change-notifications. We don't want those - // right now: - RemoveAsWidthHeightObserver(); - nsCOMPtr r; NS_NewSVGRect(getter_AddRefs(r), 0, 0, preferredWidth, preferredHeight); SetCoordCtxRect(r); @@ -635,8 +597,6 @@ aStatus = NS_FRAME_COMPLETE; NS_FRAME_SET_TRUNCATION(aStatus, aReflowState, aDesiredSize); - AddAsWidthHeightObserver(); - UnsuspendRedraw(); return NS_OK; @@ -936,30 +896,6 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: - -NS_IMETHODIMP -nsSVGOuterSVGFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} - - -NS_IMETHODIMP -nsSVGOuterSVGFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - mNeedsReflow = PR_TRUE; - if (mRedrawSuspendCount==0) { - InitiateReflow(); - } - - return NS_OK; -} - - -//---------------------------------------------------------------------- // nsISVGOuterSVGFrame methods: NS_IMETHODIMP @@ -1178,58 +1114,6 @@ } -void nsSVGOuterSVGFrame::AddAsWidthHeightObserver() -{ - nsCOMPtr svgElement = do_QueryInterface(mContent); - NS_ASSERTION(svgElement, "wrong content element"); - - { - nsCOMPtr animLength; - svgElement->GetWidth(getter_AddRefs(animLength)); - NS_ASSERTION(animLength, "could not get :width"); - nsCOMPtr length; - animLength->GetAnimVal(getter_AddRefs(length)); - NS_ASSERTION(length, "could not get :width:animval"); - NS_ADD_SVGVALUE_OBSERVER(length); - } - - { - nsCOMPtr animLength; - svgElement->GetHeight(getter_AddRefs(animLength)); - NS_ASSERTION(animLength, "could not get :height"); - nsCOMPtr length; - animLength->GetAnimVal(getter_AddRefs(length)); - NS_ASSERTION(length, "could not get :height:animval"); - NS_ADD_SVGVALUE_OBSERVER(length); - } -} - -void nsSVGOuterSVGFrame::RemoveAsWidthHeightObserver() -{ - nsCOMPtr svgElement = do_QueryInterface(mContent); - NS_ASSERTION(svgElement, "wrong content element"); - - { - nsCOMPtr animLength; - svgElement->GetWidth(getter_AddRefs(animLength)); - NS_ASSERTION(animLength, "could not get :width"); - nsCOMPtr length; - animLength->GetAnimVal(getter_AddRefs(length)); - NS_ASSERTION(length, "could not get :width:animval"); - NS_REMOVE_SVGVALUE_OBSERVER(length); - } - - { - nsCOMPtr animLength; - svgElement->GetHeight(getter_AddRefs(animLength)); - NS_ASSERTION(animLength, "could not get :height"); - nsCOMPtr length; - animLength->GetAnimVal(getter_AddRefs(length)); - NS_ASSERTION(length, "could not get :height:animval"); - NS_REMOVE_SVGVALUE_OBSERVER(length); - } -} - void nsSVGOuterSVGFrame::CalculateAvailableSpace(nsRect *maxRect, nsRect *preferredRect, Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathFrame.cpp,v retrieving revision 1.27 diff -u -r1.27 nsSVGPathFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGPathFrame.cpp 26 Aug 2005 02:49:51 -0000 1.27 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGPathFrame.cpp 29 Aug 2005 09:50:43 -0000 @@ -50,6 +50,8 @@ #include "nsISupports.h" #include "nsLayoutAtoms.h" #include "nsISVGPathFlatten.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGPathFrame : public nsSVGPathGeometryFrame, public nsISVGMarkable, @@ -59,13 +61,14 @@ friend nsresult NS_NewSVGPathFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - ~nsSVGPathFrame(); NS_IMETHOD InitSVG(); public: - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -129,12 +132,6 @@ return NS_OK; } -nsSVGPathFrame::~nsSVGPathFrame() -{ - nsCOMPtr value; - if (mSegments && (value = do_QueryInterface(mSegments))) - value->RemoveObserver(this); -} NS_IMETHODIMP nsSVGPathFrame::InitSVG() @@ -147,27 +144,27 @@ anim_data->GetAnimatedPathSegList(getter_AddRefs(mSegments)); NS_ASSERTION(mSegments, "no pathseglist"); if (!mSegments) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mSegments); - if (value) - value->AddObserver(this); return NS_OK; } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsISVGFrame methods: NS_IMETHODIMP -nsSVGPathFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) +nsSVGPathFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) { - nsCOMPtr l = do_QueryInterface(observable); - if (l && mSegments==l) { + if (aNameSpaceID == kNameSpaceID_None && + aAttribute == nsSVGAtoms::d) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.cpp,v retrieving revision 1.27 diff -u -r1.27 nsSVGPathGeometryFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.cpp 4 Aug 2005 20:32:00 -0000 1.27 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.cpp 29 Aug 2005 09:50:44 -0000 @@ -61,6 +61,7 @@ #include "nsISVGRendererCanvas.h" #include "nsIViewManager.h" #include "nsSVGUtils.h" +#include "nsINameSpaceManager.h" //////////////////////////////////////////////////////////////////////// // nsSVGPathGeometryFrame @@ -80,11 +81,6 @@ // printf("~nsSVGPathGeometryFrame %p\n", this); #endif - nsCOMPtr transformable = do_QueryInterface(mContent); - NS_ASSERTION(transformable, "wrong content element"); - nsCOMPtr transforms; - transformable->GetTransform(getter_AddRefs(transforms)); - NS_REMOVE_SVGVALUE_OBSERVER(transforms); if (mFillGradient) { NS_REMOVE_SVGVALUE_OBSERVER(mFillGradient); } @@ -135,17 +131,9 @@ nsIAtom* aAttribute, PRInt32 aModType) { - // we don't use this notification mechanism - -#ifdef DEBUG -// printf("** nsSVGPathGeometryFrame::AttributeChanged("); -// nsAutoString str; -// aAttribute->ToString(str); -// nsCAutoString cstr; -// cstr.AssignWithConversion(str); -// printf(cstr.get()); -// printf(")\n"); -#endif + if (aNameSpaceID == kNameSpaceID_None && + aAttribute == nsSVGAtoms::transform) + UpdateGraphic(nsISVGGeometrySource::UPDATEMASK_CANVAS_TM); return NS_OK; } @@ -449,10 +437,8 @@ } UpdateGraphic(nsISVGGeometrySource::UPDATEMASK_STROKE_PAINT); } - } else { - // No, all of our other observables update the canvastm by default - UpdateGraphic(nsISVGGeometrySource::UPDATEMASK_CANVAS_TM); } + return NS_OK; } @@ -788,14 +774,6 @@ NS_IMETHODIMP nsSVGPathGeometryFrame::InitSVG() { - // all path geometry frames listen in on changes to their - // corresponding content element's transform attribute: - nsCOMPtr transformable = do_QueryInterface(mContent); - NS_ASSERTION(transformable, "wrong content element"); - nsCOMPtr transforms; - transformable->GetTransform(getter_AddRefs(transforms)); - NS_ADD_SVGVALUE_OBSERVER(transforms); - // construct a pathgeometry object: nsISVGOuterSVGFrame* outerSVGFrame = GetOuterSVGFrame(); if (!outerSVGFrame) { Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.h =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.h,v retrieving revision 1.13 diff -u -r1.13 nsSVGPathGeometryFrame.h --- /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.h 19 Apr 2005 03:48:09 -0000 1.13 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGPathGeometryFrame.h 29 Aug 2005 09:50:45 -0000 @@ -103,7 +103,6 @@ #endif protected: - // nsISVGValueObserver NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, nsISVGValue::modificationType aModType); Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGPolygonFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGPolygonFrame.cpp,v retrieving revision 1.9 diff -u -r1.9 nsSVGPolygonFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGPolygonFrame.cpp 19 Apr 2005 03:48:09 -0000 1.9 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGPolygonFrame.cpp 29 Aug 2005 09:50:45 -0000 @@ -40,11 +40,12 @@ #include "nsIDOMSVGAnimatedPoints.h" #include "nsIDOMSVGPointList.h" #include "nsIDOMSVGPoint.h" -//#include "nsASVGPathBuilder.h" #include "nsISVGRendererPathBuilder.h" #include "nsISVGMarkable.h" #include "nsSVGMarkerFrame.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGPolygonFrame : public nsSVGPathGeometryFrame, public nsISVGMarkable @@ -53,14 +54,14 @@ friend nsresult NS_NewSVGPolygonFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - ~nsSVGPolygonFrame(); - NS_IMETHOD InitSVG(); public: - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -119,13 +120,6 @@ return NS_OK; } -nsSVGPolygonFrame::~nsSVGPolygonFrame() -{ - nsCOMPtr value; - if (mPoints && (value = do_QueryInterface(mPoints))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGPolygonFrame::InitSVG() { @@ -137,26 +131,27 @@ anim_points->GetPoints(getter_AddRefs(mPoints)); NS_ASSERTION(mPoints, "no points"); if (!mPoints) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mPoints); - if (value) - value->AddObserver(this); + return NS_OK; } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGPolygonFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) +nsSVGPolygonFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) { - nsCOMPtr l = do_QueryInterface(observable); - if (l && mPoints==l) { + if (aNameSpaceID == kNameSpaceID_None && + aAttribute == nsSVGAtoms::points) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGPolylineFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGPolylineFrame.cpp,v retrieving revision 1.9 diff -u -r1.9 nsSVGPolylineFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGPolylineFrame.cpp 19 Apr 2005 03:48:09 -0000 1.9 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGPolylineFrame.cpp 29 Aug 2005 09:50:46 -0000 @@ -40,11 +40,12 @@ #include "nsIDOMSVGAnimatedPoints.h" #include "nsIDOMSVGPointList.h" #include "nsIDOMSVGPoint.h" -//#include "nsASVGPathBuilder.h" #include "nsISVGRendererPathBuilder.h" #include "nsISVGMarkable.h" #include "nsSVGMarkerFrame.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" class nsSVGPolylineFrame : public nsSVGPathGeometryFrame, public nsISVGMarkable @@ -53,7 +54,6 @@ friend nsresult NS_NewSVGPolylineFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGPolylineFrame(); NS_IMETHOD InitSVG(); public: @@ -64,6 +64,7 @@ */ virtual nsIAtom* GetType() const; + // nsIFrame interface: #ifdef DEBUG NS_IMETHOD GetFrameName(nsAString& aResult) const { @@ -71,9 +72,10 @@ } #endif - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -119,13 +121,6 @@ return NS_OK; } -nsSVGPolylineFrame::~nsSVGPolylineFrame() -{ - nsCOMPtr value; - if (mPoints && (value = do_QueryInterface(mPoints))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGPolylineFrame::InitSVG() { @@ -137,32 +132,33 @@ anim_points->GetPoints(getter_AddRefs(mPoints)); NS_ASSERTION(mPoints, "no points"); if (!mPoints) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mPoints); - if (value) - value->AddObserver(this); + return NS_OK; } +//---------------------------------------------------------------------- +// nsIFrame methods: + nsIAtom * nsSVGPolylineFrame::GetType() const { return nsLayoutAtoms::svgPolylineFrame; } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - NS_IMETHODIMP -nsSVGPolylineFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) +nsSVGPolylineFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) { - nsCOMPtr l = do_QueryInterface(observable); - if (l && mPoints==l) { + if (aNameSpaceID == kNameSpaceID_None && + aAttribute == nsSVGAtoms::points) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - // else - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGRectFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGRectFrame.cpp,v retrieving revision 1.9 diff -u -r1.9 nsSVGRectFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGRectFrame.cpp 19 Apr 2005 03:48:09 -0000 1.9 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGRectFrame.cpp 29 Aug 2005 09:50:46 -0000 @@ -55,13 +55,13 @@ NS_NewSVGRectFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); - virtual ~nsSVGRectFrame(); NS_IMETHOD InitSVG(); -public: - // nsISVGValueObserver interface: - NS_IMETHOD DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGPathGeometrySource interface: NS_IMETHOD ConstructPath(nsISVGRendererPathBuilder *pathBuilder); @@ -112,23 +112,6 @@ return NS_OK; } -nsSVGRectFrame::~nsSVGRectFrame() -{ - nsCOMPtr value; - if (mX && (value = do_QueryInterface(mX))) - value->RemoveObserver(this); - if (mY && (value = do_QueryInterface(mY))) - value->RemoveObserver(this); - if (mWidth && (value = do_QueryInterface(mWidth))) - value->RemoveObserver(this); - if (mHeight && (value = do_QueryInterface(mHeight))) - value->RemoveObserver(this); - if (mRx && (value = do_QueryInterface(mRx))) - value->RemoveObserver(this); - if (mRy && (value = do_QueryInterface(mRy))) - value->RemoveObserver(this); -} - NS_IMETHODIMP nsSVGRectFrame::InitSVG() { @@ -145,9 +128,6 @@ NS_ASSERTION(mX, "no x"); if (!mX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX); - if (value) - value->AddObserver(this); } { @@ -157,9 +137,6 @@ NS_ASSERTION(mY, "no y"); if (!mY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY); - if (value) - value->AddObserver(this); } { @@ -169,10 +146,8 @@ NS_ASSERTION(mWidth, "no width"); if (!mWidth) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mWidth); - if (value) - value->AddObserver(this); } + { nsCOMPtr length; Rect->GetHeight(getter_AddRefs(length)); @@ -180,9 +155,6 @@ NS_ASSERTION(mHeight, "no height"); if (!mHeight) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mHeight); - if (value) - value->AddObserver(this); } { @@ -192,9 +164,6 @@ NS_ASSERTION(mRx, "no rx"); if (!mRx) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRx); - if (value) - value->AddObserver(this); } { @@ -204,28 +173,33 @@ NS_ASSERTION(mRy, "no ry"); if (!mRy) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mRy); - if (value) - value->AddObserver(this); } return NS_OK; } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: +// nsIFrame methods: NS_IMETHODIMP -nsSVGRectFrame::DidModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr l = do_QueryInterface(observable); - if (l && (mX==l || mY==l || mWidth==l || mHeight==l || mRx==l || mRy==l)) { +nsSVGRectFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y || + aAttribute == nsSVGAtoms::width || + aAttribute == nsSVGAtoms::height || + aAttribute == nsSVGAtoms::rx || + aAttribute == nsSVGAtoms::ry)) { UpdateGraphic(nsISVGPathGeometrySource::UPDATEMASK_PATH); return NS_OK; } - return nsSVGPathGeometryFrame::DidModifySVGObservable(observable, aModType); + return nsSVGPathGeometryFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); } //---------------------------------------------------------------------- Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.cpp,v retrieving revision 1.17 diff -u -r1.17 nsSVGTSpanFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.cpp 26 Aug 2005 02:49:51 -0000 1.17 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.cpp 29 Aug 2005 09:50:48 -0000 @@ -78,61 +78,8 @@ { } -nsSVGTSpanFrame::~nsSVGTSpanFrame() -{ - // clean up our listener refs: - { - nsCOMPtr lengthList = GetX(); - if (lengthList) - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetY(); - if (lengthList) - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDx(); - if (lengthList) - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDy(); - if (lengthList) - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } -} - nsresult nsSVGTSpanFrame::InitSVG() { - // set us up as a listener for various -properties: - { - nsCOMPtr lengthList = GetX(); - if (lengthList) - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetY(); - if (lengthList) - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDx(); - if (lengthList) - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDy(); - if (lengthList) - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - return NS_OK; } @@ -150,8 +97,6 @@ NS_INTERFACE_MAP_ENTRY(nsISVGGlyphFragmentNode) NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) NS_INTERFACE_MAP_ENTRY(nsISVGChildFrame) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_END_INHERITING(nsSVGTSpanFrameBase) @@ -257,30 +202,27 @@ return NS_ERROR_NOT_IMPLEMENTED; } -//---------------------------------------------------------------------- -// nsISVGValueObserver methods: - NS_IMETHODIMP -nsSVGTSpanFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} - +nsSVGTSpanFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y || + aAttribute == nsSVGAtoms::dx || + aAttribute == nsSVGAtoms::dy)) { + nsIFrame* kid = mFrames.FirstChild(); + while (kid) { + nsISVGChildFrame* SVGFrame=0; + kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); + if (SVGFrame) + SVGFrame->NotifyCanvasTMChanged(); // XXX + kid = kid->GetNextSibling(); + } + } -NS_IMETHODIMP -nsSVGTSpanFrame::DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - - nsIFrame* kid = mFrames.FirstChild(); - while (kid) { - nsISVGChildFrame* SVGFrame=0; - kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); - if (SVGFrame) - SVGFrame->NotifyCanvasTMChanged(); // XXX - kid = kid->GetNextSibling(); - } return NS_OK; } Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.h =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.h,v retrieving revision 1.1 diff -u -r1.1 nsSVGTSpanFrame.h --- /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.h 26 Aug 2005 02:49:51 -0000 1.1 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGTSpanFrame.h 29 Aug 2005 09:50:48 -0000 @@ -71,16 +71,13 @@ public nsISVGTextContainerFrame, public nsISVGGlyphFragmentNode, public nsISVGChildFrame, - public nsISVGContainerFrame, - public nsISVGValueObserver, - public nsSupportsWeakReference + public nsISVGContainerFrame { friend nsresult NS_NewSVGTSpanFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame* parentFrame, nsIFrame** aNewFrame); protected: nsSVGTSpanFrame(); - virtual ~nsSVGTSpanFrame(); virtual nsresult InitSVG(); // nsISupports interface: @@ -106,6 +103,10 @@ nsIFrame* aParent, nsStyleContext* aContext, nsIFrame* aPrevInFlow); + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); /** * Get the "type" of the frame @@ -121,12 +122,6 @@ } #endif - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - // nsISupportsWeakReference // implementation inherited from nsSupportsWeakReference Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGTextFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGTextFrame.cpp,v retrieving revision 1.20 diff -u -r1.20 nsSVGTextFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGTextFrame.cpp 26 Aug 2005 02:49:51 -0000 1.20 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGTextFrame.cpp 29 Aug 2005 09:50:51 -0000 @@ -41,9 +41,7 @@ #include "nsPresContext.h" #include "nsISVGTextFrame.h" #include "nsISVGRendererCanvas.h" -#include "nsWeakReference.h" #include "nsISVGValue.h" -#include "nsISVGValueObserver.h" #include "nsIDOMSVGTransformable.h" #include "nsIDOMSVGAnimTransformList.h" #include "nsIDOMSVGSVGElement.h" @@ -66,6 +64,8 @@ #include "nsLayoutAtoms.h" #include "nsISVGPathFlatten.h" #include "nsSVGUtils.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" typedef nsContainerFrame nsSVGTextFrameBase; @@ -73,17 +73,13 @@ public nsISVGTextFrame, // : nsISVGTextContainerFrame public nsISVGChildFrame, public nsISVGContainerFrame, - public nsISVGValueObserver, - public nsISVGTextContentMetrics, - public nsSupportsWeakReference + public nsISVGTextContentMetrics { friend nsresult NS_NewSVGTextFrame(nsIPresShell* aPresShell, nsIContent* aContent, nsIFrame** aNewFrame); protected: nsSVGTextFrame(); - virtual ~nsSVGTextFrame(); - nsresult Init(); // nsISupports interface: NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr); @@ -104,12 +100,6 @@ nsIFrame* aOldFrame, nsIFrame* aNewFrame); - NS_IMETHOD Init(nsPresContext* aPresContext, - nsIContent* aContent, - nsIFrame* aParent, - nsStyleContext* aContext, - nsIFrame* aPrevInFlow); - NS_IMETHOD AttributeChanged(nsIContent* aChild, PRInt32 aNameSpaceID, nsIAtom* aAttribute, @@ -131,12 +121,6 @@ } #endif - // nsISVGValueObserver - NS_IMETHOD WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType); - NS_IMETHOD DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType); - // nsISVGTextContentMetrics NS_IMETHOD GetExtentOfChar(PRUint32 charnum, nsIDOMSVGRect **_retval); @@ -232,68 +216,6 @@ { } -nsSVGTextFrame::~nsSVGTextFrame() -{ - // clean up our listener refs: - { - nsCOMPtr lengthList = GetX(); - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetY(); - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDx(); - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDy(); - NS_REMOVE_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr transformable = do_QueryInterface(mContent); - NS_ASSERTION(transformable, "wrong content element"); - nsCOMPtr transforms; - transformable->GetTransform(getter_AddRefs(transforms)); - NS_REMOVE_SVGVALUE_OBSERVER(transforms); - } -} - -nsresult nsSVGTextFrame::Init() -{ - // set us up as a listener for various -properties: - { - nsCOMPtr lengthList = GetX(); - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetY(); - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDx(); - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr lengthList = GetDy(); - NS_ADD_SVGVALUE_OBSERVER(lengthList); - } - - { - nsCOMPtr transforms = GetTransform(); - NS_ADD_SVGVALUE_OBSERVER(transforms); - } - - return NS_OK; -} //---------------------------------------------------------------------- // nsISupports methods @@ -303,29 +225,12 @@ NS_INTERFACE_MAP_ENTRY(nsISVGTextContainerFrame) NS_INTERFACE_MAP_ENTRY(nsISVGContainerFrame) NS_INTERFACE_MAP_ENTRY(nsISVGChildFrame) - NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference) - NS_INTERFACE_MAP_ENTRY(nsISVGValueObserver) NS_INTERFACE_MAP_ENTRY(nsISVGTextContentMetrics) NS_INTERFACE_MAP_END_INHERITING(nsSVGTextFrameBase) //---------------------------------------------------------------------- // nsIFrame methods -NS_IMETHODIMP -nsSVGTextFrame::Init(nsPresContext* aPresContext, - nsIContent* aContent, - nsIFrame* aParent, - nsStyleContext* aContext, - nsIFrame* aPrevInFlow) -{ - nsresult rv; - rv = nsSVGTextFrameBase::Init(aPresContext, aContent, aParent, - aContext, aPrevInFlow); - - Init(); - - return rv; -} NS_IMETHODIMP nsSVGTextFrame::AttributeChanged(nsIContent* aChild, @@ -333,15 +238,32 @@ nsIAtom* aAttribute, PRInt32 aModType) { - // we don't use this notification mechanism - -#ifdef DEBUG - printf("** nsSVGTextFrame::AttributeChanged("); - nsAutoString str; - aAttribute->ToString(str); - printf(NS_ConvertUTF16toUTF8(str).get()); - printf(")\n"); -#endif + if (aNameSpaceID != kNameSpaceID_None) + return NS_OK; + + if (aAttribute == nsSVGAtoms::transform) { + // transform has changed + + // make sure our cached transform matrix gets (lazily) updated + mCanvasTM = nsnull; + + nsIFrame* kid = mFrames.FirstChild(); + while (kid) { + nsISVGChildFrame* SVGFrame=0; + kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); + if (SVGFrame) + SVGFrame->NotifyCanvasTMChanged(); + kid = kid->GetNextSibling(); + } + } else if (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y || + aAttribute == nsSVGAtoms::dx || + aAttribute == nsSVGAtoms::dy) { + mPositioningDirty = PR_TRUE; + if (mMetricsState == unsuspended) { + UpdateGlyphPositioning(); + } + } return NS_OK; } @@ -447,47 +369,6 @@ } //---------------------------------------------------------------------- -// nsISVGValueObserver methods: - -NS_IMETHODIMP -nsSVGTextFrame::WillModifySVGObservable(nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - return NS_OK; -} - - -NS_IMETHODIMP -nsSVGTextFrame::DidModifySVGObservable (nsISVGValue* observable, - nsISVGValue::modificationType aModType) -{ - nsCOMPtr transforms = GetTransform(); - if (SameCOMIdentity(observable, transforms)) { - // transform has changed - - // make sure our cached transform matrix gets (lazily) updated - mCanvasTM = nsnull; - - nsIFrame* kid = mFrames.FirstChild(); - while (kid) { - nsISVGChildFrame* SVGFrame=0; - kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); - if (SVGFrame) - SVGFrame->NotifyCanvasTMChanged(); - kid = kid->GetNextSibling(); - } - } - else { - // x, y have changed - mPositioningDirty = PR_TRUE; - if (mMetricsState == unsuspended) { - UpdateGlyphPositioning(); - } - } - return NS_OK; -} - -//---------------------------------------------------------------------- // nsISVGTextContentMetrics NS_IMETHODIMP nsSVGTextFrame::GetExtentOfChar(PRUint32 charnum, nsIDOMSVGRect **_retval) Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGTextPathFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGTextPathFrame.cpp,v retrieving revision 1.1 diff -u -r1.1 nsSVGTextPathFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGTextPathFrame.cpp 26 Aug 2005 02:49:51 -0000 1.1 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGTextPathFrame.cpp 29 Aug 2005 09:50:51 -0000 @@ -79,7 +79,6 @@ NS_IMETHOD_(nsrefcnt) Release() { return NS_OK; } protected: - virtual ~nsSVGTextPathFrame(); virtual nsresult InitSVG(); NS_IMETHOD_(already_AddRefed) GetX(); @@ -130,11 +129,6 @@ return NS_OK; } -nsSVGTextPathFrame::~nsSVGTextPathFrame() -{ - NS_REMOVE_SVGVALUE_OBSERVER(mStartOffset); -} - nsresult nsSVGTextPathFrame::InitSVG() { @@ -147,7 +141,6 @@ NS_ASSERTION(mStartOffset, "no startOffset"); if (!mStartOffset) return NS_ERROR_FAILURE; - NS_ADD_SVGVALUE_OBSERVER(mStartOffset); } nsresult rv = nsSVGTextPathFrameBase::InitSVG(); Index: /cvsroot/mozilla/layout/svg/base/src/nsSVGUseFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/svg/base/src/nsSVGUseFrame.cpp,v retrieving revision 1.5 diff -u -r1.5 nsSVGUseFrame.cpp --- /cvsroot/mozilla/layout/svg/base/src/nsSVGUseFrame.cpp 27 Apr 2005 16:54:12 -0000 1.5 +++ /cvsroot/mozilla/layout/svg/base/src/nsSVGUseFrame.cpp 29 Aug 2005 09:50:53 -0000 @@ -44,6 +44,8 @@ #include "nsIAnonymousContentCreator.h" #include "nsSVGMatrix.h" #include "nsLayoutAtoms.h" +#include "nsINameSpaceManager.h" +#include "nsSVGAtoms.h" typedef nsSVGGFrame nsSVGUseFrameBase; @@ -64,6 +66,11 @@ NS_IMETHOD_(nsrefcnt) Release() { return NS_OK; } public: + // nsIFrame interface: + NS_IMETHOD AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType); // nsISVGContainerFrame interface: already_AddRefed GetCanvasTM(); @@ -134,9 +141,6 @@ length->GetAnimVal(getter_AddRefs(mX)); NS_ASSERTION(mX, "no x"); if (!mX) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mX); - if (value) - value->AddObserver(this); // nsISVGValueObserver } { @@ -145,9 +149,6 @@ length->GetAnimVal(getter_AddRefs(mY)); NS_ASSERTION(mY, "no y"); if (!mY) return NS_ERROR_FAILURE; - nsCOMPtr value = do_QueryInterface(mY); - if (value) - value->AddObserver(this); } return NS_OK; @@ -167,6 +168,36 @@ NS_INTERFACE_MAP_END_INHERITING(nsSVGUseFrameBase) //---------------------------------------------------------------------- +// nsIFrame methods: + +NS_IMETHODIMP +nsSVGUseFrame::AttributeChanged(nsIContent* aChild, + PRInt32 aNameSpaceID, + nsIAtom* aAttribute, + PRInt32 aModType) +{ + if (aNameSpaceID == kNameSpaceID_None && + (aAttribute == nsSVGAtoms::x || + aAttribute == nsSVGAtoms::y)) { + // make sure our cached transform matrix gets (lazily) updated + mCanvasTM = nsnull; + + for (nsIFrame* kid = mFrames.FirstChild(); kid; + kid = kid->GetNextSibling()) { + nsISVGChildFrame* SVGFrame=nsnull; + kid->QueryInterface(NS_GET_IID(nsISVGChildFrame),(void**)&SVGFrame); + if (SVGFrame) + SVGFrame->NotifyCanvasTMChanged(); + } + return NS_OK; + } + + return nsSVGGFrame::AttributeChanged(aChild, aNameSpaceID, + aAttribute, aModType); +} + + +//---------------------------------------------------------------------- // nsISVGContainerFrame methods: already_AddRefed