diff options
| author | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-30 23:59:12 +0000 |
|---|---|---|
| committer | graydon <graydon@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-30 23:59:12 +0000 |
| commit | 6598d56fcd3c34ff2ffa56e6ba73665e0db896c7 (patch) | |
| tree | 35ad0bbb429ac9e5e658fea57b904ce331b0a4dd /libjava/gnu/java/awt/peer/gtk | |
| parent | 8e0d64c61b8b7c63bf36b8c94f87672ffd198c31 (diff) | |
| download | ppe42-gcc-6598d56fcd3c34ff2ffa56e6ba73665e0db896c7.tar.gz ppe42-gcc-6598d56fcd3c34ff2ffa56e6ba73665e0db896c7.zip | |
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GdkGraphics.java (drawImage variants):
Update image observer.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java (createImage):
Start image production.
* gnu/java/awt/peer/gtk/GtkFramePeer.java (setMenuBar): Protect
against negative menu bar widths.
(setBounds): Likewise.
(postConfigureEvent): Likewise.
* gnu/java/awt/peer/gtk/GtkImage.java (imageComplete): Don't
remove consumer unless only a single frame has completed.
* gnu/java/awt/peer/gtk/GtkImagePainter.java (GtkImagePainter):
Add observer parameter.
(setPixels): Update image observer.
(imageComplete): Likewise.
* java/applet/Applet.java (width): New field.
(height): Likewise.
(setStub): Set size if width or height field has been set.
(resize): If stub is null save width and height values.
* java/awt/Component.java (reshape): Protect against null
parent.
* java/awt/image/MemoryImageSource.java
(MemoryImageSource(int,int,ColorModel,byte[],int,int)):
Document.
(MemoryImageSource(int,int,ColorModel,int[],int,int)):
Likewise.
(MemoryImageSource(int,int,ColorModel,byte[],int,int,Hashtable)):
Reference pixel array directly, rather than creating a local
copy.
(MemoryImageSource(int,int,ColorModel,int[],int,int,Hashtable)):
Likewise.
(newPixels(int,int,int,int)): Fix for loop and array copy
bounds.
(newPixels(int,int,int,int,boolean)): Likewise.
(startProduction): If animated call imageComplete with
SINGLEFRAME.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c: Uncomment
gdk_flush lines.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImagePainter.c
(drawPixels): Return if g is null or g->drawable is not a gdk
drawable.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/DefaultSingleSelectionModel.java,
javax/swing/JPasswordField.java,
javax/swing/tree/AbstractLayoutCache.java:
Reformatted and javadocs cleaned up.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/Component.java:
Fixed argument names to match javadocs.
(setFont): Rewritten set property first and then fire event.
(setLocale): Likewise.
* javax/swing/text/JTextComponent.java
(setEditable): Likewise.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Button.java
(AccessibleAWTButton.getAccessibleActionDescription): Explain the
source of 'click'.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Checkbox.java: Remove stub comments.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Button.java
(AccessibleAWTButton.getAccessibleActionDescription): Return
'click'.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/CardLayout.java:
Made some constants static.
(serialVersionUID): Made private.
(addLayoutComponent): Simplified code.
* java/awt/event/InputEvent.java
(getModifiersEx): Added missing @param tag.
* java/awt/image/RGBImageFilter.java
(filterRGBPixels): Reformatted, removed wrong @param tag.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/text/FieldView.java,
javax/swing/text/JTextComponent.java:
Removed debug code.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/BorderFactory.java
(BorderFactory): Added private constructor.
* javax/swing/SwingUtilities.java
(SwingUtilities): Likewise.
(computeStringWidth): New method.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/color/ICC_Profile.java
(icSigNamedColorTag): Removed.
* java/awt/datatransfer/DataFlavor.java
(isMimeTypeEqual): Made final.
* java/awt/image/AffineTransformOp.java:
Reworked javadocs.
(TYPE_BICUBIC): Added @since tag.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Checkbox.java (AccessibleAWTCheckBox): Remove todo
comments.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Checkbox.java (itemStateChanged): Implement function.
(getAccessibleContext): Add AccessibleAWTCheckBox to item listeners.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/Polygon.java (contains): Reimplemented.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/print/PrinterJob.java: Reformatted.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/image/AffineTransformOp.java,
java/awt/image/ColorConvertOp.java,
java/awt/image/LookupOp.java,
java/awt/image/RescaleOp.java:
Added final keywords where they belong.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/CardLayout.java,
java/awt/Component.java,
java/awt/Font.java,
java/awt/image/SinglePixelPackedSampleModel.java:
Fixed javadocs and argument names all over.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/image/DataBufferShort.java: Fixed file header.
* java/awt/image/DataBufferUShort.java: Likewise.
(DataBufferUShort): Throw NullPointerException if dataArray is null.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/Arc2D.java
(setAngleStart): Corrected (wrong sign on atan2 y parameter).
(setAngles): Likewise.
(containsAngle): Return false on zero extent, don't include
final angle.
(contains): Treat OPEN-type arcs like CHORD ones, not as PIE
ones.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/AffineTransform.java,
(inverseTransform): Fixed bug and simplified code.
(createTransformedShape): Return null on null parameter.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/color/ICC_ColorSpace.java,
java/awt/color/ICC_Profile.java,
java/awt/color/ICC_ProfileGray.java,
java/awt/color/ICC_ProfileRGB.java:
Re-indent copyright header to be standardish.
* java/awt/datatransfer/StringSelection.java:
Reformatted.
* java/awt/geom/Area.java
(EPSILON): Made static.
(RS_EPSILON): Likewise.
(PE_EPSILON): Likewide.
2004-11-30 Sven de Marothy <sven@physto.se>
* javax/swing/SwingUtilities.java:
(computeDifference): Implemented
(computeIntersection): Likewise
(computeUnion): Likewise
(isRectangleContainingRectangle): Likewise
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/BasicStroke.java,
java/awt/Button.java,
java/awt/Canvas.java,
java/awt/CheckboxMenuItem.java,
java/awt/Container.java,
java/awt/EventQueue.java,
java/awt/FileDialog.java,
java/awt/FlowLayout.java,
java/awt/FontMetrics.java,
java/awt/Graphics.java,
java/awt/GridLayout.java,
java/awt/KeyboardFocusManager.java,
java/awt/Label.java,
java/awt/LayoutManager2.java,
java/awt/List.java,
java/awt/MenuBar.java,
java/awt/Scrollbar.java,
java/awt/Toolkit.java,
java/awt/Window.java,
java/awt/datatransfer/DataFlavor.java,
java/awt/datatransfer/FlavorTable.java,
java/awt/event/ActionListener.java,
java/awt/event/HierarchyBoundsAdapter.java,
java/awt/geom/Arc2D.java,
java/awt/geom/Rectangle2D.java,
java/awt/geom/RectangularShape.java,
java/awt/im/spi/InputMethod.java,
java/awt/image/ByteLookupTable.java,
java/awt/image/ColorModel.java,
java/awt/image/DirectColorModel.java,
java/awt/image/ShortLookupTable.java,
java/awt/print/Book.java:
Fixed javadocs and method argument names all over.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkFontPeer.java
(buildString): Optimise String building.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/TextArea.java (AccessibleAWTTextArea,
getAccessibleContext): Implement.
* java/awt/TextField.java (AccessibleAWTTextField,
getAccessibleContext): Implement.
2004-11-30 Tom Tromey <tromey@redhat.com>
* Makefile.in: Rebuilt.
* Makefile.am (jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.lo):
Fixed typo.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Menu.java (AccessibleAWTMenu, getAccessibleContext):
Implement.
* java/awt/PopupMenu.java (AccessibleAWTMenu, getAccessibleContext):
Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/print/PrinterJob.java (lookupPrintServices,
getPrintService, setPrintService): Implement.
(lookupStreamPrintServices): Add commented out implementation.
(printer): New field.
2004-11-30 Mark Wielaard <mark@klomp.org>
* javax/swing/ToolTipManager.java (mouseMoved): Set currentComponent
when not yet set.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/GeneralPath.java (evaluateCrossings):
Fixed epsilon value, should always be nonzero.
2004-11-30 Paul Jenner <psj.home@ntlworld.com>
* java/awt/image/Raster.java
(createPackedRaster): Implemented.
2004-11-30 Graydon Hoare <graydon@redhat.com>
* javax/swing/plaf/basic/BasicTextUI.java:
Listen to focus events, indicate focus via caret.
* javax/swing/text/GapContent.java (getString): Return substring.
* javax/swing/text/PlainDocument.java (reindex): New method.
(createDefaultRoot): Call it.
(insertUpdate): Likewise.
(removeUpdate): Likewise.
* javax/swing/text/Utilities.java (drawTabbedText): Always advance
on tab and newline, even if no painting happens.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am: List peer JNI header: Java source file
dependencies explicitly. Likewise for JNI .lo: JNI header
dependencies.
* Makefile.in: Regenerate.
2004-11-30 Graydon Hoare <graydon@redhat.com>
* Makefile.am: Add entry for BasicTextPaneUI.java
* Makefile.in: Regenerate.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(GdkGraphics2D): Set clip after transform.
(drawImage): Protect against null image.
* gnu/java/awt/peer/gtk/GtkFramePeer.java
(setIconImage): Protect against non-GtkImage args.
* gnu/java/awt/peer/gtk/GtkToolkit.java
(checkImage): Protect against non-GtkImage args.
* java/awt/print/PrinterJob.java:
(print): Add variant taking PrintRequestAttributeSet.
(printDialog): Likewise.
* javax/swing/JComponent.java:
(transferHandler): New field.
(getComponentGraphics): Build new Graphics for each sub-paint.
(getTransferHandler): New method.
(setTransferHandler): New method.
* javax/swing/JDesktopPane.java
(setDragMode): Force LIVE_DRAG_MODE.
* javax/swing/JMenuItem.java
(menuSelectionChanged): Protect against null parent.
* javax/swing/JTable.java (setDefaultRenderer): New method.
* javax/swing/JTree.java: Get basic ctors and UI working.
* javax/swing/JViewport.java (JViewport): Set scroll mode.
* javax/swing/RepaintManager.java
(addDirtyRegion): Skip empty regions.
* javax/swing/ScrollPaneLayout.java (minimumLayoutSize): Do not
bound scrollpane minimum by central view minimum.
* javax/swing/ToolTipManager.java
(showTip): Guard against null component.
* javax/swing/TransferHandler.java: Stub out.
* javax/swing/plaf/basic/BasicLookAndFeel.java:
Add entry for TextPaneUI, change Tree icons to pngs.
* javax/swing/plaf/basic/BasicMenuItemUI.java:
(installDefaults): Set text position and alignment.
(paintMenuItem): Layout icon with normal compound function.
* javax/swing/plaf/basic/BasicTableHeaderUI.java:
(getMaximumSize): Delete.
(getMinimumSize): Delete.
(getPreferredSize): Use column model's total width.
* javax/swing/plaf/basic/BasicTextPaneUI.java: New file.
* javax/swing/plaf/basic/BasicTextUI.java
(modelChanged): Make resilient against nulls.
* javax/swing/plaf/basic/BasicTreeUI.java:
Add some simplistic config / painting functions.
* javax/swing/plaf/basic/BasicViewportUI.java
(paintSimple): Add new non-backingstore paint mode.
(paintBackingStore): Split out backing store code.
(paint): Switch on painting mode.
* javax/swing/text/SimpleAttributeSet.java
(SimpleAttributeSet): Resist nulls.
* javax/swing/tree/DefaultTreeCellRenderer.java: Implement.
* javax/swing/tree/DefaultTreeModel.java: Partially implement.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c (setFont):
Set pango context's description and language.
2004-11-30 Mark Wielaard <mark@klomp.org>
* java/awt/image/LookupOp.java: Comments and indentation fixes.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Checkbox.java (AccessibleAWTCheckBox): Implement.
(getAccessibleContext): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/TextComponent.java (AccessibleAWTTextComponent):
Implement.
(getIndexAtPoint, getCharacterBounds): New methods.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Button.java (AccessibleAWTButton): Implement.
2004-11-30 Mark Wielaard <mark@klomp.org>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(filenameFilterCallback): Made static.
2004-11-30 Michael Koch <konqueror@gmx.de>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(cairoShowGlyphs) Removed.
2004-11-30 Sven de Marothy <sven@physto.se>
* gnu/java/awt/color/RgbProfileConverter.java (RgbProfileConverter):
Don't invert matrix when reverse CLUT is available.
* gnu/java/awt/color/LinearRGBConverter.java: Documentation update.
* java/awt/color/ICC_ColorSpace.java: Likewise.
* java/awt/color/ICC_Profile.java: Likewise.
* java/awt/color/ICC_ProfileGray.java: Likewise.
* java/awt/color/ICC_ProfileRGB.java: Likewise.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/MenuItem.java (AccessibleAWTMenuItem): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/Choice.java (AccessibleAWTChoice): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/BandedSampleModel.java (scanlineStride): Remove
field hiding ComponentSampleModel.scanlineStride.
2004-11-30 Noa Resare <noa@resare.com>
* java/awt/geom/GeneralPath.java (currentSegment):
Fix typo in transform.transform() invocation.
2004-11-30 Sven de Marothy <sven@physto.se>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java
(createImage): Created bitmap should be filled with bg color
2004-11-30 Noa Resare <noa@resare.com>
* java/awt/Choice.java (add):
Implement correct selection behavior when peer == null.
(insert): Likewise.
(remove): Likewise.
2004-11-30 Mark Wielaard <mark@klomp.org>
* gnu/java/awt/peer/gtk/GtkChoicePeer.java (GtkChoicePeer):
Call select() when Choice has a selected item.
2004-11-30 Michael Koch <address@bogus.example.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImagePainter.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c:
Fixed method names to start at begin of line. This is desired by GNU
coding style guide.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java
(gtkWidgetSetVisible): Unused. Removed.
(connectJObject): Likewise.
* gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
(gtkScrolledWindowSetScrollPosition): Commented out.
2004-11-30 Mark Wielaard <mark@klomp.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c
(Java_gnu_java_awt_peer_gtk_GdkTextLayout_setText): Installed and
renamed from Java_gnu_java_awt_peer_gtk_GdkGlyphVector_setText.
2004-11-30 Mark Wielaard <mark@klomp.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c
(Java_gnu_java_awt_peer_gtk_GdkGlyphVector_setText): Removed.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(init_dpi_conversion_factor): Correct prototype.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/image/ConvolveOp.java: Added missing
copyright notice.
2004-11-30 Robert Schuster <theBohemian@gmx.net>
Fixes bug #10908
* gnu/java/beans/IntrospectionIncubator.java:
(addMethod): static methods are discarded now, too.
2004-11-30 Mark Wielaard <mark@klomp.org>
* Makefile.am (awt_java_source_files): Add new gnu/java/awt/color
java source files.
* Makefile.in: Regenerated.
2004-11-30 Sven de Marothy <sven@physto.se>
* gnu/java/awt/color/CieXyzConverter.java,
gnu/java/awt/color/GrayScaleConverter.java,
gnu/java/awt/color/SrgbConverter.java,
gnu/java/awt/color/ClutProfileConverter.java,
gnu/java/awt/color/LinearRGBConverter.java,
gnu/java/awt/color/TagEntry.java,
gnu/java/awt/color/ColorLookUpTable.java,
gnu/java/awt/color/ProfileHeader.java,
gnu/java/awt/color/ToneReproductionCurve.java,
gnu/java/awt/color/ColorSpaceConverter.java,
gnu/java/awt/color/PyccConverter.java,
gnu/java/awt/color/GrayProfileConverter.java,
gnu/java/awt/color/RgbProfileConverter.java:
New files.
* java/awt/color/ICC_ColorSpace.java,
java/awt/color/ICC_Profile.java,
java/awt/color/ICC_ProfileGray.java,
java/awt/color/ICC_ProfileRGB.java:
Implemented (sans PhotoYCC color space).
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/AffineTransformOp.java (filter): Implement
bilinear interpolation for Rasters.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java (IndexColorModel): Actually
use the provided colormap. Throw documented exceptions. Document
exceptions.
2004-11-30 Paul Jenner <psj.home@ntlworld.com>
* java/awt/image/IndexColorModel.java (IndexColorModel): Fix
constructor.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/AffineTransformOp.java: Add TYPE_BICUBIC.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/AffineTransformOp.java (filter): Implement Raster
filtering.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ComponentSampleModel.java (getDataElements,
setDataElements): Implement SHORT, FLOAT, and INT transfer types.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* java/awt/Font.java (name): New field.
(size): Likewise.
(style): Likewise.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/Raster.java (createBandedRaster): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ConvolveOp.java: New class.
* Makefile.am: Add ConvolveOp.
* Makefile.in: Regenerate.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/RescaleOp.java (BandCombineOp, ColorConvertOp,
LookupOp, RescaleOp): Fix loop bounds.
2004-11-30 jlquinn <jlquinn@optonline.net>
* Makefile.am: Fix typo in BandCombineOp.
* Makefile.in: Regenerate.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/BandCombineOp.java: New class.
* Makefile.am: Add BandCombineOp.
* Makefile.in: Regenerate.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/LookupOp.java: New class.
* Makefile.am: Add LookupOp.
* Makefile.in: Regenerate.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/SampleModel.java (createSubsetSampleModel): Add
javadocs.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ColorModel.java (cloneColorModel): Fix line
wrap. Use Boolean.valueOf.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(releasePeerGraphicsResource): Fixed typo in method name.
* gnu/java/awt/peer/gtk/GdkFontPeer.java
(finalize): Fixed typo in releasePeerGraphicsResource.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/font/TextAttribute.java
(RUN_DIRECTION_LTR): Initialie with static value instead of
calculating it.
(RUN_DIRECTION_RTL): Likewise.
(STRIKETHROUGH_ON): Likewise.
(SWAP_COLORS_ON): Likewise.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ColorConvertOp.java: New class.
* java/awt/image/ColorModel.java (cloneColorModel): New method.
* Makefile.am: Add ColorConvertOp.
* Makefile.in: Regenerate.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* java/awt/DefaultKeyboardFocusManager.java (dispatchEvent):
Track Window focus owner on FOCUS_GAINED events.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
(nativeSetIconImage): Rename to nativeSetIconImageFromDecoder.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c
(Java_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_nativeRun):
Fix pointer warning.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFilenameFilter):
Fix pointer warning.
* jni/gtk-peer/gtkpeer.h: Introduce widget_union to fix type punned
warnings.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
(Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect): Use widget_union
to fix type punned pointer warning.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c (pre_event_handler):
Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(window_get_new_state): Introduce unions to fix warnings as above.
(window_property_changed_cb): Likewise.
(window_active_state_change_cb): Mark unused variables unused.
(window_focus_state_change_cb): Likewise.
(window_focus_in_cb): Likewise.
(window_focus_out_cb): Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
(Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Convert
PangoFontMap correctly with PANGO_FT2FONT_MAP macro.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JMenuBar.java
(updateUI): Simplified.
* javax/swing/tree/DefaultTreeSelectionModel.java:
Reorganized import statements.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/font/TextAttribute.java,
javax/swing/JComponent.java,
javax/swing/JInternalFrame.java,
javax/swing/table/TableColumn.java,
javax/swing/text/StyleConstants.java:
Replaced "new Boolean(boolean)" with "Boolean.valueOf(boolean)".
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/tree/DefaultTreeCellEditor.java,
javax/swing/tree/DefaultTreeModel.java,
javax/swing/tree/DefaultTreeSelectionModel.java:
Jalopied.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/tree/DefaultTreeCellEditor.java
(EditorContainer.EditorContainer): Fixed arguments.
(EditorContainer.EditorContainer): New method.
(DefaultTextField.DefaultTextField): Fixed arguments, implemented.
(DefaultTextField.getBorder): Implemented.
(listenerList): New field.
(addCellEditorListener): Implemented.
(removeCellEditorListener): Implemented.
(getCellEditorListeners): New method.
* javax/swing/tree/DefaultTreeModel.java
(addTreeModelListener): Fixed javadoc.
(removeTreeModelListener): Likewise.
(getTreeModelListeners): New method.
(fireTreeNodesChanged): Implemented.
(fireTreeNodesInserted): Likewise.
(fireTreeNodesRemoved): Likewise.
(fireTreeStructureChanged): Likewise.
(getListeners): Fixed javadoc.
* javax/swing/tree/DefaultTreeSelectionModel.java
(addTreeSelectionListener): Implemented.
(removeTreeSelectionListener): Likewise.
(fireValueChanged): Likewise.
(getListeners): Likewise.
(addPropertyChangeListener): Likewise.
(removePropertyChangeListener): Likewise.
(getTreeSelectionListeners): New method.
(getPropertyChangeListeners): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/basic/BasicScrollBarUI.java
(maximumThumbSize): Removed static keyword.
(minimumThumbSize): Likewise.
* javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
(CloseAction): Made public.
(IconifyAction): Likewise.
(MaximizeAction): Likewise.
(MoveAction): Likewise.
(RestoreAction): Likewise.
(SizeAction): Likewise.
(SystemMenuBar): Likewise.
* javax/swing/plaf/basic/BasicSliderUI.java
(TrackListener): Likewise.
* javax/swing/plaf/basic/BasicSplitPaneUI.java
(KeyboardDownRightHandler): Likewise.
(KeyboardEndHandler): Likewise.
(KeyboardHomeHandler): Likewise.
(KeyboardResizeToggleHandler): Likewise.
(KeyboardUpLeftHandler): Likewise.
(PropertyHandler): Likewise.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(PropertyChangeHandler): Likewise.
(TabSelectionHandler): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/text/JTextComponent.java
(getKeymap): Made public.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JEditorPane.java
(getStream): Throws IOException.
(read): Likewise.
* javax/swing/JRootPane.java
(createContentPane): Fixed return type.
* javax/swing/JSpinner.java
(commitEdit): Throws ParseException.
* javax/swing/plaf/metal/MetalLookAndFeel.java
(serialVersionUID): New field.
* javax/swing/table/TableColumn.java
(resizedPostingDisableCount): Added @deprecated tag.
(disableResizedPosting): Likewise.
(enableResizedPosting): Likewise.
* javax/swing/text/Document.java
(TitleProperty): Fixed value.
* javax/swing/tree/TreeCellEditor.java
(TreeCellEditor): Extends CellEditor.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JWindow.java
javax/swing/SpinnerModel.java
javax/swing/Timer.java
javax/swing/event/MenuKeyEvent.java
javax/swing/plaf/basic/BasicButtonUI.java
javax/swing/plaf/basic/BasicIconFactory.java
javax/swing/plaf/basic/BasicTabbedPaneUI.java
javax/swing/text/AttributeSet.java
javax/swing/text/Highlighter.java
javax/swing/text/StyleConstants.java
javax/swing/tree/TreeCellEditor.java:
Removed redundant and reordered modifiers.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/plaf/basic/BasicToolTipUI.java:
Reformatted copyright header.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractAction.java,
javax/swing/AbstractButton.java,
javax/swing/AbstractCellEditor.java,
javax/swing/AbstractListModel.java,
javax/swing/AbstractSpinnerModel.java,
javax/swing/ActionMap.java,
javax/swing/BorderFactory.java,
javax/swing/Box.java,
javax/swing/ButtonModel.java,
javax/swing/CellEditor.java,
javax/swing/CellRendererPane.java,
javax/swing/DefaultBoundedRangeModel.java,
javax/swing/DefaultButtonModel.java,
javax/swing/DefaultCellEditor.java,
javax/swing/DefaultDesktopManager.java,
javax/swing/DefaultListCellRenderer.java,
javax/swing/DefaultListSelectionModel.java,
javax/swing/DefaultSingleSelectionModel.java,
javax/swing/GrayFilter.java,
javax/swing/InputMap.java,
javax/swing/JApplet.java,
javax/swing/JCheckBoxMenuItem.java,
javax/swing/JColorChooser.java,
javax/swing/JComboBox.java,
javax/swing/JComponent.java,
javax/swing/JDesktopPane.java,
javax/swing/JDialog.java,
javax/swing/JEditorPane.java,
javax/swing/JFileChooser.java,
javax/swing/JFormattedTextField.java,
javax/swing/JFrame.java,
javax/swing/JInternalFrame.java,
javax/swing/JLabel.java,
javax/swing/JLayeredPane.java,
javax/swing/JList.java,
javax/swing/JMenu.java,
javax/swing/JMenuBar.java,
javax/swing/JMenuItem.java,
javax/swing/JOptionPane.java,
javax/swing/JPanel.java,
javax/swing/JPasswordField.java,
javax/swing/JPopupMenu.java,
javax/swing/JRadioButtonMenuItem.java,
javax/swing/JRootPane.java,
javax/swing/JSpinner.java,
javax/swing/JSplitPane.java,
javax/swing/JTabbedPane.java,
javax/swing/JTable.java,
javax/swing/JTextArea.java,
javax/swing/JTextPane.java,
javax/swing/JToggleButton.java,
javax/swing/JToolBar.java,
javax/swing/JToolTip.java,
javax/swing/JTree.java,
javax/swing/JViewport.java,
javax/swing/ListModel.java,
javax/swing/LookAndFeel.java,
javax/swing/MenuSelectionManager.java,
javax/swing/ProgressMonitorInputStream.java,
javax/swing/RepaintManager.java,
javax/swing/RootPaneContainer.java,
javax/swing/ScrollPaneLayout.java,
javax/swing/SpringLayout.java,
javax/swing/SwingUtilities.java,
javax/swing/Timer.java,
javax/swing/ToolTipManager.java,
javax/swing/UIDefaults.java,
javax/swing/UIManager.java,
javax/swing/border/MatteBorder.java,
javax/swing/colorchooser/AbstractColorChooserPanel.java,
javax/swing/colorchooser/ColorSelectionModel.java,
javax/swing/colorchooser/DefaultColorSelectionModel.java,
javax/swing/colorchooser/DefaultHSBChooserPanel.java,
javax/swing/colorchooser/DefaultPreviewPanel.java,
javax/swing/colorchooser/DefaultRGBChooserPanel.java,
javax/swing/colorchooser/DefaultSwatchChooserPanel.java,
javax/swing/event/AncestorEvent.java,
javax/swing/event/HyperlinkEvent.java,
javax/swing/event/InternalFrameEvent.java,
javax/swing/event/MenuDragMouseEvent.java,
javax/swing/event/TableColumnModelEvent.java,
javax/swing/event/TableModelEvent.java,
javax/swing/event/TreeExpansionEvent.java,
javax/swing/event/TreeModelEvent.java,
javax/swing/event/TreeSelectionEvent.java,
javax/swing/event/TreeWillExpandListener.java,
javax/swing/event/UndoableEditEvent.java,
javax/swing/filechooser/FileView.java,
javax/swing/plaf/BorderUIResource.java,
javax/swing/plaf/ComponentUI.java,
javax/swing/plaf/FileChooserUI.java,
javax/swing/plaf/IconUIResource.java,
javax/swing/plaf/ListUI.java,
javax/swing/plaf/PopupMenuUI.java,
javax/swing/plaf/SplitPaneUI.java,
javax/swing/plaf/TabbedPaneUI.java,
javax/swing/plaf/TextUI.java,
javax/swing/plaf/TreeUI.java,
javax/swing/plaf/basic/BasicArrowButton.java,
javax/swing/plaf/basic/BasicBorders.java,
javax/swing/plaf/basic/BasicButtonUI.java,
javax/swing/plaf/basic/BasicCheckBoxMenuItemUI.java,
javax/swing/plaf/basic/BasicColorChooserUI.java,
javax/swing/plaf/basic/BasicComboBoxEditor.java,
javax/swing/plaf/basic/BasicComboBoxRenderer.java,
javax/swing/plaf/basic/BasicComboBoxUI.java,
javax/swing/plaf/basic/BasicComboPopup.java,
javax/swing/plaf/basic/BasicDesktopIconUI.java,
javax/swing/plaf/basic/BasicDesktopPaneUI.java,
javax/swing/plaf/basic/BasicIconFactory.java,
javax/swing/plaf/basic/BasicInternalFrameTitlePane.java,
javax/swing/plaf/basic/BasicInternalFrameUI.java,
javax/swing/plaf/basic/BasicListUI.java,
javax/swing/plaf/basic/BasicLookAndFeel.java,
javax/swing/plaf/basic/BasicMenuBarUI.java,
javax/swing/plaf/basic/BasicMenuItemUI.java,
javax/swing/plaf/basic/BasicMenuUI.java,
javax/swing/plaf/basic/BasicOptionPaneUI.java,
javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java,
javax/swing/plaf/basic/BasicPopupMenuUI.java,
javax/swing/plaf/basic/BasicProgressBarUI.java,
javax/swing/plaf/basic/BasicRadioButtonMenuItemUI.java,
javax/swing/plaf/basic/BasicRootPaneUI.java,
javax/swing/plaf/basic/BasicScrollBarUI.java,
javax/swing/plaf/basic/BasicSeparatorUI.java,
javax/swing/plaf/basic/BasicSliderUI.java,
javax/swing/plaf/basic/BasicSpinnerUI.java,
javax/swing/plaf/basic/BasicSplitPaneDivider.java,
javax/swing/plaf/basic/BasicSplitPaneUI.java,
javax/swing/plaf/basic/BasicTabbedPaneUI.java,
javax/swing/plaf/basic/BasicTableHeaderUI.java,
javax/swing/plaf/basic/BasicTableUI.java,
javax/swing/plaf/basic/BasicTextAreaUI.java,
javax/swing/plaf/basic/BasicTextFieldUI.java,
javax/swing/plaf/basic/BasicTextUI.java,
javax/swing/plaf/basic/BasicToolBarSeparatorUI.java,
javax/swing/plaf/basic/BasicToolBarUI.java,
javax/swing/plaf/basic/BasicToolTipUI.java,
javax/swing/plaf/basic/BasicTreeUI.java,
javax/swing/plaf/basic/BasicViewportUI.java,
javax/swing/plaf/basic/ComboPopup.java,
javax/swing/table/AbstractTableModel.java,
javax/swing/table/DefaultTableCellRenderer.java,
javax/swing/table/DefaultTableColumnModel.java,
javax/swing/table/DefaultTableModel.java,
javax/swing/table/JTableHeader.java,
javax/swing/table/TableCellEditor.java,
javax/swing/table/TableCellRenderer.java,
javax/swing/table/TableColumn.java,
javax/swing/table/TableColumnModel.java,
javax/swing/text/AbstractDocument.java,
javax/swing/text/Caret.java,
javax/swing/text/DefaultCaret.java,
javax/swing/text/DefaultEditorKit.java,
javax/swing/text/DefaultHighlighter.java,
javax/swing/text/EditorKit.java,
javax/swing/text/JTextComponent.java,
javax/swing/text/LayeredHighlighter.java,
javax/swing/text/PasswordView.java,
javax/swing/text/SimpleAttributeSet.java,
javax/swing/text/StyleConstants.java,
javax/swing/text/StyleContext.java,
javax/swing/text/StyledEditorKit.java,
javax/swing/text/TextAction.java,
javax/swing/text/View.java,
javax/swing/tree/AbstractLayoutCache.java,
javax/swing/tree/DefaultTreeCellRenderer.java,
javax/swing/tree/DefaultTreeModel.java,
javax/swing/tree/DefaultTreeSelectionModel.java,
javax/swing/tree/FixedHeightLayoutCache.java,
javax/swing/tree/TreeCellRenderer.java,
javax/swing/tree/TreeSelectionModel.java,
javax/swing/tree/VariableHeightLayoutCache.java,
javax/swing/undo/AbstractUndoableEdit.java,
javax/swing/undo/UndoableEditSupport.java:
Imports cleaned up.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/Container.java,
java/awt/Font.java,
java/awt/font/TextLayout.java:
Imports cleaned up.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractButton.java
(getLabel): Added @deprecated tag.
(setLabel): Likewise.
* javax/swing/FocusManager.java
(disableSwingFocusManager): Likewise.
(isFocusManagerEnabled): Likewise.
* javax/swing/JComponent.java
(isManagingFocus): Added version to @deprecated tag.
(getNextFocusableComponent): Moved @deprecated tag to bottom of
javadoc.
(getConditionForKeyStroke): Likewise.
(getActionForKeyStroke): Likewise.
* javax/swing/JDesktopPane.java
(LIVE_DRAG_MODE): Added @specnote tag.
(OUTLINE_DRAG_MODE): Likewise.
* javax/swing/JInternalFrame.java
(MENU_BAR_PROPERTY): Fixed value.
(getMenuBar): Added @deprecated tag.
(setMenuBar): Likewise.
* javax/swing/JViewport.java
(isBackingStoreEnabled): Likewise.
(setBackingStoreEnabled): Likewise.
* javax/swing/plaf/basic/BasicDesktopPaneUI.java
(closeKey): Likewise.
(maximizeKey): Likewise.
(minimizeKey): Likewise.
(navigateKey): Likewise.
(navigateKey2): Likewise.
* javax/swing/plaf/basic/BasicInternalFrameUI.java
(openMenuKey): Likewise.
* javax/swing/plaf/basic/BasicSplitPaneUI.java
(keyboardDownRightListener): Likewise.
(keyboardEndListener): Likewise.
(keyboardHomeListener): Likewise.
(keyboardResizeToggleListener): Likewise.
(keyboardUpLeftListener): Likewise.
(dividerResizeToggleKey): Likewise.
(downKey): Likewise.
(endKey): Likewise.
(homeKey): Likewise.
(leftKey): Likewise.
(rightKey): Likewise.
(upKey): Likewise.
(createKeyboardUpLeftListener): Likewise.
(createKeyboardDownRightListener): Likewise.
(createKeyboardHomeListener): Likewise.
(createKeyboardEndListener): Likewise.
(createKeyboardResizeToggleListener): Likewise.
(getDividerBorderSize): Likewise.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java
(downKey): Likewise.
(leftKey): Likewise.
(rightKey): Likewise.
(upKey): Likewise.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
(Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create): Use the
GTK_TEXT_VIEW macro.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(connect_awt_hook_cb): Mark unused variable unused.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c (selection_get):
Do the cast right.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
(Java_gnu_java_awt_peer_gtk_GtkChoicePeer_create): According to
the gtk API gtk_combo_box_new_text actually returns a GtkWidget.
Remove unused var menu.
(selection_changed): Remove unused value.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(Java_gnu_java_awt_peer_gtk_GtkButtonPeer_setNativeBounds): Fix pointer
warning with using an intermediate variable.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c
(area_updated): Fix unused var warning for BE archs.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
(Java_gnu_java_awt_peer_gtk_GdkGraphics_connectSignals): Remove unused
var.
(realize_cb): Mark unused variable unused.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c
(seek_glyphstring_idx): Fix a C90 warning.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c
(Java_gnu_java_awt_peer_gtk_GThreadNativeMethodRunner_nativeRun):
Mark unused arguments unused.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c
(Java_gnu_java_awt_peer_gtk_GdkGlyphVector_initState),
(Java_gnu_java_awt_peer_gtk_GdkGlyphVector_setGlyphCodes),
(Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphCharIndex),
(Java_gnu_java_awt_peer_gtk_GdkGlyphVector_glyphIsHorizontal):
Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c
(Java_gnu_java_awt_peer_gtk_GdkFontMetrics_getPeerFontMetrics),
(Java_gnu_java_awt_peer_gtk_GdkFontMetrics_getPeerTextMetrics):
Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_nativeSetFilenameFilter):
Likewise.
(filenameFilterCallback): Remove unused var.
(handle_response): Declare str_fileName and remove last else statement.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c:
New File.
(nativeGetNumFontsFamilies) New function.
(nativeGetFontFamilies) Likewise.
* gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
(getAvailableFontFamilyNames): Implement.
* Makefile.am (gtk_c_source_files): Add GdkGraphicsEnvironment.c.
* Makefile.in: Regenerate.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/ClasspathFontPeer.java
(setStandardAttributes(String,Map)): If size attribute doesn't
exist, default to size 12. Clamp size value to a minimum of 1.
2004-11-30 Jeroen Frijters <jeroen@frijters.net>
* javax/swing/JDialog.java
(decorated): Likewise.
* javax/swing/JFrame.java
(defaultLookAndFeelDecorated): Likewise.
2004-11-30 Jeroen Frijters <jeroen@frijters.net>
* javax/swing/plaf/basic/BasicToolBarUI.java
(offset, regular): Made final.
* javax/swing/plaf/basic/BasicScrollBarUI.java
(DECREASE_HIGHLIGHT, INCREASE_HIGHLIGHT, NO_HIGHLIGHT,
POSITIVE_SCROLL, NEGATIVE_SCROLL): Made final.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/BitwiseXORComposite.java,
gnu/java/awt/ClasspathToolkit.java,
gnu/java/awt/image/XBMDecoder.java,
gnu/java/awt/peer/GLightweightPeer.java,
gnu/java/awt/peer/gtk/GdkGlyphVector.java:
Reorganized import statements.
2004-11-30 Jeroen Frijters <jeroen@frijters.net>
* java/awt/Button.java
(next_button_number): Removed useless initializer.
* java/awt/Frame.java
(next_frame_number): Likewise.
* java/awt/Panel.java
(next_panel_number): Likewise,
* java/awt/Scrollbar.java
(next_scrollbar_number): Likewise.
* java/awt/TextArea.java
(next_text_number): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/image/ByteLookupTable.java
(ByteLookupTable) :Fixed HTML entities in javadocs.
(lookupPixel): Fix case when dst is null.
* java/awt/image/ShortLookupTable.java
(ShortLookupTable) :Fixed HTML entities in javadocs.
(lookupPixel): Fix case when dst is null.
* java/awt/image/DataBufferByte.java,
java/awt/image/DataBufferDouble.java,
java/awt/image/DataBufferFloat.java,
java/awt/image/DataBufferInt.java,
java/awt/image/DataBufferShort.java,
java/awt/image/DataBufferUShort.java:
Fix initialization of bankData in constructors.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(setNativeBounds): Set GtkEventBox, GtkButton and GtkLabel size
requests.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(setNativeBounds): Make package private. Set size request even
if GTK parent is NULL.
* gnu/java/awt/peer/gtk/GtkLabelPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c
(setNativeBounds): Set GtkEventBox and GtkLabel size requests.
2004-11-30 Mark Wielaard <mark@klomp.org>
Workaround for bug #17952.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(request_frame_extents): Check window->window != NULL.
2004-11-30 Mark Wielaard <mark@klomp.org>
* jni/gtk-peer/gdkfont.h: Include gtkpeer.h not gtkcairopeer.h.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c: Use
native_text_layout_state_table here.
* jni/gtk-peer/gdkfont.h: Mark native_text_layout_state_table extern.
2004-11-30 Mark Wielaard <mark@klomp.org>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c
(setChars): Only call pango_itemize() when vec->glyphitems != NULL.
Only call pango_shape() when gi->glyphs->num_glyphs > 0.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkToolkit.java:
Merged import statements.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(isBufferedImageGraphics): Simplified.
2004-11-30 Paul Jenner <psj.home@ntlworld.com>
* javax/swing/JTree.java
(isRootVisible): Fixed typo in method name.
* javax/swing/JScrollBar.java
(setValues): Likewise.
* javax/swing/JScrollPane.java
(createScrollListener): Call JScrollBar.setValues.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkContainerPeer.java (endValidate):
Don't call setParentAndBounds on GtkWindowPeers.
* java/awt/Component.java (static): Don't set default keyboard
focus manager.
* java/awt/KeyboardFocusManager.java
(getCurrentKeyboardFocusManager): If current keyboard focus
manager is null set a default.
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(gtkWidgetSetBackground): New method.
(block_expose_events_cb): New function.
(connectSignals): Block the AWT's expose event processing on
button press and release.
(gtkSetLabel): Set text on proper widget.
(gtkWidgetModifyFont): Modify font on proper widget.
(gtkWidgetSetBackground): Set normal, active and prelight
colours.
(gtkWidgetSetForeground): Set forground colour of proper widget.
(gtkActivate): Activate the correct widget.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (clearRect):
Only clear rectangle if the backing component is not an event
box.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(beginNativeRepaintID): New variable.
(endNativeRepaintID): Likewise.
(gtkInit): Initialize new fields with method IDs.
* jni/gtk-peer/gtkpeer.h (beginNativeRepaintID): Declare extern.
(endNativeRepaintID): Likewise.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* javax/swing/JList.java (init): Revert accidental commit.
* gnu/java/awt/peer/gtk/GdkGraphics.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (GdkGraphics):
Call initComponentGraphics or connectSignals depending on
component's realization status.
(realize_cb): New function.
(initComponentGraphics): New method.
(connectSignals): New method.
(clipRect): Return immediately if component is not realized.
(setClip): Likewise.
(translate): Likewise.
(drawImage variants): Return false immediately if component is
not realized.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(connectSignals): New method.
(GdkGraphics2D): Call initComponentGraphics2D or connectSignals
depending on component's realization status. Move other
initialization calls to ...
(initComponentGraphics2D): New method.
(realize_cb): New function.
(cairoSetMatrix): Return immediately if gr is NULL.
(cairoNewPath): Likewise.
(cairoRectangle): Likewise.
(cairoClip): Likewise.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(gtkWidgetRepaintArea): Remove method.
(isRealized): New method.
(GtkComponentPeer): Move setParent, connectJObject and setCursor
calls to setParentAndBounds. Call setParentAndBounds.
(setParentAndBounds): New method.
(setComponentBounds): Return immediately if bounds are all zero.
(repaint): Remove call to gtkWidgetRepaintArea. Return
immediately if requested paint region is 0x0.
(setCursor): New method.
(gtkWidgetSetParent): Only set widget's parent if its parent is
currently NULL.
(setNativeBounds): Only set widget's bounds if it has a parent.
(connectSignals): Don't call gtk_widget_realize. Connect
"realize" signal to connect_awt_hook_cb handler.
* gnu/java/awt/peer/gtk/GtkContainerPeer.java (isValidating):
New field.
(beginValidate): Set isValidating true.
(endValidate): Set parents and bounds for children first, then
for this. Set isValidating false.
* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
(connectJObject): Remove method.
(connectSignals): Don't call gtk_widget_realize.
* gnu/java/awt/peer/gtk/GtkListPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c
(connectJObject): Remove method.
(connectSignals): Don't call gtk_widget_realize.
* gnu/java/awt/peer/gtk/GtkPanelPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c
(connectJObject): Remove method.
* gnu/java/awt/peer/gtk/GtkScrollbarPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollBarPeer.c
(connectJObject): Remove method.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(create): Don't call gtk_widget_realize.
(connectJObject): Remove method.
(connectSignals): Don't call gtk_widget_realize. Connect
"realize" signal to connect_awt_hook_cb handler.
(nativeSetBounds): Don't attempt to move GDK window if it is
NULL.
* java/awt/Container.java (addImpl): Don't call comp.addNotify
if peer is not null.
(validateTree): Create peers for all children before calling
doLayout.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(connectSignals): Don't call gtk_widget_realize.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(connect_awt_hook_cb): New function.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(initComponentGraphicsID): New variable.
(initComponentGraphics2DID): Likewise.
(setCursorID): Likewise.
(gtkInit): Initialize new fields with method IDs.
* jni/gtk-peer/gtkpeer.h (initComponentGraphicsID): Declare
extern.
(initComponentGraphics2DID): Declare extern.
(setCursorID): Likewise.
(connect_awt_hook_cb): Declare function.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java,
gnu/java/awt/peer/gtk/GdkGlyphVector.java,
gnu/java/awt/peer/gtk/GdkGraphics2D.java,
gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
gnu/java/awt/peer/gtk/GtkButtonPeer.java,
gnu/java/awt/peer/gtk/GtkClipboard.java,
gnu/java/awt/peer/gtk/GtkDialogPeer.java,
gnu/java/awt/peer/gtk/GtkFileDialogPeer.java,
gnu/java/awt/peer/gtk/GtkFontPeer.java,
gnu/java/awt/peer/gtk/GtkListPeer.java,
gnu/java/awt/peer/gtk/GtkMenuItemPeer.java,
gnu/java/awt/peer/gtk/GtkToolkit.java,
gnu/java/awt/peer/gtk/GtkWindowPeer.java:
Import statements reworked. Some little reformattings.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/image/AffineTransformOp.java
(TYPE_BILINEAR): Initialize with 2.
* java/awt/print/Printable.java: Jalopied.
(PAGE_EXISTS): Initialize with 0;
(NO_SUCH_PAGE): Initialized with 1.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* Makefile.am: Add BufferedImageFilter.java.
* Makefile.in: Regenerate.
2004-11-30 Graydon Hoare <graydon@redhat.com>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(install_font_peer): Minor bug fixes to track cairo font semantics.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/BufferedImageFilter.java: Implement.
2004-11-30 Graydon Hoare <graydon@redhat.com>
* Makefile.am
(jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.c)
(jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c)
(gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java)
(gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java): Remove.
(jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c)
(jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c)
(gnu/java/awt/peer/gtk/GdkTextLayout.java)
(gnu/java/awt/peer/gtk/GdkFontPeer.java)
(gnu/java/awt/peer/ClasspathTextLayoutPeer.java): Add
* Makefile.in: Regenerate.
* gnu/awt/xlib/XToolkit.java
(getClasspathTextLayoutPeer): Add stub.
* gnu/java/awt/ClasspathToolkit.java
(getClasspathTextLayoutPeer) Add.
* gnu/java/awt/peer/ClasspathFontPeer.java
(copyStyleToAttrs)
(copySizeToAttrs): Make public.
* gnu/java/awt/peer/ClasspathTextLayoutPeer.java: New file.
* gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java: Remove.
* gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java: Remove.
* gnu/java/awt/peer/gtk/GdkFontMetrics.java: Rewrite.
* gnu/java/awt/peer/gtk/GdkFontPeer.java: New file.
* gnu/java/awt/peer/gtk/GdkGlyphVector.java: Adjust type names.
* gnu/java/awt/peer/gtk/GdkGraphics.java
(getFontPeer): New function.
(drawString): Pass font peer to native side.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java
(cairoSetFont)
(cairoShowGlyphs)
(PainterThread): Remove.
(GdkGraphics2D): Set hints during construction.
(shifted)
(walkPath)
(draw)
(setRenderingHint)
(setRenderingHints): Reimplement normalization logic.
(getDefaultHints)
(updateBufferedImage)
(isBufferedImageGraphics)
(updateImagePixels)
(drawImage): Make final.
(drawImage): Always paint synchronously.
(drawString)
(drawGlyphVector): Rewrite.
(releasePeerGraphicResource)
(getPeerTextMetrics)
(getPeerFontMetrics)
(drawGdkGlyphVector)
(drawGdkTextLayout)
(cairoDrawGdkGlyphVector)
(cairoDrawGdkTextLayout)
(cairoDrawString)
(getFontPeer): New functions.
* gnu/java/awt/peer/gtk/GdkTextLayout.java: New file.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java
(getFontMetrics): Get metrics via toolkit, to hit cache.
* gnu/java/awt/peer/gtk/GtkTextAreaPeer.java: Use getFontMetrics.
* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java: Likewise.
* gnu/java/awt/peer/gtk/GtkToolkit.java (LRUCache): New class.
(fontCache)
(metricsCache)
(imageCache): New members.
(getFontMetrics)
(getImage)
(getClasspathFontPeer): Use caches.
(getFontPeer): Route through getClasspathFontPeer.
* java/awt/Font.java (attrsToMap): Remove, adjust ctors.
* java/awt/font/TextLayout.java: Implement in terms of peer.
* javax/swing/plaf/basic/BasicSliderUI.java
(paintThumb): Use polyline rather than polygon.
* javax/swing/plaf/basic/BasicGraphicsUtils.java:
Update comment but, alas, still do not switch to using TextLayouts.
* javax/swing/text/Utilities.java (drawTabbedText):
Draw text run-at-a-time, not char-at-a-time.
* jni/gtk-peer/gdkfont.h: Publicize some of the font interface, add
layout table.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeer.c:
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c:
Remove files.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontMetrics.c: Rewrite to
incorporate brains of old GdkClasspathFontPeerMetrics.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c: Rewrite to
incorporate brains of old GdkClasspathFontPeer.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c: New file.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
(drawString): Rewrite to use persistent layout in peer font.
Comment out extraneous gdk_flush calls.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(metrics_cairo)
(metrics_surface): New static variables.
(paint_glyph_run)
(install_font_peer): New helper functions.
(releasePeerGraphicResource)
(getPeerTextMetrics)
(getPeerFontMetrics)
(cairoDrawGdkTextLayout)
(cairoDrawGdkGlyphVector): New native methods.
(cairoDrawString): Rewrite, leaving layout-based version
commented out for the time being.
* jni/gtk-peer/gtkpeer.h (graphics): Add fields for pango stuff.
2004-11-30 David Gilbert <david.gilbert@object-refinery.com>
* java/awt/geom/AffineTransform.java:
Fixed javadocs overall.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ComponentColorModel.java: Remove FIXME comment since
it's correct.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java: Fix use of immutable
BigIntegers.
2004-11-30 Tom Tromey <tromey@redhat.com>
* javax/swing/plaf/basic/BasicOptionPaneUI.java (MessageIcon):
Renamed from 'messageIcon'.
(errorIcon, infoIcon, warningIcon, questionIcon): Updated.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/RescaleOp.java: Fix formatting.
2004-11-30 Olga Rodimina <rodimina@redhat.com>
* javax/swing/plaf/basic/BasicComboPopup.java
(SCROLL_DOWN): made final.
(SCROLL_UP): made final.
2004-11-30 Olga Rodimina <rodimina@redhat.com>
* javax/swing/plaf/basic/BasicComboPopup.java:
Added javadocs for undocumented fields.
(show): scroll down to the selected item and
highlight selected item.
(startAutoScrolling): Implemented.
(stopAutoScrolling): Implemented.
(autoScrollUp): Implemented.
(autoScrollDown): Implemented.
(InvocationMouseHandler.mouseReleased): Implemented.
(InvocationMouseMotionHandler.mouseDragged): Implemented.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/RescaleOp.java: Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java (getRGBs,
convertToIntDiscrete): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java: Add class docs.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java (isValid, getValidPixels):
Implement.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/MenuBar.java,
java/awt/peer/MenuBarPeer.java:
Revert accidentally commited changes.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/AWTKeyStroke.java,
java/awt/Canvas.java,
java/awt/CardLayout.java,
java/awt/CheckboxMenuItem.java,
java/awt/Component.java,
java/awt/Container.java,
java/awt/DefaultKeyboardFocusManager.java,
java/awt/EventDispatchThread.java,
java/awt/FileDialog.java,
java/awt/FlowLayout.java,
java/awt/Font.java,
java/awt/Frame.java,
java/awt/Graphics2D.java,
java/awt/GraphicsEnvironment.java,
java/awt/GridBagConstraints.java,
java/awt/GridBagLayout.java,
java/awt/GridLayout.java,
java/awt/Image.java,
java/awt/KeyboardFocusManager.java,
java/awt/Label.java,
java/awt/List.java,
java/awt/MediaTracker.java,
java/awt/Menu.java,
java/awt/MenuBar.java,
java/awt/MenuComponent.java,
java/awt/Panel.java,
java/awt/PopupMenu.java,
java/awt/ScrollPane.java,
java/awt/Scrollbar.java,
java/awt/SystemColor.java,
java/awt/TextArea.java,
java/awt/TextField.java,
java/awt/Toolkit.java,
java/awt/Window.java,
java/awt/color/ICC_Profile.java,
java/awt/datatransfer/DataFlavor.java,
java/awt/datatransfer/StringSelection.java,
java/awt/datatransfer/SystemFlavorMap.java,
java/awt/dnd/Autoscroll.java,
java/awt/dnd/DropTarget.java,
java/awt/dnd/DropTargetContext.java,
java/awt/dnd/DropTargetDragEvent.java,
java/awt/dnd/peer/DropTargetContextPeer.java,
java/awt/event/AdjustmentEvent.java,
java/awt/event/InputEvent.java,
java/awt/event/InvocationEvent.java,
java/awt/event/KeyEvent.java,
java/awt/event/MouseEvent.java,
java/awt/font/TextLayout.java,
java/awt/geom/GeneralPath.java,
java/awt/geom/Point2D.java,
java/awt/im/InputContext.java,
java/awt/im/spi/InputMethodContext.java,
java/awt/image/AffineTransformOp.java,
java/awt/image/BufferedImage.java,
java/awt/image/ColorModel.java,
java/awt/image/ComponentColorModel.java,
java/awt/image/CropImageFilter.java,
java/awt/image/DirectColorModel.java,
java/awt/image/MemoryImageSource.java,
java/awt/image/PackedColorModel.java,
java/awt/image/PixelGrabber.java,
java/awt/image/RasterOp.java,
java/awt/peer/MenuBarPeer.java:
Some fixes for checkstyle. Import statement and modifier order
redordering.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JTable.java
(setModel): Reimplemented.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextArea.java
(append): Re-implemented.
(insert): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JSpinner.java
(serialVersionUID): New static field.
* javax/swing/JToggleButton.java
(JToggleButton): Fixed email addresses.
* javax/swing/SpinnerNumberModel.java
(serialVersionUID): Added javadoc.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextArea.java:
Don't use JTextComponent.doc directly. GCJ from java-gui-branch has a
bug here which is fixed in HEAD ...
2004-11-30 Andrew John Hughes <address@hidden>
* javax/swing/JTextArea.java: Added additional
documentation.
2004-11-30 Andrew John Hughes <address@hidden>
* javax/swing/JRadioButton.java:
Implemented additional constructors and accessibility
classes. Added documentation and fixed a typo in
AbstractButton.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/IndexColorModel.java (IndexColorModel): Implement
missing constructor.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ComponentColorModel.java (ComponentColorModel):
Implement missing 1.4 constructor.
2004-11-30 Andrew John Hughes <address@hidden>
* javax/swing/JToggleButton.java:
Implemented additional constructors and accessibility
classes. Added documentation and fixed a typo in
AbstractButton.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ColorModel.java (getDataElement,
getDataElements): Document since 1.4.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/BandedSampleModel.java: Implement.
* Makefile.am: Add java/awt/image/BandedSampleModel.java.
* Makefile.in: Regenerated.
2004-11-30 Michael Koch <konqueror@gmx.de>
* java/awt/Window.java: Fixed whitespace difference with GNU
classpath.
2004-11-30 Mark Wielaard <mark@klomp.org>
* Makefile.am: Add javax/swing/SpinnerListModel.java.
* Makefile.in: Regenerated.
2004-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
* javax/swing/SpinnerListModel.java, javax/swing/SpinnerModel.java
Implemented SpinnerListModel. Added documentation to
SpinnerModel.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
(init_dpi_conversion_factor): Apply the patch from main correctly.
2004-06-26 Andreas Tobler <a.tobler@schweiz.ch>
2004-11-30 Tom Tromey <tromey@redhat.com>
Bug 9948.
* javax/swing/JDesktopPane.java (LIVE_DRAG_MODE): Now final.
(OUTLINE_DRAG_MODE): LIVE_DRAG_MODE.
* javax/swing/plaf/basic/BasicSplitPaneUI.java
(NON_CONTINUOUS_DIVIDER): Now final. Initialize.
2004-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/Canvas.java
(AccessibleAWTCanvas): added serialization UID
* java/awt/Label.java
(AccessibleAWTLabel): added serialization UID
* javax/swing/JRootPane.java
(AccessibleJRootPane): added comment to existing UID
* javax/swing/JSpinner.java
(DefaultEditor): added serialization UID
(NumberEditor): added serialization UID
* javax/swing/text/html/HTML.java
(UnknownTag): added serialization UID
2004-11-30 Jeroen Frijters <jeroen@frijters.net>
* javax/swing/JInternalFrame.java
(CONTENT_PANE_PROPERTY,FRAME_ICON_PROPERTY,GLASS_PANE_PROPERTY,
IS_CLOSED_PROPERTY,IS_ICON_PROPERTY,IS_MAXIMUM_PROPERTY,
IS_SELECTED_PROPERTY,LAYERED_PANE_PROPERTY,MENU_BAR_PROPERTY,
ROOT_PANE_PROPERTY,TITLE_PROPERTY): Made final as per API spec.
* javax/swing/plaf/basic/BasicInternalFrameTitlePane.java
(CLOSE_CMD,ICONIFY_CMD,MAXIMIZE_CMD,MOVE_CMD,RESTORE_CMD,SIZE_CMD):
Made final as per API spec.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* jni/gtk-peer/gtkpeer.h: Remove duplicated copyright string.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/Arc2D.java: Reformatted.
(setArc): Correct documentation to say 'upper left corner'.
(setArcByTangent,contains,intersects): Implemented.
(containsAngle): Corrected to handle negative extents.
(ArcIterator): Set to private.
(ArcIterator): Corrected for CHORD-type arcs, negative extents.
(intersects): Fix: Now checks the arc segment.
(contains): Cleaned up.
* java/awt/geom/CubicCurve2a.javaD: Fix insideness-test. Reindent.
(contains): Implemented.
(intersects): Implemented.
* java/awt/geom/QuadCurve2D.java: Fix insideness-test. Reindent.
* java/awt/geom/GeneralPath: Fix insideness-test. Reindent and
document. Fully (re)implemented using separate xpoints and ypoints
float[] coords.
2004-11-30 Andreas Tobler <a.tobler@schweiz.ch>
* configure.ac: Introduce AC_C_BIGENDIAN_CROSS for WORDS_BIGENDIAN.
* configure: Regenerate.
* include/config.h.in: Likewise.
* jni/gtk-peer/gtkpeer.h (SWAPU32): Introduce macro to swap pixels.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkImagePainter.c: Moved SWAPU32
macro to gtkpeer.h.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(Java_gnu_java_awt_peer_gtk_GdkGraphics2D_getImagePixels): Convert
pixels from 0xBBGGRRAA to 0xAARRGGBB only on Little Endian
architectures.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c (area_updated):
Likewise.
2004-11-30 David Gilbert <david.gilbert@object-refinery.com>
* java/awt/SystemColor.java: Fix @link doc entries.
2004-11-30 David Gilbert <david.gilbert@object-refinery.com>
* java/awt/RenderingHints.java: Documented.
(RenderingHints): Accept null init Map.
(putAll): Preprocess map to generate appropriate exceptions.
(remove): Cast object to Key and remove from hintMap.
2004-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/MenuComponent.java, java/awt/MenuBar.java:
Implementation of accessibility classes and methods
for these two components.
2004-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/KeyboardFocusManager.java:
Added missing documentation.
2004-11-30 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/awt/Label.java, java/awt/Canvas.java:
Added accessibility classes to AWT Label and Canvas,
as well as additional documentation for Canvas.
2004-11-30 David Gilbert <address@bogus.example.com>
* java/awt/image/DataBuffer.java: Update API documentation.
* java/awt/image/DataBufferByte.java: Likewise.
* java/awt/image/DataBufferDouble.java: Likewise.
* java/awt/image/DataBufferFloat.java: Likewise.
* java/awt/image/DataBufferInt.java: Likewise.
* java/awt/image/DataBufferShort.java: Likewise.
* java/awt/image/DataBufferUShort.java: Likewise.
2004-11-30 Dalibor Topic <robilad@kaffe.org>
* java/awt/Component.java (postEvent):
Only delegate to parent if a parent exists.
Reported by: Stephane Meslin-Weber <steph@tangency.co.uk>
2004-11-30 Sven de Marothy <sven@physto.se>
*java/awt/AWTEventMulticaster.java,
java/awt/Adjustable.java,
java/awt/Point.java,
java/awt/Polygon.java,
java/awt/Rectangle.java,
java/awt/Shape.java,
java/awt/geom/Area.java,
java/awt/geom/Ellipse2D.java,
java/awt/geom/PathIterator.java,
java/awt/geom/Point2D.java,
java/awt/geom/Rectangle2D.java,
java/lang/Comparable.java,
java/util/Arrays.java:
Fixed documentation errors
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ComponentSampleModel.java: Add documentation.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ComponentSampleModel.java (constructor):
Initialize numBanks when figuring out the max bank index.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/Raster.java (createPackedRaster): Implement
MultiPixelPackedSampleModel codepath.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/MultiPixelPackedSampleModel.java: Implement.
* Makefile.am: Add MultiPixelPackedSampleModel.java.
* Makefile.in: Regenerate.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/Raster.java (getNumBands): Implement.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/Raster.java
(createPackedRaster(int,int,int,int,int,Point)): Implement for
bands>1.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/SinglePixelPackedSampleModel.java
(SinglePixelPackedSampleModel): Throw exception for unsupported
datatype.
2004-11-30 Jerry Quinn <jlquinn@optonline.net>
* java/awt/image/ColorModel.java (getDataElement): Implemented.
Update javadoc.
(getDataElements): Add missing version. Remove bogus version.
Update javadoc.
2004-11-30 Olga Rodimina <rodimina@redhat.com>
* javax/swing/plaf/basic/BasicComboBoxUI.java:
(paintCurrentValue): Pass correct parameters to
getListCellRendererComponent().
(ListDataHandler.intervalRemoved): Implemented.
(PropertyChangeHandler.propertyChange): Handle changes in
MODEL_CHANGED_PROPERTY of the JComboBox
* javax/swing/plaf/basic/BasicComboPopup.java:
(BasicComboPopup): Moved code that configures popup to
configurePopup() and call it instead.
(firePopupMenuWillBecomeVisible): Implemented.
(firePopupMenuWillBecomeInvisible): Likewise.
(firePopupMenuCanceled): Likewise.
(configureList): Set list's visibleRowCount same as
comboBox's visibleRowCount.
(configurePopup): Implemented.
(getPopupHeightForRowCount): Get item's from JComboBox's model and
not from model of the JList.
(ListMouseMotionHandler.mouseMoved): Implemented.
(PropertyChangeHandler.propertyChange): Handles change in the
JComboBox's model.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JComponent.java
(isMaximumSizeSet): New method.
(isMinimumSizeSet): Likewise.
(isPreferredSizeSet): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JSpinner.java:
Some Re-formatting.
(spinner): New field.
(DefaultEditor): New method.
(getSpinner): Likewise.
(NumberEdito): Likewise.
(getModel): Likewise
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/InputVerifier.java:
Re-formatted.
* javax/swing/JComponent.java
(inputVerifier): New property field.
(getInputVerifier): New method.
(setInputVerifier): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JComponent.java
(JComponent): Added javadoc comment.
(setBorder): Fire property change eventr.
(setEnabled): Likewise.
(setMaximumSize): Likewise.
(setMinimumSize): Likewise.
(setPreferredSize): Likewise.
(setOpaque): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextField.java
(action): New field.
(actionCommand): Likewise.
(actionPropertyChangeListener): Likewise.
(setHorizontalAlignment): Abort soon if new value == old value. Fire
event before repainting.
(postActionEvent): New method.
(getAction): Likewise.
(setAction): Likewise.
(getActionCommand): Likewise.
(setActionCommand): Likewise.
(createActionPropertyChangeListener): Likewise.
(configurePropertiesFromAction): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/DebugGraphics.java:
Re-formatted. Fixed some javadocs.
* javax/swing/JApplet.java
(rootPaneCheckingEnabled): Renamed from checking.
* javax/swing/JCheckBox.java
(BORDER_PAINTED_FLAT_CHANGED_PROPERTY): New statif field.
* javax/swing/JFrame.java:
Re-formatted a bit and reordered some methods.
(rootPaneCheckingEnabled): Renamed from checking.
(getPreferredSize): Simplified.
* javax/swing/JTextArea.java
(getColumnWidth): New method.
(getLineCount): Likewise.
(getLineStartOffset): Likewise.
(getLineEndOffset): Likewise.
(getLineOfOffset): Likewise.
(getRowHeight): Likewise.
(insert): Likewise.
(replaceRange): Likewise.
* javax/swing/JTextField.java
(scrollOffset): new field.
(getScrollOffset): New method.
(setScrollOffset): Likewise.
(getColumnWidth): Likewise.
* javax/swing/JTree.java
(ANCHOR_SELECTION_PATH_PROPERTY): New static field.
(CELL_EDITOR_PROPERTY): Likewise.
(CELL_RENDERER_PROPERTY): Likewise.
(EDITABLE_PROPERTY): Likewise.
(EXPANDS_SELECTED_PATHS_PROPERTY): Likewise.
(INVOKES_STOP_CELL_EDITING_PROPERTY): Likewise.
(LARGE_MODEL_PROPERTY): Likewise.
(LEAD_SELECTION_PATH_PROPERTY): Likewise.
(ROOT_VISIBLE_PROPERTY): Likewise.
(ROW_HEIGHT_PROPERTY): Likewise.
(SCROLLS_ON_EXPAND_PROPERTY): Likewise.
(SELECTION_MODEL_PROPERTY): Likewise.
(SHOWS_ROOT_HANDLES_PROPERTY): Likewise.
(TOGGLE_CLICK_COUNT_PROPERTY): Likewise.
(TREE_MODEL_PROPERTY): Likewise.
(VISIBLE_ROW_COUNT_PROPERTY): Likewise.
(cellEditor): New field.
(invokesStopCellEditing): Likewise.
(largeModel): Likewise.
(rowHeight): Likewise.
(scrollsOnExpand): Likewise.
(selectionModel): Likewise.
(toggleClickCount): Likewise.
(visibleRowCount): Likewise.
(setShowsRootHandles): Fixed typo in method name.
(getCellEditor): New method.
(setCellEditor): Likewise.
(getSelectionModel): Likewise.
(setSelectionModel): Likewise.
(getVisibleRowCount): Likewise.
(setVisibleRowCount): Likewise.
(isLargeModel): Likewise.
(setLargeModel): Likewise.
(getRowHeight): Likewise.
(setRowHeight): Likewise.
(getInvokesStopCellEditing): Likewise.
(setInvokesStopCellEditing): Likewise.
(getToggleClickCount): Likewise.
(setToggleClickCount): Likewise.
(getScrollsOnExpand): Likewise.
(setScrollsOnExpand): Likewise.
* javax/swing/table/DefaultTableColumnModel.java
(addColumnModelListener): Fixed javadoc.
(removeColumnModelListener): Implemented. Fixed javadoc.
(getColumnModelListeners): New method.
* javax/swing/table/JTableHeader.java
(columnModel): Made protected.
(draggedColumn): Likewise.
(draggedDistance): Likewise.
(reorderingAllowed): Likewise.
(resizingAllowed): Likewise.
(resizingColumn): Likewise.
(table): Likewise.
(updateTableInRealTime): Likewise.
(createDefaultColumnModel): Renamed from
createDefaultTableColumnModel.
(setDefaultRenderer): New method.
* javax/swing/table/TableColumn.java
(getPropertyChangeListeners): New method.
* javax/swing/text/DefaultHighlighter.java
(drawsLayeredHighlights): New field.
(getDrawsLayeredHighlights): New method.
(setDrawsLayeredHighlights): Likewise.
* javax/swing/text/DocumentFilter.java
(FilterBypass): New inner class.
(insertString): New method.
(remove): Likewise.
(replace): Likewise.
* javax/swing/text/JTextComponent.java
(dragEnabled): New field.
(getSelectedText): New method.
(getDragEnabled): Likewise.
(setDragEnabled): Likewise.
(replaceSelection): Reimplemented.
* javax/swing/text/NavigationFilter.java
(FilterBypass): New inner class.
(NavigationFilter): New method.
(moveDot): Likewise.
(setDot): Likewise.
* javax/swing/text/SimpleAttributeSet.java
(EMPTY): Made public final.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/SpinnerNumberModel.java
(getMinimum): New method.
(setMinimum): Likewise.
(getMaximum): Likewise.
(setMaximum): Likewise.
(getStepSize): Likewise.
(setStepSize): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JMenu.java
(getMenuListeners): New method.
(fireMenuSelected): Simplified.
* javax/swing/JRootPane.java
(NONE): New static field.
(FRAME): Likewise.
(PLAIN_DIALOG): Likewise.
(INFORMATION_DIALOG): Likewise.
(ERROR_DIALOG): Likewise.
(COLOR_CHOOSER_DIALOG): Likewise.
(FILE_CHOOSER_DIALOG): Likewise.
(QUESTION_DIALOG): Likewise.
(WARNING_DIALOG): Likewise.
(defaultButton): New field.
(getDefaultButton): New method.
(setDefaultButton): Likewise.
* javax/swing/JScrollPane.java
(getUI): New method.
(setUI): Likewise.
* javax/swing/JTable.java
(getUI): Javadoc added.
(setUI): New method.
* javax/swing/JViewport.java
(getUI): New method.
(setUI): Likewise.
* javax/swing/UIDefaults.java
(removePropertyChangeListener): Made public.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JApplet.java, javax/swing/JFrame.java:
Re-indented.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractButton.java:
Little re-formatting.
(changeEvent): Made protected.
(fireStateChanged): Removed argument.
(setHorizontalAlignment): Abort method when old value is equal too new
value.
(setHorizontalTextPosition): Likewise.
(setVerticalAlignment): Likewise.
(setVerticalTextPosition): Likewise.
(setBorderPainted): Likewise.
(setIcon): Likewise.
(setText): Likewise.
(setIconTextGap): Likewise.
(setMargin): Likewise.
(setPressedIcon): Likewise.
(setFocusPainted): Likewise.
(setDisabledSelectedIcon): Likewise.
(setRolloverIcon): Likewise.
(setRolloverSelectedIcon): Likewise.
(setSelectedIcon): Likewise.
(setContentAreaFilled): Likewise.
2004-11-30 Kim Ho <kho@redhat.com>
* javax/swing/plaf/basic/BasicArrowButton.java:
Jalopy. Reimplement.
* javax/swing/plaf/basic/BasicScrollBarUI.java:
Jalopy.
(arrowIcon, upIcon, downIcon, leftIcon,
rightIcon): Removed.
(createIncreaseButton): Use BasicArrowButton.
(createDecreaseButton): Ditto.
* javax/swing/plaf/basic/BasicSplitPaneDivider.java:
(createRightOneTouchButton): Remove button border.
(createLeftOneTouchButton): Ditto.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JSpinner.java
(setModel): New method.
* javax/swing/SpringLayout.java
(Constraints): May not be final.
2004-11-30 Michael Koch <konqueror@gmx.de>
* gnu/java/awt/peer/gtk/GtkClipboard.java,
java/awt/datatransfer/Clipboard.java,
java/awt/datatransfer/ClipboardOwner.java:
Reformated to make it use our coding standard.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/SpinnerNumberModel.java
(SpinnerNumberModel): Implements java.io.Serializable.
(serialVersionUID): New field.
(SpinnerNumberModel): Added missing @throws tags to javadocs.
* javax/swing/UIManager.java
(get): New method.
(getBoolean): Likewise.
(getBorder): Likewise.
(getColor): Likewise.
(getDimension): Likewise.
(getFont): Likewise.
(getIcon): Likewise.
(getInsets): Likewise.
(getInt): Likewise.
(getString): Likewise.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JPasswordField.java:
Reformated. Implemented construtors.
* javax/swing/plaf/basic/BasicPasswordFieldUI.java
(create): New method.
* javax/swing/text/PlainView.java
(selectedColor): Made package-private to allow access from sub-classes
in same package too.
(unselectedColor): Likewise.
(font): Likewise.
(drawSelectedText): Make protected.
(drawUnselectedText): Likewise.
* javax/swing/text/PasswordView.java: New file.
* Makefile.am: Added javax/swing/text/PasswordView.java.
* Makefile.in: Regenerated.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkFramePeer.java (setMenuBar): Set menu
bar's width.
* gnu/java/awt/peer/gtk/GtkMenuBarPeer.java (nativeSetHelpMenu):
Add FIXME comment.
(addHelpMenu): Elide call to nativeSetHelpMenu.
* java/awt/Menu.java (isTearOff): Rename to tearOff.
(menuSerializedDataVersion): Initialize to 1.
(separatorLabel): Mark transient.
(insert(MenuItem,int)): Implement.
* java/awt/MenuBar.java (setHelpMenu): Call getPeer to retrieve
peer.
(countMenus): Count help menu.
* java/awt/MenuComponent.java (nameExplicitlySet, newEventsOnly,
accessibleContext): Add fields.
* java/awt/MenuItem.java: Remove event mask FIXME.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
(gtkWidgetModifyFont): Only set font if label is non-NULL.
(setLabel): Don't treat "-" specially.
2004-11-30 Kim Ho <kho@redhat.com>
* javax/swing/colorchooser/DefaultHSBChooserPanel.java:
(stateChanged): Only update the image and the track if
the values are not being adjusted.
(updateChooser): Grab the new mouse point from the
spinner values. Update the image and track only if
the values are not being adjusted.
(getHSBValues): New method.
* javax/swing/colorchooser/DefaultRGBChooserPanel.java:
(SliderHandler::stateChanged): Changed internalChange
to updateChange. Set sliderChange.
(SpinnerHandler::stateChanged): Ditto. Set spinnerChange.
(spinnerChange): New variable.
(sliderChange): Ditto.
(updateChange): Renamed from internalChange.
(updateChooser): Do not update sliders if the sliders
were the original source of the change. Ditto for spinners.
* javax/swing/plaf/basic/BasicTabbedPaneUI.java:
(mousePress): Don't scroll the JViewport if there will
be extra space at the end of the run. Change layout() to
revalidate().
(calculateSize): Use the component's width/height unless
it is smaller than the max tab width/height.
(calculateTabRects): Subtract the tab run overlay.
(rotateTabRuns): Don't rotate if there's only one run.
(layoutContainer): Reuse the viewport point.
(createLayoutManager): Set the viewport to use no layout.
(paintTabArea): Don't paint the tabs that are not visible
to the JViewport.
(paintContentBorderTopEdge): Check for scroll tab layout before
looking for gap.
(paintContentBorderLeftEdge): Ditto.
(paintContentBorderBottomEdge): Ditto.
(paintContentBorderRightEdge): Ditto.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkButtonPeer.java (gtkWidgetSetFont):
Rename ...
(gtkWidgetModifyFont): New method.
* gnu/java/awt/peer/gtk/GtkFramePeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
(setMenuBarWidth): New method.
(setBounds): Set the menu bar width.
(postConfigureEvent): Set the menu bar width if the window's
width has changed.
* gnu/java/awt/peer/gtk/GtkMenuBarPeer.java (GtkMenuBarPeer):
Don't call create.
(setFont): New method.
* gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java (create): New
method.
(setFont): Likewise.
(GtkMenuComponentPeer): Call create and setFont.
* gnu/java/awt/peer/gtk/GtkMenuItemPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
(connectSignals): Make package private.
(gtkWidgetModifyFont): New method.
(create): Likewise.
(GtkMenuItemPeer): Don't call create.
(setFont): New method.
* java/awt/CheckboxMenuItem.java (addNotify): Fix peer == null
condition.
* java/awt/Container.java (validateTree): Fix comment typos.
* java/awt/MenuComponent.java (getFont): Return parent's font if
our font is null.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c
(create): Remove call to deprecated
gtk_check_menu_item_set_show_toggle function.
2004-11-30 Hans Boehm <Hans.Boehm@hp.com>
* java/lang/natObject.cc (LOCK_LOG, LOG): Add debug tracing.
(Almost everywhere): add LOG calls, fix, add comments.
(_Jv_MonitorEnter): Replace masking of LOCKED bit with assertion.
Add explicit check for LOCKED bit in slow case (PR 16662).
(_Jv_MonitorExit): Add casts in debug-only code.
Always release LOCKED bit before throwing exception.
(_Jv_ObjectCheckMonitor): Lock may be held if lightweight lock
isn't. Handle easy cases without lock acquisition.
(Object::wait): Use NotifyAll for lock inflation.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkFramePeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c
(gtkFixedMove): Remove method.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/Area.java: Implemented.
2004-11-30 Mark Wielaard <mark@klomp.org>
* java/awt/geom/Arc2D.java (ArcIterator): Make package private.
2004-11-30 Sven de Marothy <sven@physto.se>
* java/awt/geom/Arc2D.java
Reformatted.
(setArc): Correct documentation to say 'upper left corner'.
(setArcByTangent,contains,intersects): Implemented.
(containsAngle): Corrected to handle negative extents.
(ArcIterator): Set to private.
(ArcIterator): Corrected for CHORD-type arcs, negative extents.
* java/awt/geom/Ellipse2D.java
Documented.
(contains,intersects): Implemented.
* java/awt/geom/Line2D.java
(linesIntersect): Correct handling of special cases.
2004-11-30 Mark Wielaard <mark@klomp.org>
* gnu/java/awt/peer/gtk/GdkGraphics.java (setColor): Use
Color.BLACK if c == null, don't create new Color object each time.
* gnu/java/awt/peer/gtk/GdkGraphics2D.java (comp): New private
field.
(setColor): Use Color.BLACK when argument null.
(setComposite): Set this.comp field.
(getComposite): Return this.comp, or AlphaComposite.SrcOver when null.
(DrawState.comp): New private field.
(DrawState.save): Save Composite.
(DrawState.restore): Restore comp field.
* java/awt/FontMetrics.java (gRC): New static final private field.
(getLineMetrics(String, Graphics)): New method.
(getLineMetrics(String, int, int, Graphics)): Likewise.
(getLineMetrics(char[], int, int, Graphics)): Likewise.
(getLineMetrics(CharacterIterator, int, int, Graphics)): Likewise.
* javax/swing/JMenu.java (JMenu(String, boolean)): Ignore tearoff
argument. PR SWING/17294.
* javax/swing/plaf/basic/BasicGraphicsUtils.java (): Always use
the fall-back code since none of the TextArea methods are really
implemented now. PR SWING/17296.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGlyphVector.c
(GdkGlyphVector_setChars): Replace assert() with if block when
pango_itemize() returns null. PR AWT/17295.
(GdkGlyphVector_allInkExtents): Likewise when vec->glyphitems is null.
2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
* Makefile.am (gtk_c_source_files): Add
gnu_java_awt_peer_gtk_GtkFramePeer.c.
* Makefile.in: Regenerate.
* gnu/java/awt/peer/gtk/GdkGraphics.java (getClipBounds): Remove
comment.
* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
(create): Pack GtkButton in GtkEventBox.
(connectJObject): Remove.
(focus_in_cb): New function.
(focus_out_cb): Likewise.
(connectSignals): Connect focus-in-event and focus-out-event
signals.
(gtkSetFont): Rename to ...
(gtkWidgetModifyFont): New method.
(gtkWidgetRequestFocus): New method.
* gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c
(gtkSetFont): Rename to ...
(gtkWidgetModifyFont): New method.
* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
(isInRepaint): New field.
(gtkSetFont): Remove method.
(addExposeFilter): Likewise.
(removeExposeFilter): Likewise.
(gtkWidgetQueueDrawArea): Rename to ...
(gtkWidgetRepaintArea): New method.
(beginNativeRepaint): New method.
(endNativeRepaint): New method.
(setComponentBounds): Move implementation here from
GtkComponentPeer.
(paint): Remove implementation.
(repaint): Wrap call to gtkWidgetRepaintArea with calls to
beginNativeRepaint and endNativeRepaint.
(setBounds): Use menu bar height in bounds calculation.
(postExposeEvent): Only post paint event if we're not doing a
native repaint.
(gtkWidgetSetParent): Replace gtk_layout_put with gtk_fixed_put.
(setNativeBounds): Replace gtk_layout_move with gtk_fixed_move.
(find_gtk_layout): Remove function.
(filter_expose_event_handler): Likewise.
* gnu/java/awt/peer/gtk/GtkDialogPeer.java (postExposeEvent):
Likewise.
* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
(setComponentBounds): Call GtkComponentPeer's
setComponentBounds.
* gnu/java/awt/peer/gtk/GtkFramePeer.java (getMenuBarHeight):
New method.
(moveLayout): Rename to ...
(gtkFixedMove): New method.
(gtkLayoutSetVisible): Rename to ...
(gtkFixedSetVisible): New method.
(setMenuBar): Rearrange, to make the three separate cases
clearer.
(postExposeEvent): Only post paint event if we're not doing a
native repaint.
* gnu/java/awt/peer/gtk/GtkGenericPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c
(gtkWidgetModifyFont): New method.
* gnu/java/awt/peer/gtk/GtkImagePainter.java
(GtkImagePainter(GtkImage,GdkGraphics,int,int,int,int,Color)):
Call run directly, rather than spawning a new thread.
(GtkImagePainter(GtkImage,GdkGraphics,int,int,int,int,int,int,int,int,Color)):
Likewise.
* gnu/java/awt/peer/gtk/GtkLabelPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c (gtkSetFont):
Rename to ...
(gtkWidgetModifyFont): New method.
(create): Rename ebox to eventbox.
* gnu/java/awt/peer/gtk/GtkListPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c (gtkSetFont):
Rename to ...
(gtkWidgetModifyFont): New method.
* gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
(GtkMenuComponentPeer): Set the default font.
* gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c
(gtkSetFont): Rename to ...
(gtkWidgetModifyFont): New method.
* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c: Likewise.
* java/awt/Component.java (locale): Initialize to default
locale.
* java/awt/Container.java (invalidateTree): Make
package-private.
(paint): Paint self first.
(setMenuBar): Call invalidateTree.
* java/awt/Panel.java (dispatchEventImpl): Remove method.
* java/awt/Window.java (show): Call no-parameter variant of
requestFocusInWindow.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (initState):
Remove special case for window widget.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c
(grab_current_drawable): Likewise.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c
(create): Replace GtkLayout with GtkFixed.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
(pre_event_handler): Remove special cases for GDK_EXPOSE events.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c: New file.
Move all GtkFramePeer native method implementations here from
gnu_java_awt_peer_gtk_GtkWindowPeer.c.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c (create):
Replace GtkLayout with GtkFixed.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(find_layout): Remove function.
(create): Replace GtkLayout with GtkFixed.
(connectSignals): Remove find_layout call.
(toBack): Replace XFlush with gdk_flush.
(toFront): Replace XFlush with gdk_flush.
Move GtkFramePeer native method implementations to
gnu_java_awt_peer_gtk_GtkFramePeer.c.
* jni/gtk-peer/gtkpeer.h: Remove declaration of find_gtk_layout.
2004-11-30 Michael Koch <konqueror@gmx.de>
* javax/swing/JTextArea.java
(lineWrap): Renamed from "wrapping".
(wrapStyleWord): NEw field.
(getLineWrap): Re-edited javadoc comment.
(setLineWrap): Likewise.
(getWrapStyleWord): New method.
(setWrapStyleWord): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91544 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk')
34 files changed, 1448 insertions, 939 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java b/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java deleted file mode 100644 index 2f019e4dbc4..00000000000 --- a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeerMetrics.java +++ /dev/null @@ -1,116 +0,0 @@ -/* GdkClasspathFontPeerMetrics.java - Copyright (C) 1999, 2002 Free Software Foundation, Inc. - - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ - - -package gnu.java.awt.peer.gtk; - -import java.awt.*; -import java.awt.font.*; -import java.awt.geom.*; - -public class GdkClasspathFontPeerMetrics extends FontMetrics -{ - private final int native_state = GtkGenericPeer.getUniqueInteger(); - - private static final int ASCENT = 0, MAX_ASCENT = 1, - DESCENT = 2, MAX_DESCENT = 3, - MAX_ADVANCE = 4; - - private int[] metrics; - private native int[] initState (Object font); - - public GdkClasspathFontPeerMetrics (Font font) - { - super (font); - metrics = initState (font.getPeer()); - } - - public int stringWidth (String str) - { - GlyphVector gv = font.createGlyphVector - (new FontRenderContext - (new AffineTransform (), false, false), str); - Rectangle2D r = gv.getVisualBounds (); - return (int) r.getWidth (); - } - - public int charWidth (char ch) - { - return stringWidth (new String (new char[] { ch })); - } - - public int charsWidth (char data[], int off, int len) - { - return stringWidth (new String (data, off, len)); - } - - /* - Sun's Motif implementation always returns 0 or 1 here (???), but - going by the X11 man pages, it seems as though we should return - font.ascent + font.descent. - */ - public int getLeading () - { - return 1; -// return metrics[ASCENT] + metrics[DESCENT]; - } - - public int getAscent () - { - return metrics[ASCENT]; - } - - public int getMaxAscent () - { - return metrics[MAX_ASCENT]; - } - - public int getDescent () - { - return metrics[DESCENT]; - } - - public int getMaxDescent () - { - return metrics[MAX_DESCENT]; - } - - public int getMaxAdvance () - { - return metrics[MAX_ADVANCE]; - } -} diff --git a/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java b/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java index c7a73a3f362..3cd2f9a1cd2 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkFontMetrics.java @@ -1,5 +1,5 @@ /* GdkFontMetrics.java - Copyright (C) 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,33 +38,63 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import gnu.java.awt.ClasspathToolkit; + import java.awt.Font; import java.awt.FontMetrics; +import java.awt.Toolkit; public class GdkFontMetrics extends FontMetrics { - private final int native_state = GtkGenericPeer.getUniqueInteger(); - - private static final int ASCENT = 0, MAX_ASCENT = 1, - DESCENT = 2, MAX_DESCENT = 3, - MAX_ADVANCE = 4; - - private int[] metrics; - private native int[] initState (String fname, int style, int size); + + private int[] font_metrics; + GdkFontPeer peer; + + static final int FONT_METRICS_ASCENT = 0; + static final int FONT_METRICS_MAX_ASCENT = 1; + static final int FONT_METRICS_DESCENT = 2; + static final int FONT_METRICS_MAX_DESCENT = 3; + static final int FONT_METRICS_MAX_ADVANCE = 4; + + static final int TEXT_METRICS_X_BEARING = 0; + static final int TEXT_METRICS_Y_BEARING = 1; + static final int TEXT_METRICS_WIDTH = 2; + static final int TEXT_METRICS_HEIGHT = 3; + static final int TEXT_METRICS_X_ADVANCE = 4; + static final int TEXT_METRICS_Y_ADVANCE = 5; + + static native void getPeerFontMetrics(GdkFontPeer peer, double [] metrics); + static native void getPeerTextMetrics(GdkFontPeer peer, String str, double [] metrics); public GdkFontMetrics (Font font) - { - super (font); - metrics = initState (font.getName (), font.getStyle (), font.getSize ()); + { + super (font.getPeer() instanceof GdkFontPeer + ? font + : ((ClasspathToolkit)(Toolkit.getDefaultToolkit ())) + .getFont (font.getName(), font.getAttributes ())); + + peer = (GdkFontPeer) this.font.getPeer(); + + font_metrics = new int[5]; + double [] hires = new double[5]; + + if (GtkToolkit.useGraphics2D ()) + GdkGraphics2D.getPeerFontMetrics(peer, hires); + else + getPeerFontMetrics (peer, hires); + + for (int i = 0; i < 5; ++i) + font_metrics[i] = (int) hires[i]; } - - native public int stringWidth (String fname, int style, int size, - String str); - + public int stringWidth (String str) { - return stringWidth (font.getName (), font.getStyle (), font.getSize (), - str); + double [] hires = new double[6]; + if (GtkToolkit.useGraphics2D()) + GdkGraphics2D.getPeerTextMetrics(peer, str, hires); + else + getPeerTextMetrics(peer, str, hires); + return (int) hires [TEXT_METRICS_WIDTH]; } public int charWidth (char ch) @@ -77,34 +107,39 @@ public class GdkFontMetrics extends FontMetrics return stringWidth (new String (data, off, len)); } - // Sun's Motif implementation always returns 0 or 1 here (???). + /* + Sun's Motif implementation always returns 0 or 1 here (???), but + going by the X11 man pages, it seems as though we should return + font.ascent + font.descent. + */ public int getLeading () { - return 0; + return 1; +// return metrics[ASCENT] + metrics[DESCENT]; } public int getAscent () { - return metrics[ASCENT]; + return font_metrics[FONT_METRICS_ASCENT]; } public int getMaxAscent () { - return metrics[MAX_ASCENT]; + return font_metrics[FONT_METRICS_MAX_ASCENT]; } public int getDescent () { - return metrics[DESCENT]; + return font_metrics[FONT_METRICS_DESCENT]; } public int getMaxDescent () { - return metrics[MAX_DESCENT]; + return font_metrics[FONT_METRICS_MAX_DESCENT]; } public int getMaxAdvance () { - return metrics[MAX_ADVANCE]; + return font_metrics[FONT_METRICS_MAX_ADVANCE]; } } diff --git a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java b/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java index 1cf24a98d61..ee051451026 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkClasspathFontPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java @@ -1,68 +1,62 @@ -/* GdkClasspathFontPeer.java -- backend implementation for Font object - Copyright (C) 2003 Free Software Foundation, Inc. - - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ +/* GdkFontPeer.java -- Implements FontPeer with GTK+ + Copyright (C) 1999, 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ package gnu.java.awt.peer.gtk; - +import java.awt.peer.FontPeer; import java.awt.*; -import java.awt.font.*; import java.awt.geom.*; -import java.io.InputStream; -import java.io.IOException; -import java.io.Serializable; +import java.awt.font.*; import java.util.Locale; import java.util.Map; -import java.util.StringTokenizer; +import java.util.ResourceBundle; +import java.util.MissingResourceException; import java.text.CharacterIterator; import java.text.AttributedCharacterIterator; import java.text.StringCharacterIterator; -import java.awt.font.TextAttribute; import gnu.classpath.Configuration; import gnu.java.awt.peer.ClasspathFontPeer; -/** - * This class represents a windowing system font using the Pango - * unicode/glyph/font library and the Cairo rendering library. - * - * @author Graydon Hoare (graydon@redhat.com) - */ - -public class GdkClasspathFontPeer extends ClasspathFontPeer +public class GdkFontPeer extends ClasspathFontPeer { + + native static void initStaticState (); + private final int native_state = GtkGenericPeer.getUniqueInteger (); + private static ResourceBundle bundle; static { @@ -71,26 +65,26 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer System.loadLibrary("gtkpeer"); } - if (GtkToolkit.useGraphics2D ()) - initStaticState (); - } - native static void initStaticState (); - private final int native_state = GtkGenericPeer.getUniqueInteger (); - + initStaticState (); - /* Instance Variables */ + try + { + bundle = ResourceBundle.getBundle ("gnu.java.awt.peer.gtk.font"); + } + catch (Throwable ignored) + { + bundle = null; + } + } private native void initState (); private native void dispose (); - private native void setFont (String family, int style, int size); - - protected void sync () - { - this.setFont (this.familyName, this.style, (int)this.size); - } + private native void setFont (String family, int style, int size, boolean useGraphics2D); protected void finalize () { + if (GtkToolkit.useGraphics2D ()) + GdkGraphics2D.releasePeerGraphicsResource(this); dispose (); } @@ -101,49 +95,57 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer * triplicate. */ - private String buildString(CharacterIterator i) { - String s = new String (); - for(char c = i.first(); c != CharacterIterator.DONE; c = i.next()) - s += c; - return s; + private String buildString(CharacterIterator iter) + { + StringBuffer sb = new StringBuffer(); + for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) + sb.append(c); + return sb.toString(); } - private String buildString(CharacterIterator iter, int begin, int limit) { - String s = new String (); + private String buildString(CharacterIterator iter, int begin, int limit) + { + StringBuffer sb = new StringBuffer(); int i = 0; for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next(), i++) { if (begin <= i) - s += c; + sb.append(c); if (limit <= i) break; } - return s; + return sb.toString(); } - private String buildString(char[] chars, int begin, int limit) { - String s = new String (); - for(int i = begin; i <= limit; i++) - s += chars[i]; - return s; + private String buildString(char[] chars, int begin, int limit) + { + return new String(chars, begin, limit - begin); } /* Public API */ - public GdkClasspathFontPeer (String name, int style, int size) + public GdkFontPeer (String name, int style) + { + // All fonts get a default size of 12 if size is not specified. + this(name, style, 12); + } + + public GdkFontPeer (String name, int style, int size) { super(name, style, size); initState (); - setFont (this.familyName, this.style, (int)this.size); + setFont (this.familyName, this.style, (int)this.size, + GtkToolkit.useGraphics2D()); } - public GdkClasspathFontPeer (String name, Map attributes) + public GdkFontPeer (String name, Map attributes) { super(name, attributes); initState (); - setFont (this.familyName, this.style, (int)this.size); + setFont (this.familyName, this.style, (int)this.size, + GtkToolkit.useGraphics2D()); } - + public String getSubFamilyName(Font font, Locale locale) { return null; @@ -228,7 +230,6 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer } - public LineMetrics getLineMetrics (Font font, CharacterIterator ci, int begin, int limit, FontRenderContext rc) { @@ -288,8 +289,7 @@ public class GdkClasspathFontPeer extends ClasspathFontPeer public FontMetrics getFontMetrics (Font font) { - return new GdkClasspathFontPeerMetrics (font); + return new GdkFontMetrics (font); } } - diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGlyphVector.java b/libjava/gnu/java/awt/peer/gtk/GdkGlyphVector.java index ff6b4cd291a..c37de5274ac 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGlyphVector.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGlyphVector.java @@ -1,57 +1,57 @@ /* GdkGlyphVector.java -- Glyph vector object - Copyright (C) 2003 Free Software Foundation, Inc. - - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ + Copyright (C) 2003, 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ package gnu.java.awt.peer.gtk; -import java.awt.*; -import java.awt.font.*; -import java.awt.geom.*; -import java.io.InputStream; -import java.io.IOException; -import java.io.Serializable; -import java.util.Locale; -import java.util.Map; -import java.util.StringTokenizer; -import java.text.CharacterIterator; -import java.text.AttributedCharacterIterator; import gnu.classpath.Configuration; -public class GdkGlyphVector extends GlyphVector +import java.awt.Font; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.font.FontRenderContext; +import java.awt.font.GlyphMetrics; +import java.awt.font.GlyphVector; +import java.awt.font.GlyphJustificationInfo; +import java.awt.geom.AffineTransform; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +public class GdkGlyphVector extends GlyphVector { static @@ -70,7 +70,7 @@ public class GdkGlyphVector extends GlyphVector private Font font; private FontRenderContext ctx; - private native void initState (GdkClasspathFontPeer peer, FontRenderContext ctx); + private native void initState (GdkFontPeer peer, FontRenderContext ctx); private native void setChars (String s); private native void setGlyphCodes (int codes[]); private native void dispose (); @@ -109,7 +109,7 @@ public class GdkGlyphVector extends GlyphVector */ - public GdkGlyphVector (Font f, GdkClasspathFontPeer peer, FontRenderContext c, String s) + public GdkGlyphVector (Font f, GdkFontPeer peer, FontRenderContext c, String s) { font = f; ctx = c; @@ -117,7 +117,7 @@ public class GdkGlyphVector extends GlyphVector setChars (s); } - public GdkGlyphVector (Font f, GdkClasspathFontPeer peer, FontRenderContext c, int codes[]) + public GdkGlyphVector (Font f, GdkFontPeer peer, FontRenderContext c, int codes[]) { font = f; ctx = c; diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java index c374ba21826..5aacf5296c6 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java @@ -90,17 +90,31 @@ public class GdkGraphics extends Graphics GdkGraphics (GtkComponentPeer component) { this.component = component; + font = component.awtComponent.getFont (); + + if (component.isRealized ()) + initComponentGraphics (); + else + connectSignals (component); + } + + void initComponentGraphics () + { initState (component); color = component.awtComponent.getForeground (); - font = component.awtComponent.getFont (); Dimension d = component.awtComponent.getSize (); clip = new Rectangle (0, 0, d.width, d.height); } + native void connectSignals (GtkComponentPeer component); + public native void clearRect (int x, int y, int width, int height); public void clipRect (int x, int y, int width, int height) { + if (component != null && ! component.isRealized ()) + return; + clip = clip.intersection (new Rectangle (x, y, width, height)); setClipRectangle (clip.x, clip.y, clip.width, clip.height); } @@ -113,16 +127,6 @@ public class GdkGraphics extends Graphics return new GdkGraphics (this); } -// public Graphics create (int x, int y, int width, int height) -// { -// GdkGraphics g = new GdkGraphics (this); -// System.out.println ("translating by: " + x +" " + y); -// g.translate (x, y); -// g.clipRect (0, 0, width, height); - -// return g; -// } - native public void dispose (); native void copyPixmap (Graphics g, int x, int y, int width, int height); @@ -134,24 +138,45 @@ public class GdkGraphics extends Graphics public boolean drawImage (Image img, int x, int y, Color bgcolor, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (img instanceof GtkOffScreenImage) { + int width = img.getWidth (null); + int height = img.getHeight (null); copyPixmap (img.getGraphics (), - x, y, img.getWidth (null), img.getHeight (null)); + x, y, width, height); + // FIXME: need to differentiate between SOMEBITS and FRAMEBITS. + if (observer != null) + observer.imageUpdate (img, + ImageObserver.FRAMEBITS, + x, y, width, height); return true; } GtkImage image = (GtkImage) img; - new GtkImagePainter (image, this, x, y, -1, -1, bgcolor); + new GtkImagePainter (image, this, x, y, -1, -1, bgcolor, observer); return image.isLoaded (); } public boolean drawImage (Image img, int x, int y, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (img instanceof GtkOffScreenImage) { + int width = img.getWidth (null); + int height = img.getHeight (null); copyPixmap (img.getGraphics (), - x, y, img.getWidth (null), img.getHeight (null)); + x, y, width, height); + + // FIXME: need to differentiate between SOMEBITS and FRAMEBITS. + if (observer != null) + observer.imageUpdate (img, + ImageObserver.FRAMEBITS, + x, y, width, height); return true; } @@ -164,22 +189,33 @@ public class GdkGraphics extends Graphics public boolean drawImage (Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (img instanceof GtkOffScreenImage) { copyAndScalePixmap (img.getGraphics (), false, false, 0, 0, img.getWidth (null), img.getHeight (null), x, y, width, height); + // FIXME: need to differentiate between SOMEBITS and FRAMEBITS. + if (observer != null) + observer.imageUpdate (img, + ImageObserver.FRAMEBITS, + x, y, width, height); return true; } GtkImage image = (GtkImage) img; - new GtkImagePainter (image, this, x, y, width, height, bgcolor); + new GtkImagePainter (image, this, x, y, width, height, bgcolor, observer); return image.isLoaded (); } public boolean drawImage (Image img, int x, int y, int width, int height, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (component != null) return drawImage (img, x, y, width, height, component.getBackground (), observer); @@ -192,6 +228,9 @@ public class GdkGraphics extends Graphics int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (img instanceof GtkOffScreenImage) { int dx_start, dy_start, d_width, d_height; @@ -247,12 +286,18 @@ public class GdkGraphics extends Graphics copyAndScalePixmap (img.getGraphics (), x_flip, y_flip, sx_start, sy_start, s_width, s_height, dx_start, dy_start, d_width, d_height); + + // FIXME: need to differentiate between SOMEBITS and FRAMEBITS. + if (observer != null) + observer.imageUpdate (img, + ImageObserver.FRAMEBITS, + dx_start, dy_start, d_width, d_height); return true; } GtkImage image = (GtkImage) img; new GtkImagePainter (image, this, dx1, dy1, dx2, dy2, - sx1, sy1, sx2, sy2, bgcolor); + sx1, sy1, sx2, sy2, bgcolor, observer); return image.isLoaded (); } @@ -260,6 +305,9 @@ public class GdkGraphics extends Graphics int sx1, int sy1, int sx2, int sy2, ImageObserver observer) { + if (component != null && ! component.isRealized ()) + return false; + if (component != null) return drawImage (img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, component.getBackground (), observer); @@ -285,11 +333,17 @@ public class GdkGraphics extends Graphics native public void drawRect(int x, int y, int width, int height); native public void fillRect (int x, int y, int width, int height); - native void drawString (String str, int x, int y, String fname, int style, int size); + GdkFontPeer getFontPeer() + { + return (GdkFontPeer) getFont().getPeer(); + } + + native void drawString (GdkFontPeer f, String str, int x, int y); public void drawString (String str, int x, int y) { - drawString (str, x, y, font.getName(), font.getStyle(), font.getSize()); + drawString(getFontPeer(), str, x, y); } + public void drawString (AttributedCharacterIterator ci, int x, int y) { @@ -350,7 +404,6 @@ public class GdkGraphics extends Graphics public Rectangle getClipBounds () { -// System.out.println ("returning CLIP: " + clip); return new Rectangle (clip.x, clip.y, clip.width, clip.height); } @@ -373,6 +426,9 @@ public class GdkGraphics extends Graphics public void setClip (int x, int y, int width, int height) { + if (component != null && ! component.isRealized ()) + return; + clip.x = x; clip.y = y; clip.width = width; @@ -396,7 +452,7 @@ public class GdkGraphics extends Graphics public void setColor (Color c) { if (c == null) - color = new Color (0, 0, 0); + color = Color.BLACK; else color = c; @@ -407,7 +463,7 @@ public class GdkGraphics extends Graphics color.getGreen () ^ xorColor.getGreen (), color.getBlue () ^ xorColor.getBlue ()); } - + public void setFont (Font font) { this.font = font; @@ -437,6 +493,9 @@ public class GdkGraphics extends Graphics public void translate (int x, int y) { + if (component != null && ! component.isRealized ()) + return; + clip.x -= x; clip.y -= y; diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java index 0986960b8b3..82de03d5aec 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics2D.java @@ -1,5 +1,5 @@ /* GdkGraphics2D.java - Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,21 +38,60 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; -import java.awt.*; -import java.awt.geom.*; -import java.awt.font.*; -import java.awt.color.*; -import java.awt.image.*; -import java.awt.image.renderable.*; -import java.util.HashMap; -import java.util.Map; +import gnu.classpath.Configuration; +import gnu.java.awt.ClasspathToolkit; +import gnu.java.awt.peer.ClasspathFontPeer; +import java.awt.AlphaComposite; +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Composite; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.GradientPaint; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.GraphicsConfiguration; +import java.awt.Image; +import java.awt.Paint; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.Shape; +import java.awt.Stroke; +import java.awt.TexturePaint; +import java.awt.Toolkit; +import java.awt.color.ColorSpace; +import java.awt.font.FontRenderContext; +import java.awt.font.GlyphVector; +import java.awt.font.GlyphJustificationInfo; +import java.awt.geom.Arc2D; +import java.awt.geom.GeneralPath; +import java.awt.geom.NoninvertibleTransformException; +import java.awt.geom.PathIterator; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.geom.AffineTransform; +import java.awt.image.AffineTransformOp; +import java.awt.image.BufferedImage; +import java.awt.image.BufferedImageOp; +import java.awt.image.ColorModel; +import java.awt.image.CropImageFilter; +import java.awt.image.DataBuffer; +import java.awt.image.DataBufferInt; +import java.awt.image.FilteredImageSource; +import java.awt.image.ImageConsumer; +import java.awt.image.ImageObserver; +import java.awt.image.ImagingOpException; +import java.awt.image.SampleModel; +import java.awt.image.Raster; +import java.awt.image.RenderedImage; +import java.awt.image.WritableRaster; +import java.awt.image.renderable.RenderableImage; +import java.awt.image.renderable.RenderContext; import java.text.AttributedCharacterIterator; +import java.util.HashMap; +import java.util.Map; import java.util.Stack; -import java.lang.Integer; -import gnu.java.awt.ClasspathToolkit; -import gnu.java.awt.peer.ClasspathFontPeer; -import gnu.classpath.Configuration; public class GdkGraphics2D extends Graphics2D { @@ -85,6 +124,8 @@ public class GdkGraphics2D extends Graphics2D private RenderingHints hints; private BufferedImage bimage; + private Composite comp; + private Stack stateStack; native private void initState (GtkComponentPeer component); @@ -93,6 +134,7 @@ public class GdkGraphics2D extends Graphics2D native public void dispose (); native private int[] getImagePixels(); native private void cairoSurfaceSetFilter(int filter); + native void connectSignals (GtkComponentPeer component); public void finalize () { @@ -113,7 +155,7 @@ public class GdkGraphics2D extends Graphics2D { paint = g.paint; stroke = g.stroke; - hints = g.hints; + setRenderingHints (g.hints); if (g.fg.getAlpha() != -1) fg = new Color (g.fg.getRed (), g.fg.getGreen (), @@ -145,8 +187,8 @@ public class GdkGraphics2D extends Graphics2D setBackground (bg); setPaint (paint); setStroke (stroke); - setClip (clip); setTransform (transform); + setClip (clip); stateStack = new Stack(); } @@ -168,12 +210,22 @@ public class GdkGraphics2D extends Graphics2D GdkGraphics2D (GtkComponentPeer component) { this.component = component; + + setFont (new Font("SansSerif", Font.PLAIN, 12)); + + if (component.isRealized ()) + initComponentGraphics2D (); + else + connectSignals (component); + } + + void initComponentGraphics2D () + { initState (component); setColor (component.awtComponent.getForeground ()); setBackground (component.awtComponent.getBackground ()); setPaint (getColor()); - setFont (new Font("SansSerif", Font.PLAIN, 12)); setTransform (new AffineTransform ()); setStroke (new BasicStroke ()); setRenderingHints (getDefaultHints()); @@ -224,9 +276,6 @@ public class GdkGraphics2D extends Graphics2D private native void cairoSave (); private native void cairoRestore (); private native void cairoSetMatrix (double m[]); - private native void cairoSetFont (GdkClasspathFontPeer peer); - private native void cairoShowGlyphs (int codes[], - float positions[]); private native void cairoSetOperator (int cairoOperator); private native void cairoSetRGBColor (double red, double green, double blue); private native void cairoSetAlpha (double alpha); @@ -268,6 +317,7 @@ public class GdkGraphics2D extends Graphics2D private Shape clip; private AffineTransform transform; private Font font; + private Composite comp; DrawState (GdkGraphics2D g) { this.paint = g.paint; @@ -278,6 +328,7 @@ public class GdkGraphics2D extends Graphics2D if (g.transform != null) this.transform = (AffineTransform) g.transform.clone(); this.font = g.font; + this.comp = g.comp; } public void restore(GdkGraphics2D g) { @@ -288,6 +339,7 @@ public class GdkGraphics2D extends Graphics2D g.clip = this.clip; g.transform = this.transform; g.font = this.font; + g.comp = this.comp; } } @@ -303,17 +355,23 @@ public class GdkGraphics2D extends Graphics2D cairoRestore (); } + // Some operations (drawing rather than filling) require that their + // coords be shifted to land on 0.5-pixel boundaries, in order to land on + // "middle of pixel" coordinates and light up complete pixels. - double x; - double y; - private void setPos (double nx, double ny) + private boolean shiftDrawCalls = false; + private final double shifted(double coord, boolean doShift) { - x = nx; - y = ny; + if (doShift) + return Math.floor(coord) + 0.5; + else + return coord; } - private void walkPath(PathIterator p) + private final void walkPath(PathIterator p, boolean doShift) { + double x = 0; + double y = 0; double coords[] = new double[6]; cairoSetFillRule (p.getWindingRule ()); @@ -324,13 +382,15 @@ public class GdkGraphics2D extends Graphics2D { case PathIterator.SEG_MOVETO: - setPos(coords[0], coords[1]); - cairoMoveTo (coords[0], coords[1]); + x = shifted(coords[0], doShift); + y = shifted(coords[1], doShift); + cairoMoveTo (x, y); break; case PathIterator.SEG_LINETO: - setPos(coords[0], coords[1]); - cairoLineTo (coords[0], coords[1]); + x = shifted(coords[0], doShift); + y = shifted(coords[1], doShift); + cairoLineTo (x, y); break; case PathIterator.SEG_QUADTO: @@ -338,23 +398,25 @@ public class GdkGraphics2D extends Graphics2D // splitting a quadratic bezier into a cubic: // see: http://pfaedit.sourceforge.net/bezier.html - double x1 = x + (2.0/3.0) * (coords[0] - x); - double y1 = y + (2.0/3.0) * (coords[1] - y); + double x1 = x + (2.0/3.0) * (shifted(coords[0], doShift) - x); + double y1 = y + (2.0/3.0) * (shifted(coords[1], doShift) - y); - double x2 = x1 + (1.0/3.0) * (coords[2] - x); - double y2 = y1 + (1.0/3.0) * (coords[3] - y); + double x2 = x1 + (1.0/3.0) * (shifted(coords[2], doShift) - x); + double y2 = y1 + (1.0/3.0) * (shifted(coords[3], doShift) - y); - setPos(coords[2], coords[3]); + x = shifted(coords[2], doShift); + y = shifted(coords[3], doShift); cairoCurveTo (x1, y1, x2, y2, - coords[2], coords[3]); + x, y); break; case PathIterator.SEG_CUBICTO: - setPos(coords[4], coords[5]); - cairoCurveTo (coords[0], coords[1], - coords[2], coords[3], - coords[4], coords[5]); + x = shifted(coords[4], doShift); + y = shifted(coords[5], doShift); + cairoCurveTo (shifted(coords[0], doShift), shifted(coords[1], doShift), + shifted(coords[2], doShift), shifted(coords[3], doShift), + x, y); break; case PathIterator.SEG_CLOSE: @@ -365,7 +427,7 @@ public class GdkGraphics2D extends Graphics2D } - private Map getDefaultHints() + private final Map getDefaultHints() { HashMap defaultHints = new HashMap (); @@ -388,23 +450,19 @@ public class GdkGraphics2D extends Graphics2D } - private void updateBufferedImage() + private final void updateBufferedImage() { int[] pixels = getImagePixels(); updateImagePixels(pixels); } - private boolean isBufferedImageGraphics () + private final boolean isBufferedImageGraphics () { - - if (bimage != null) - return true; - else - return false; + return bimage != null; } - private void updateImagePixels (int[] pixels) + private final void updateImagePixels (int[] pixels) { // This function can only be used if @@ -439,11 +497,15 @@ public class GdkGraphics2D extends Graphics2D } - private boolean drawImage(Image img, - AffineTransform xform, - Color bgcolor, - ImageObserver obs) + private final boolean drawImage(Image img, + AffineTransform xform, + Color bgcolor, + ImageObserver obs) { + + if (img == null) + return false; + if (img instanceof GtkOffScreenImage && img.getGraphics () instanceof GdkGraphics2D && (xform == null @@ -461,8 +523,8 @@ public class GdkGraphics2D extends Graphics2D return true; } else - { - + { + // In this case, xform is an AffineTransform that transforms bounding // box of the specified image from image space to user space. However // when we pass this transform to cairo, cairo will use this transform @@ -475,23 +537,22 @@ public class GdkGraphics2D extends Graphics2D try { - invertedXform = xform.createInverse(); + invertedXform = xform.createInverse(); if (img instanceof BufferedImage) { // draw an image which has actually been loaded // into memory fully - BufferedImage b = (BufferedImage) img; - return drawRaster (b.getColorModel (), - b.getData (), - invertedXform, - bgcolor); + BufferedImage b = (BufferedImage) img; + return drawRaster (b.getColorModel (), + b.getData (), + invertedXform, + bgcolor); } else { - // begin progressive loading in a separate thread - new PainterThread (this, img, invertedXform, bgcolor); - return false; + return this.drawImage(GdkPixbufDecoder.createBufferedImage(img.getSource()), + xform, bgcolor,obs); } } catch (NoninvertibleTransformException e) @@ -517,38 +578,25 @@ public class GdkGraphics2D extends Graphics2D return; } - stateSave (); cairoNewPath (); - - boolean normalize; - normalize = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) - || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); - - if (normalize) - translate (0.5,0.5); if (s instanceof Rectangle2D) { Rectangle2D r = (Rectangle2D)s; - cairoRectangle (r.getX (), r.getY (), r.getWidth (), r.getHeight ()); + cairoRectangle (shifted(r.getX (), shiftDrawCalls), + shifted(r.getY (), shiftDrawCalls), + r.getWidth (), r.getHeight ()); } else - walkPath (s.getPathIterator (null)); + walkPath (s.getPathIterator (null), shiftDrawCalls); cairoStroke (); - if (normalize) - translate (-0.5,-0.5); - - stateRestore (); - if (isBufferedImageGraphics ()) updateBufferedImage(); - } public void fill (Shape s) { - stateSave(); cairoNewPath (); if (s instanceof Rectangle2D) { @@ -556,9 +604,8 @@ public class GdkGraphics2D extends Graphics2D cairoRectangle (r.getX (), r.getY (), r.getWidth (), r.getHeight ()); } else - walkPath (s.getPathIterator (null)); + walkPath (s.getPathIterator (null), false); cairoFill (); - stateRestore (); if (isBufferedImageGraphics ()) updateBufferedImage(); @@ -592,8 +639,8 @@ public class GdkGraphics2D extends Graphics2D r.getWidth (), r.getHeight ()); } else - walkPath (clip.getPathIterator (null)); - cairoClosePath (); + walkPath (clip.getPathIterator (null), false); + // cairoClosePath (); cairoClip (); } } @@ -739,7 +786,7 @@ public class GdkGraphics2D extends Graphics2D { BasicStroke bs = (BasicStroke) stroke; cairoSetLineCap (bs.getEndCap()); - cairoSetLineWidth (bs.getLineWidth() / 2.0); + cairoSetLineWidth (bs.getLineWidth()); cairoSetLineJoin (bs.getLineJoin()); cairoSetMiterLimit (bs.getMiterLimit()); float dashes[] = bs.getDashArray(); @@ -771,6 +818,9 @@ public class GdkGraphics2D extends Graphics2D public void setColor (Color c) { + if (c == null) + c = Color.BLACK; + fg = c; paint = c; cairoSetRGBColor (fg.getRed() / 255.0, @@ -802,23 +852,23 @@ public class GdkGraphics2D extends Graphics2D return clip.getBounds (); } - protected Rectangle2D getClipInDevSpace () - { - Rectangle2D uclip = clip.getBounds2D (); - if (transform == null) - return uclip; - else - { - Point2D pos = transform.transform (new Point2D.Double(uclip.getX (), - uclip.getY ()), - (Point2D)null); - Point2D extent = transform.deltaTransform (new Point2D.Double(uclip.getWidth (), - uclip.getHeight ()), - (Point2D)null); - return new Rectangle2D.Double (pos.getX (), pos.getY (), - extent.getX (), extent.getY ()); - } - } + protected Rectangle2D getClipInDevSpace () + { + Rectangle2D uclip = clip.getBounds2D (); + if (transform == null) + return uclip; + else + { + Point2D pos = transform.transform (new Point2D.Double(uclip.getX (), + uclip.getY ()), + (Point2D)null); + Point2D extent = transform.deltaTransform (new Point2D.Double(uclip.getWidth (), + uclip.getHeight ()), + (Point2D)null); + return new Rectangle2D.Double (pos.getX (), pos.getY (), + extent.getX (), extent.getY ()); + } + } public void setClip (int x, int y, int width, int height) { @@ -839,96 +889,34 @@ public class GdkGraphics2D extends Graphics2D r.getWidth (), r.getHeight ()); } else - walkPath (s.getPathIterator (null)); - cairoClosePath (); + walkPath (s.getPathIterator (null), false); + // cairoClosePath (); cairoClip (); } } + private static BasicStroke draw3DRectStroke = new BasicStroke(); + public void draw3DRect(int x, int y, int width, int height, boolean raised) { - Color std = fg; - Color light = std.brighter(); - Color dark = std.darker(); - - if (!raised) - { - Color t = light; - light = dark; - dark = t; - } - - double x1 = (double) x; - double x2 = (double) x + width; - - double y1 = (double) y; - double y2 = (double) y + height; - - stateSave (); - - cairoNewPath (); - - boolean normalize; - normalize = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) - || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); - - if (normalize) - { - x1 += 0.5; - y1 += 0.5; - x2 += 0.5; - y2 += 0.5; - } - - setColor (light); - cairoMoveTo (x1, y1); - cairoLineTo (x2, y1); - cairoLineTo (x2, y2); - cairoStroke (); - - cairoNewPath (); - setColor (dark); - cairoMoveTo (x1, y1); - cairoLineTo (x1, y2); - cairoLineTo (x2, y2); - cairoStroke (); - - stateRestore (); - + Stroke tmp = stroke; + setStroke(draw3DRectStroke); + super.draw3DRect(x, y, width, height, raised); + setStroke(tmp); if (isBufferedImageGraphics ()) updateBufferedImage(); - } public void fill3DRect(int x, int y, int width, int height, boolean raised) { - double step = 1.0; - if (stroke != null && stroke instanceof BasicStroke) - { - BasicStroke bs = (BasicStroke) stroke; - step = bs.getLineWidth(); - } - - Color bright = fg.brighter (); - Color dark = fg.darker (); - - draw3DRect (x, y, width, height, raised); - - stateSave (); - translate (step/2.0, step/2.0); - cairoNewPath (); - cairoRectangle ((double) x, (double) y, - ((double) width) - step, - ((double) height) - step ); - cairoClosePath (); - cairoFill (); - stateRestore (); - + Stroke tmp = stroke; + setStroke(draw3DRectStroke); + super.fill3DRect(x, y, width, height, raised); + setStroke(tmp); if (isBufferedImageGraphics ()) updateBufferedImage(); - } @@ -939,21 +927,21 @@ public class GdkGraphics2D extends Graphics2D public void fillRect (int x, int y, int width, int height) { - fill(new Rectangle (x, y, width, height)); + cairoNewPath (); + cairoRectangle (x, y, width, height); + cairoFill (); } public void clearRect (int x, int y, int width, int height) { - stateSave (); cairoSetRGBColor (bg.getRed() / 255.0, bg.getGreen() / 255.0, bg.getBlue() / 255.0); cairoSetAlpha (1.0); cairoNewPath (); cairoRectangle (x, y, width, height); - cairoClosePath (); cairoFill (); - stateRestore (); + setColor (fg); if (isBufferedImageGraphics ()) updateBufferedImage(); @@ -970,8 +958,8 @@ public class GdkGraphics2D extends Graphics2D return bg; } - private void doPolygon(int[] xPoints, int[] yPoints, int nPoints, - boolean close, boolean fill) + private final void doPolygon(int[] xPoints, int[] yPoints, int nPoints, + boolean close, boolean fill) { if (nPoints < 1) return; @@ -1026,9 +1014,9 @@ public class GdkGraphics2D extends Graphics2D doPolygon (xPoints, yPoints, nPoints, false, false); } - private boolean drawRaster (ColorModel cm, Raster r, - AffineTransform imageToUser, - Color bgcolor) + private final boolean drawRaster (ColorModel cm, Raster r, + AffineTransform imageToUser, + Color bgcolor) { if (r == null) return false; @@ -1087,10 +1075,7 @@ public class GdkGraphics2D extends Graphics2D } } - stateSave (); - translate (x, y); drawPixels (pixels, r.getWidth (), r.getHeight (), r.getWidth (), i2u); - stateRestore (); if (isBufferedImageGraphics ()) updateBufferedImage(); @@ -1133,113 +1118,6 @@ public class GdkGraphics2D extends Graphics2D } - //////////////////////////////////////// - ////// Supporting Private Classes ////// - //////////////////////////////////////// - - private class PainterThread implements Runnable, ImageConsumer - { - - // this is a helper which is spun off when someone tries to do - // Graphics2D.drawImage on an image we cannot determine to be either - // one of our own offscreen images or a BufferedImage; that is, when - // someone wants to draw an image which is possibly still loading over - // a network or something. you run it in a separate thread and it - // writes through to the underlying Graphics2D as pixels becomg - // available. - - GdkGraphics2D gr; - Image image; - ColorModel defaultModel; - AffineTransform xform; - Color bgcolor; - - public PainterThread (GdkGraphics2D g, Image im, - AffineTransform xf, Color bg) - { - image = im; - xform = xf; - bgcolor = bg; - this.gr = (GdkGraphics2D) g.create (); - new Thread (this).start (); - } - - public void imageComplete (int status) - { - } - - public void setColorModel (ColorModel model) - { - defaultModel = model; - } - - public void setDimensions (int width, int height) - { - } - - public void setHints (int hintflags) - { - } - - public void setPixels (int x, int y, int w, int h, ColorModel model, - byte[] pixels, int off, int scansize) - { - } - - public void setPixels (int x, int y, int w, int h, ColorModel model, - int[] pixels, int off, int scansize) - { - gr.stateSave (); - gr.translate (x, y); - - if (model == null) - model = defaultModel; - - int pixels2[]; - if (model != null) - { - pixels2 = new int[pixels.length]; - for (int yy = 0; yy < h; yy++) - for (int xx = 0; xx < w; xx++) - { - int i = yy * scansize + xx; - pixels2[i] = model.getRGB (pixels[i]); - } - } - else - pixels2 = pixels; - - // change all transparent pixels in the image to the - // specified bgcolor - - if (bgcolor != null) - { - for (int i = 0; i < pixels2.length; i++) - { - if (model.getAlpha (pixels2[i]) == 0) - pixels2[i] = bgcolor.getRGB (); - } - } - - double[] xf = new double[6]; - xform.getMatrix(xf); - gr.drawPixels (pixels2, w, h, scansize, xf); - gr.stateRestore (); - } - - public void setProperties (java.util.Hashtable props) - { - } - - public void run () - { - image.getSource ().startProduction (this); - gr.dispose (); - } - } - - - /////////////////////////////////////////////// ////// Unimplemented Stubs and Overloads ////// /////////////////////////////////////////////// @@ -1259,6 +1137,8 @@ public class GdkGraphics2D extends Graphics2D public void setComposite(Composite comp) { + this.comp = comp; + if (comp instanceof AlphaComposite) { AlphaComposite a = (AlphaComposite) comp; @@ -1297,8 +1177,11 @@ public class GdkGraphics2D extends Graphics2D else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT)) cairoSurfaceSetFilter(4); - } + } + shiftDrawCalls = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) + || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); + } public Object getRenderingHint(RenderingHints.Key hintKey) @@ -1331,6 +1214,9 @@ public class GdkGraphics2D extends Graphics2D else if(hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT)) cairoSurfaceSetFilter(4); } + + shiftDrawCalls = hints.containsValue (RenderingHints.VALUE_STROKE_NORMALIZE) + || hints.containsValue (RenderingHints.VALUE_STROKE_DEFAULT); } public void addRenderingHints(Map hints) @@ -1345,7 +1231,10 @@ public class GdkGraphics2D extends Graphics2D public Composite getComposite() { - throw new java.lang.UnsupportedOperationException (); + if (comp == null) + return AlphaComposite.SrcOver; + else + return comp; } public FontRenderContext getFontRenderContext () @@ -1353,23 +1242,6 @@ public class GdkGraphics2D extends Graphics2D return new FontRenderContext (transform, true, true); } - public void drawGlyphVector (GlyphVector g, float x, float y) - { - stateSave (); - setFont (g.getFont ()); - translate ((double)x, (double)y); - cairoMoveTo (0, 0); - int nglyphs = g.getNumGlyphs (); - int codes[] = g.getGlyphCodes (0, nglyphs, (int []) null); - float posns[] = g.getGlyphPositions (0, nglyphs, (float []) null); - cairoShowGlyphs (codes, posns); - - if (isBufferedImageGraphics ()) - updateBufferedImage(); - - stateRestore (); - } - public void copyArea (int x, int y, int width, int height, int dx, int dy) { throw new java.lang.UnsupportedOperationException (); @@ -1418,6 +1290,9 @@ public class GdkGraphics2D extends Graphics2D Color bgcolor, ImageObserver observer) { + if (img == null) + return false; + Image subImage; int sourceWidth = sx2 - sx1; @@ -1501,15 +1376,40 @@ public class GdkGraphics2D extends Graphics2D drawLine (x1, y + height, x2, y + height); } - public void drawString (String str, int x, int y) + // these are the most accelerated painting paths + native void cairoDrawGdkGlyphVector (GdkFontPeer f, GdkGlyphVector gv, float x, float y); + native void cairoDrawGdkTextLayout (GdkFontPeer f, GdkTextLayout gl, float x, float y); + native void cairoDrawString (GdkFontPeer f, String str, float x, float y); + + GdkFontPeer getFontPeer() { - drawString (str, (float)x, (float)y); + return (GdkFontPeer) getFont().getPeer(); + } + + public void drawGdkGlyphVector(GdkGlyphVector gv, float x, float y) + { + cairoDrawGdkGlyphVector(getFontPeer(), gv, x, y); + if (isBufferedImageGraphics ()) + updateBufferedImage(); + } + + public void drawGdkTextLayout(GdkTextLayout gl, float x, float y) + { + cairoDrawGdkTextLayout(getFontPeer(), gl, x, y); + if (isBufferedImageGraphics ()) + updateBufferedImage(); } public void drawString (String str, float x, float y) { - GlyphVector gv = font.createGlyphVector (getFontRenderContext(), str); - drawGlyphVector (gv, x, y); + cairoDrawString(getFontPeer(), str, x, y); + if (isBufferedImageGraphics ()) + updateBufferedImage(); + } + + public void drawString (String str, int x, int y) + { + drawString (str, (float)x, (float)y); } public void drawString (AttributedCharacterIterator ci, int x, int y) @@ -1517,6 +1417,14 @@ public class GdkGraphics2D extends Graphics2D drawString (ci, (float)x, (float)y); } + public void drawGlyphVector (GlyphVector gv, float x, float y) + { + if (gv instanceof GdkGlyphVector) + drawGdkGlyphVector((GdkGlyphVector)gv, x, y); + else + throw new java.lang.UnsupportedOperationException (); + } + public void drawString (AttributedCharacterIterator ci, float x, float y) { GlyphVector gv = font.createGlyphVector (getFontRenderContext(), ci); @@ -1562,30 +1470,38 @@ public class GdkGraphics2D extends Graphics2D return font; } + // Until such time as pango is happy to talk directly to cairo, we + // actually need to redirect some calls from the GtkFontPeer and + // GtkFontMetrics into the drawing kit and ask cairo ourselves. + + static native void releasePeerGraphicsResource(GdkFontPeer f); + static native void getPeerTextMetrics (GdkFontPeer f, String str, double [] metrics); + static native void getPeerFontMetrics (GdkFontPeer f, double [] metrics); + public FontMetrics getFontMetrics () { + // the reason we go via the toolkit here is to try to get + // a cached object. the toolkit keeps such a cache. return Toolkit.getDefaultToolkit ().getFontMetrics (font); } public FontMetrics getFontMetrics (Font f) { + // the reason we go via the toolkit here is to try to get + // a cached object. the toolkit keeps such a cache. return Toolkit.getDefaultToolkit ().getFontMetrics (f); } public void setFont (Font f) { - if (f.getPeer() instanceof GdkClasspathFontPeer) + if (f.getPeer() instanceof GdkFontPeer) font = f; else font = ((ClasspathToolkit)(Toolkit.getDefaultToolkit ())) - .getFont (f.getName(), f.getAttributes ()); - - if (f != null && - f.getPeer() instanceof GdkClasspathFontPeer) - cairoSetFont ((GdkClasspathFontPeer) f.getPeer()); + .getFont (f.getName(), f.getAttributes ()); } - + public String toString() { return getClass ().getName () + diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java index dbcd2d1c437..45e0c21c0f2 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java @@ -38,18 +38,20 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; -import java.awt.*; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; +import java.awt.Rectangle; +import java.awt.Shape; import java.awt.image.BufferedImage; import java.util.Locale; - public class GdkGraphicsEnvironment extends GraphicsEnvironment { - public GdkGraphicsEnvironment () { - super(); + super(); } public GraphicsDevice[] getScreenDevices () @@ -66,22 +68,28 @@ public class GdkGraphicsEnvironment extends GraphicsEnvironment { return new GdkGraphics2D (image); } + native private int nativeGetNumFontFamilies (); + native private void nativeGetFontFamilies (String[] family_names); public Font[] getAllFonts () { throw new java.lang.UnsupportedOperationException (); } - public String[] getAvailableFontFamilyNames () - { - throw new java.lang.UnsupportedOperationException (); - } + public String[] getAvailableFontFamilyNames () + { + String[] family_names; + int array_size; + + array_size = nativeGetNumFontFamilies(); + family_names = new String[array_size]; + + nativeGetFontFamilies(family_names); + return family_names; + } public String[] getAvailableFontFamilyNames (Locale l) { throw new java.lang.UnsupportedOperationException (); } - - -} // class GdkGraphicsEnvironment - +} diff --git a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java index 5c7fd96003b..a7b93e5b9ad 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java @@ -1,52 +1,57 @@ /* GdkPixbufDecoder.java -- Image data decoding object - Copyright (C) 2003 Free Software Foundation, Inc. - - This file is part of GNU Classpath. - - GNU Classpath is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - GNU Classpath is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with GNU Classpath; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. - - Linking this library statically or dynamically with other modules is - making a combined work based on this library. Thus, the terms and - conditions of the GNU General Public License cover the whole - combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent - modules, and to copy and distribute the resulting executable under - terms of your choice, provided that you also meet, for each linked - independent module, the terms and conditions of the license of that - module. An independent module is a module which is not derived from - or based on this library. If you modify this library, you may extend - this exception to your version of the library, but you are not - obligated to do so. If you do not wish to do so, delete this - exception statement from your version. */ + Copyright (C) 2003, 2004 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ package gnu.java.awt.peer.gtk; -import java.awt.image.*; +import gnu.classpath.Configuration; + +import java.awt.image.BufferedImage; +import java.awt.image.ColorModel; +import java.awt.image.DirectColorModel; +import java.awt.image.ImageConsumer; +import java.awt.image.ImageProducer; import java.io.FileDescriptor; import java.io.FileInputStream; -import java.io.InputStream; import java.io.IOException; +import java.io.InputStream; import java.net.URL; -import java.util.Vector; import java.util.Hashtable; -import gnu.classpath.Configuration; +import java.util.Vector; public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder { diff --git a/libjava/gnu/java/awt/peer/gtk/GdkTextLayout.java b/libjava/gnu/java/awt/peer/gtk/GdkTextLayout.java new file mode 100644 index 00000000000..26cfc16f0da --- /dev/null +++ b/libjava/gnu/java/awt/peer/gtk/GdkTextLayout.java @@ -0,0 +1,435 @@ +/* GdkTextLayout.java + Copyright (C) 2003 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + + +package gnu.java.awt.peer.gtk; + +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.font.FontRenderContext; +import java.awt.font.GlyphMetrics; +import java.awt.font.GlyphVector; +import java.awt.font.TextHitInfo; +import java.awt.font.TextLayout; +import java.awt.geom.AffineTransform; +import java.awt.geom.GeneralPath; +import java.awt.geom.Rectangle2D; +import java.text.CharacterIterator; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.util.Map; +import java.awt.font.TextAttribute; + +import gnu.classpath.Configuration; +import gnu.java.awt.peer.ClasspathTextLayoutPeer; + +/** + * This is an implementation of the text layout peer interface which + * delegates all the hard work to pango. + * + * @author Graydon Hoare + */ + +public class GdkTextLayout + implements ClasspathTextLayoutPeer +{ + // native side, plumbing, etc. + static + { + if (Configuration.INIT_LOAD_LIBRARY) + { + System.loadLibrary("gtkpeer"); + } + initStaticState (); + } + private native void setText(String str); + private native void getExtents(double[] inkExtents, + double[] logExtents); + private native void indexToPos(int idx, double[] pos); + private native void initState (); + private native void dispose (); + native static void initStaticState (); + private final int native_state = GtkGenericPeer.getUniqueInteger (); + protected void finalize () + { + dispose (); + } + + // we hold on to these to make sure we can render when presented + // with non-GdkGraphics2D paint targets + private AttributedString attributedString; + private FontRenderContext fontRenderContext; + + public GdkTextLayout(AttributedString str, FontRenderContext frc) + { + initState(); + attributedString = str; + fontRenderContext = frc; + } + + protected class CharacterIteratorProxy + implements CharacterIterator + { + public CharacterIterator target; + public int begin; + public int limit; + public int index; + + public CharacterIteratorProxy (CharacterIterator ci) + { + target = ci; + } + + public int getBeginIndex () + { + return begin; + } + + public int getEndIndex () + { + return limit; + } + + public int getIndex () + { + return index; + } + + public char setIndex (int idx) + throws IllegalArgumentException + { + if (idx < begin || idx >= limit) + throw new IllegalArgumentException (); + char ch = target.setIndex (idx); + index = idx; + return ch; + } + + public char first () + { + int save = target.getIndex (); + char ch = target.setIndex (begin); + target.setIndex (save); + return ch; + } + + public char last () + { + if (begin == limit) + return this.first (); + + int save = target.getIndex (); + char ch = target.setIndex (limit - 1); + target.setIndex (save); + return ch; + } + + public char current () + { + return target.current(); + } + + public char next () + { + if (index >= limit - 1) + return CharacterIterator.DONE; + else + { + index++; + return target.next(); + } + } + + public char previous () + { + if (index <= begin) + return CharacterIterator.DONE; + else + { + index--; + return target.previous (); + } + } + + public Object clone () + { + CharacterIteratorProxy cip = new CharacterIteratorProxy (this.target); + cip.begin = this.begin; + cip.limit = this.limit; + cip.index = this.index; + return cip; + } + + } + + + // public side + + public void draw (Graphics2D g2, float x, float y) + { + if (g2 instanceof GdkGraphics2D) + { + // we share pango structures directly with GdkGraphics2D + // when legal + GdkGraphics2D gg2 = (GdkGraphics2D) g2; + gg2.drawGdkTextLayout(this, x, y); + } + else + { + // falling back to a rather tedious layout algorithm when + // not legal + AttributedCharacterIterator ci = attributedString.getIterator (); + CharacterIteratorProxy proxy = new CharacterIteratorProxy (ci); + Font defFont = g2.getFont (); + + /* Note: this implementation currently only interprets FONT text + * attributes. There is a reasonable argument to be made for some + * attributes being interpreted out here, where we have control of the + * Graphics2D and can construct or derive new fonts, and some + * attributes being interpreted by the GlyphVector itself. So far, for + * all attributes except FONT we do neither. + */ + + for (char c = ci.first (); + c != CharacterIterator.DONE; + c = ci.next ()) + { + proxy.begin = ci.getIndex (); + proxy.limit = ci.getRunLimit(TextAttribute.FONT); + if (proxy.limit <= proxy.begin) + continue; + + proxy.index = proxy.begin; + + Object fnt = ci.getAttribute(TextAttribute.FONT); + GlyphVector gv; + if (fnt instanceof Font) + gv = ((Font)fnt).createGlyphVector (fontRenderContext, proxy); + else + gv = defFont.createGlyphVector (fontRenderContext, proxy); + + g2.drawGlyphVector (gv, x, y); + + int n = gv.getNumGlyphs (); + for (int i = 0; i < n; ++i) + { + GlyphMetrics gm = gv.getGlyphMetrics (i); + if (gm.getAdvanceX() == gm.getAdvance ()) + x += gm.getAdvanceX (); + else + y += gm.getAdvanceY (); + } + } + } + } + + public TextHitInfo getStrongCaret (TextHitInfo hit1, + TextHitInfo hit2) + { + throw new Error("not implemented"); + } + + public byte getBaseline () + { + throw new Error("not implemented"); + } + + public boolean isLeftToRight () + { + throw new Error("not implemented"); + } + + public boolean isVertical () + { + throw new Error("not implemented"); + } + + public float getAdvance () + { + throw new Error("not implemented"); + } + + public float getAscent () + { + throw new Error("not implemented"); + } + + public float getDescent () + { + throw new Error("not implemented"); + } + + public float getLeading () + { + throw new Error("not implemented"); + } + + public int getCharacterCount () + { + throw new Error("not implemented"); + } + + public byte getCharacterLevel (int index) + { + throw new Error("not implemented"); + } + + public float[] getBaselineOffsets () + { + throw new Error("not implemented"); + } + + public Shape getBlackBoxBounds (int firstEndpoint, int secondEndpoint) + { + throw new Error("not implemented"); + } + + public Rectangle2D getBounds () + { + double[] inkExtents = new double[4]; + double[] logExtents = new double[4]; + getExtents(inkExtents, logExtents); + return new Rectangle2D.Double(logExtents[0], logExtents[1], + logExtents[2], logExtents[3]); + } + + public float[] getCaretInfo (TextHitInfo hit, Rectangle2D bounds) + { + throw new Error("not implemented"); + } + + public Shape getCaretShape (TextHitInfo hit, Rectangle2D bounds) + { + throw new Error("not implemented"); + } + + public Shape[] getCaretShapes (int offset, Rectangle2D bounds, + TextLayout.CaretPolicy policy) + { + throw new Error("not implemented"); + } + + public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint, + Rectangle2D bounds) + { + AffineTransform at = new AffineTransform(); + GeneralPath gp = new GeneralPath(); + double [] rect = new double[4]; + Rectangle2D tmp = new Rectangle2D.Double(); + for (int i = firstEndpoint; i <= secondEndpoint; ++i) + { + indexToPos(i, rect); + tmp.setRect(rect[0], rect[1], rect[2], rect[3]); + Rectangle2D.intersect(tmp, bounds, tmp); + gp.append(tmp.getPathIterator(at), false); + } + return gp; + } + + public int[] getLogicalRangesForVisualSelection (TextHitInfo firstEndpoint, + TextHitInfo secondEndpoint) + { + throw new Error("not implemented"); + } + + public TextHitInfo getNextLeftHit (int offset, TextLayout.CaretPolicy policy) + { + throw new Error("not implemented"); + } + public TextHitInfo getNextRightHit (int offset, TextLayout.CaretPolicy policy) + { + throw new Error("not implemented"); + } + public TextHitInfo hitTestChar (float x, float y, Rectangle2D bounds) + { + throw new Error("not implemented"); + } + public TextHitInfo getVisualOtherHit (TextHitInfo hit) + { + throw new Error("not implemented"); + } + + public float getVisibleAdvance () + { + throw new Error("not implemented"); + } + + public Shape getOutline (AffineTransform tx) + { + throw new Error("not implemented"); + } + + public Shape getVisualHighlightShape (TextHitInfo firstEndpoint, + TextHitInfo secondEndpoint, + Rectangle2D bounds) + { + throw new Error("not implemented"); + } + + + public TextLayout getJustifiedLayout (float justificationWidth) + { + throw new Error("not implemented"); + } + + public void handleJustify (float justificationWidth) + { + throw new Error("not implemented"); + } + + public Object clone () + { + throw new Error("not implemented"); + } + + public int hashCode () + { + throw new Error("not implemented"); + } + + public boolean equals (ClasspathTextLayoutPeer tl) + { + throw new Error("not implemented"); + } + + public String toString () + { + throw new Error("not implemented"); + } + +} diff --git a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java index db8aed6087b..9fba828b74b 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkButtonPeer.java @@ -1,5 +1,5 @@ /* GtkButtonPeer.java -- Implements ButtonPeer with GTK - Copyright (C) 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -43,8 +43,8 @@ import java.awt.Button; import java.awt.Component; import java.awt.Font; import java.awt.Point; -import java.awt.event.MouseEvent; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.awt.peer.ButtonPeer; public class GtkButtonPeer extends GtkComponentPeer @@ -52,13 +52,15 @@ public class GtkButtonPeer extends GtkComponentPeer { native void create (String label); - public native void connectJObject (); public native void connectSignals (); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); native void gtkSetLabel (String label); native void gtkWidgetSetForeground (int red, int green, int blue); + native void gtkWidgetSetBackground (int red, int green, int blue); native void gtkActivate (); + native void gtkWidgetRequestFocus (); + native void setNativeBounds (int x, int y, int width, int height); public GtkButtonPeer (Button b) { @@ -86,8 +88,8 @@ public class GtkButtonPeer extends GtkComponentPeer if (!me.isConsumed () && (me.getModifiersEx () & MouseEvent.BUTTON1_DOWN_MASK) != 0 && awtComponent.getBounds().contains(p)) - postActionEvent (((Button)awtComponent).getActionCommand (), - me.getModifiersEx ()); + postActionEvent (((Button) awtComponent).getActionCommand (), + me.getModifiersEx ()); } if (e.getID () == KeyEvent.KEY_PRESSED) diff --git a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java index 361136f08e9..a6fd1bac183 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java @@ -55,7 +55,7 @@ public class GtkCheckboxPeer extends GtkComponentPeer public native void create (GtkCheckboxGroupPeer group); public native void nativeSetCheckboxGroup (GtkCheckboxGroupPeer group); public native void connectSignals (); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); native void gtkButtonSetLabel (String label); native void gtkToggleButtonSetActive (boolean is_active); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java index 2ecea5cb9ba..05464143dcf 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkChoicePeer.java @@ -59,6 +59,10 @@ public class GtkChoicePeer extends GtkComponentPeer append (items); } + + int selected = c.getSelectedIndex(); + if (selected >= 0) + select(selected); } native void create (); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkClipboard.java b/libjava/gnu/java/awt/peer/gtk/GtkClipboard.java index 86678f8ab1c..ecc4c5cf7a1 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkClipboard.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkClipboard.java @@ -43,9 +43,9 @@ import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.IOException; public class GtkClipboard extends Clipboard { @@ -60,15 +60,13 @@ public class GtkClipboard extends Clipboard static boolean hasSelection = false; - protected - GtkClipboard () + protected GtkClipboard() { - super ("System Clipboard"); - initNativeState (); + super("System Clipboard"); + initNativeState(); } - public Transferable - getContents (Object requestor) + public Transferable getContents(Object requestor) { synchronized (this) { @@ -77,72 +75,76 @@ public class GtkClipboard extends Clipboard } /* Java doesn't own the selection, so we need to ask X11 */ + // XXX: Does this hold with Swing too ? synchronized (selectionLock) { - requestStringConversion (); + requestStringConversion(); + try { - selectionLock.wait (SELECTION_RECEIVED_TIMEOUT); + selectionLock.wait(SELECTION_RECEIVED_TIMEOUT); } catch (InterruptedException e) { return null; } - return (selection == null) ? null : new StringSelection (selection); + return selection == null ? null : new StringSelection(selection); } } - void - stringSelectionReceived (String newSelection) + void stringSelectionReceived(String newSelection) { synchronized (selectionLock) { selection = newSelection; - selectionLock.notify (); + selectionLock.notify(); } } /* convert Java clipboard data into a String suitable for sending to another application */ - synchronized String - stringSelectionHandler () throws IOException + synchronized String stringSelectionHandler() throws IOException { String selection = null; - try { - if (contents.isDataFlavorSupported (DataFlavor.stringFlavor)) - selection = (String)contents.getTransferData (DataFlavor.stringFlavor); - else if (contents.isDataFlavorSupported (DataFlavor.plainTextFlavor)) - { - StringBuffer sbuf = new StringBuffer (); - InputStreamReader reader; - char readBuf[] = new char[512]; - int numChars; + try + { + if (contents.isDataFlavorSupported(DataFlavor.stringFlavor)) + selection = (String)contents.getTransferData(DataFlavor.stringFlavor); + else if (contents.isDataFlavorSupported(DataFlavor.plainTextFlavor)) + { + StringBuffer sbuf = new StringBuffer(); + InputStreamReader reader; + char readBuf[] = new char[512]; + int numChars; - reader = new InputStreamReader - ((InputStream) - contents.getTransferData (DataFlavor.plainTextFlavor), "UNICODE"); + reader = new InputStreamReader + ((InputStream) + contents.getTransferData(DataFlavor.plainTextFlavor), "UNICODE"); - while (true) - { - numChars = reader.read (readBuf); - if (numChars == -1) - break; - sbuf.append (readBuf, 0, numChars); - } + while (true) + { + numChars = reader.read(readBuf); + if (numChars == -1) + break; + sbuf.append(readBuf, 0, numChars); + } - selection = new String (sbuf); - } - } catch (Exception e) { } + selection = new String(sbuf); + } + } + catch (Exception e) + { + } return selection; } - public synchronized void - setContents (Transferable contents, ClipboardOwner owner) + public synchronized void setContents(Transferable contents, + ClipboardOwner owner) { - selectionGet (); + selectionGet(); this.contents = contents; this.owner = owner; @@ -150,20 +152,19 @@ public class GtkClipboard extends Clipboard hasSelection = true; } - synchronized - void selectionClear () + synchronized void selectionClear() { hasSelection = false; if (owner != null) { - owner.lostOwnership (this, contents); + owner.lostOwnership(this, contents); owner = null; contents = null; } } - native void initNativeState (); - native static void requestStringConversion (); - native static void selectionGet (); + native void initNativeState(); + native static void requestStringConversion(); + native static void selectionGet(); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index eae5a948bc4..31d59ce19b0 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -77,6 +77,8 @@ public class GtkComponentPeer extends GtkGenericPeer Insets insets; + boolean isInRepaint; + /* this isEnabled differs from Component.isEnabled, in that it knows if a parent is disabled. In that case Component.isEnabled may return true, but our isEnabled will always return false */ @@ -85,7 +87,6 @@ public class GtkComponentPeer extends GtkGenericPeer native int[] gtkWidgetGetForeground (); native int[] gtkWidgetGetBackground (); - native void gtkWidgetSetVisible (boolean b); native void gtkWidgetGetDimensions (int[] dim); native void gtkWidgetGetPreferredDimensions (int[] dim); native void gtkWidgetGetLocationOnScreen (int[] point); @@ -97,17 +98,14 @@ public class GtkComponentPeer extends GtkGenericPeer native void gtkWidgetRequestFocus (); native void gtkWidgetDispatchKeyEvent (int id, long when, int mods, int keyCode, int keyLocation); - native void gtkSetFont (String name, int style, int size); - native void gtkWidgetQueueDrawArea(int x, int y, int width, int height); - native void addExposeFilter(); - native void removeExposeFilter(); + + native boolean isRealized (); void create () { throw new RuntimeException (); } - native void connectJObject (); native void connectSignals (); protected GtkComponentPeer (Component awtComponent) @@ -118,9 +116,6 @@ public class GtkComponentPeer extends GtkGenericPeer create (); - setParent (); - - connectJObject (); connectSignals (); if (awtComponent.getForeground () != null) @@ -130,12 +125,22 @@ public class GtkComponentPeer extends GtkGenericPeer if (awtComponent.getFont() != null) setFont(awtComponent.getFont()); - setCursor (awtComponent.getCursor ()); + Component parent = awtComponent.getParent (); + + // Only set our parent on the GTK side if our parent on the AWT + // side is not showing. Otherwise the gtk peer will be shown + // before we've had a chance to position and size it properly. + if (awtComponent instanceof Window + || (parent != null && ! parent.isShowing ())) + setParentAndBounds (); + } + + void setParentAndBounds () + { + setParent (); setComponentBounds (); - Rectangle bounds = awtComponent.getBounds (); - setBounds (bounds.x, bounds.y, bounds.width, bounds.height); setVisibleAndEnabled (); } @@ -154,15 +159,32 @@ public class GtkComponentPeer extends GtkGenericPeer gtkWidgetSetParent (p); } + void beginNativeRepaint () + { + isInRepaint = true; + } + + void endNativeRepaint () + { + isInRepaint = false; + } + /* * Set the bounds of this peer's AWT Component based on dimensions * returned by the native windowing system. Most Components impose - * their dimensions on the peers so the default implementation does - * nothing. However some peers, like GtkFileDialogPeer, need to - * pass their size back to the AWT Component. + * their dimensions on the peers which is what the default + * implementation does. However some peers, like GtkFileDialogPeer, + * need to pass their size back to the AWT Component. */ void setComponentBounds () { + Rectangle bounds = awtComponent.getBounds (); + + if (bounds.x == 0 && bounds.y == 0 + && bounds.width == 0 && bounds.height == 0) + return; + + setBounds (bounds.x, bounds.y, bounds.width, bounds.height); } void setVisibleAndEnabled () @@ -180,7 +202,9 @@ public class GtkComponentPeer extends GtkGenericPeer public Image createImage (ImageProducer producer) { - return new GtkImage (producer, null); + GtkImage image = new GtkImage (producer, null); + producer.startProduction (image); + return image; } public Image createImage (int width, int height) @@ -195,6 +219,9 @@ public class GtkComponentPeer extends GtkGenericPeer else g = new GdkGraphics (width, height); + g.setColor(getBackground()); + g.fillRect(0, 0, width, height); + return new GtkOffScreenImage (null, g, width, height); } @@ -215,7 +242,7 @@ public class GtkComponentPeer extends GtkGenericPeer public FontMetrics getFontMetrics (Font font) { - return new GdkFontMetrics (font); + return getToolkit().getFontMetrics(font); } public Graphics getGraphics () @@ -265,8 +292,8 @@ public class GtkComponentPeer extends GtkGenericPeer // Some peers like GtkFileDialogPeer are repainted by Gtk itself if (g == null) break; - - g.setClip (((PaintEvent)event).getUpdateRect()); + + g.setClip (((PaintEvent) event).getUpdateRect()); if (id == PaintEvent.PAINT) awtComponent.paint (g); @@ -310,21 +337,6 @@ public class GtkComponentPeer extends GtkGenericPeer public void paint (Graphics g) { - Component parent = awtComponent.getParent(); - GtkComponentPeer parentPeer = null; - if ((parent instanceof Container) && !parent.isLightweight()) - parentPeer = (GtkComponentPeer) parent.getPeer(); - - addExposeFilter(); - if (parentPeer != null) - parentPeer.addExposeFilter(); - - Rectangle clip = g.getClipBounds(); - gtkWidgetQueueDrawArea(clip.x, clip.y, clip.width, clip.height); - - removeExposeFilter(); - if (parentPeer != null) - parentPeer.removeExposeFilter(); } public Dimension preferredSize () @@ -371,8 +383,11 @@ public class GtkComponentPeer extends GtkGenericPeer public void repaint (long tm, int x, int y, int width, int height) { + if (x == 0 && y == 0 && width == 0 && height == 0) + return; + q.postEvent (new PaintEvent (awtComponent, PaintEvent.UPDATE, - new Rectangle (x, y, width, height))); + new Rectangle (x, y, width, height))); } public void requestFocus () @@ -391,7 +406,7 @@ public class GtkComponentPeer extends GtkGenericPeer gtkWidgetSetBackground (c.getRed(), c.getGreen(), c.getBlue()); } - native public void setNativeBounds (int x, int y, int width, int height); + native void setNativeBounds (int x, int y, int width, int height); public void setBounds (int x, int y, int width, int height) { @@ -426,13 +441,24 @@ public class GtkComponentPeer extends GtkGenericPeer if (parent instanceof Window && !lightweightChild) { Insets insets = ((Window) parent).getInsets (); - // Convert from Java coordinates to GTK coordinates. - setNativeBounds (x - insets.left, y - insets.top, width, height); + GtkWindowPeer peer = (GtkWindowPeer) parent.getPeer (); + int menuBarHeight = 0; + if (peer instanceof GtkFramePeer) + menuBarHeight = ((GtkFramePeer) peer).getMenuBarHeight (); + + // Convert from Java coordinates to GTK coordinates. + setNativeBounds (x - insets.left, y - insets.top + menuBarHeight, + width, height); } else setNativeBounds (x, y, width, height); } + void setCursor () + { + setCursor (awtComponent.getCursor ()); + } + public void setCursor (Cursor cursor) { gtkWidgetSetCursor (cursor.getType ()); @@ -448,7 +474,7 @@ public class GtkComponentPeer extends GtkGenericPeer // FIXME: This should really affect the widget tree below me. // Currently this is only handled if the call is made directly on // a text widget, which implements setFont() itself. - gtkSetFont(f.getName(), f.getStyle(), f.getSize()); + gtkWidgetModifyFont(f.getName(), f.getStyle(), f.getSize()); } public void setForeground (Color c) @@ -488,8 +514,9 @@ public class GtkComponentPeer extends GtkGenericPeer protected void postExposeEvent (int x, int y, int width, int height) { - q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, - new Rectangle (x, y, width, height))); + if (!isInRepaint) + q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, + new Rectangle (x, y, width, height))); } protected void postKeyEvent (int id, long when, int mods, diff --git a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java index 040499724fd..7fddd56619f 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkContainerPeer.java @@ -45,13 +45,16 @@ import java.awt.Container; import java.awt.Font; import java.awt.Graphics; import java.awt.Insets; +import java.awt.Window; import java.awt.event.PaintEvent; +import java.awt.peer.ComponentPeer; import java.awt.peer.ContainerPeer; public class GtkContainerPeer extends GtkComponentPeer implements ContainerPeer { Container c; + boolean isValidating; public GtkContainerPeer(Container c) { @@ -59,22 +62,38 @@ public class GtkContainerPeer extends GtkComponentPeer this.c = c; } - public void beginValidate() + public void beginValidate () { + isValidating = true; } - public void endValidate() + public void endValidate () { -// q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, -// new Rectangle (x, y, width, height))); -// Graphics gc = getGraphics (); -// if (gc != null) -// { -// awtComponent.update (gc); -// gc.dispose (); -// } -// System.out.println ("got here"); -// awtComponent.repaint (); + Component parent = awtComponent.getParent (); + + // Only set our parent on the GTK side if our parent on the AWT + // side is not showing. Otherwise the gtk peer will be shown + // before we've had a chance to position and size it properly. + if (parent != null && parent.isShowing ()) + { + Component[] components = ((Container) awtComponent).getComponents (); + int ncomponents = components.length; + + for (int i = 0; i < ncomponents; i++) + { + ComponentPeer peer = components[i].getPeer (); + + // Skip lightweight peers. + if (peer instanceof GtkComponentPeer) + ((GtkComponentPeer) peer).setParentAndBounds (); + } + + // GTK windows don't have parents. + if (!(awtComponent instanceof Window)) + setParentAndBounds (); + } + + isValidating = false; } public Insets getInsets() diff --git a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java index 1d6ce8b8bf0..af22a2723ef 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java @@ -42,9 +42,9 @@ import java.awt.AWTEvent; import java.awt.Component; import java.awt.Dialog; import java.awt.Graphics; -import java.awt.peer.DialogPeer; import java.awt.Rectangle; import java.awt.event.PaintEvent; +import java.awt.peer.DialogPeer; public class GtkDialogPeer extends GtkWindowPeer implements DialogPeer @@ -75,11 +75,12 @@ public class GtkDialogPeer extends GtkWindowPeer protected void postExposeEvent (int x, int y, int width, int height) { - q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, - new Rectangle (x + insets.left, - y + insets.top, - width, height))); - } + if (!isInRepaint) + q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, + new Rectangle (x + insets.left, + y + insets.top, + width, height))); + } void create () { diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java index d31e0c5be02..19925568e87 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java @@ -45,8 +45,8 @@ import java.awt.Graphics; import java.awt.Window; import java.awt.event.WindowEvent; import java.awt.peer.FileDialogPeer; -import java.io.FilenameFilter; import java.io.File; +import java.io.FilenameFilter; public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer { @@ -57,7 +57,6 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer private FilenameFilter filter; native void create (GtkContainerPeer parent); - native void connectJObject (); native void connectSignals (); native void nativeSetFile (String file); native public String nativeGetDirectory(); @@ -94,6 +93,7 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer awtComponent.getY (), dims[0], dims[1]); } + super.setComponentBounds (); } public void setFile (String fileName) diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFontPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFontPeer.java index 5de3301270d..605d738a199 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFontPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFontPeer.java @@ -1,5 +1,5 @@ /* GtkFontPeer.java -- Implements FontPeer with GTK+ - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,20 +37,25 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; + +import gnu.java.awt.peer.ClasspathFontPeer; + +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.font.FontRenderContext; +import java.awt.font.GlyphVector; +import java.awt.font.LineMetrics; +import java.awt.geom.Rectangle2D; import java.awt.peer.FontPeer; -import java.awt.*; -import java.awt.geom.*; -import java.awt.font.*; +import java.text.CharacterIterator; import java.util.Locale; -import java.util.ResourceBundle; import java.util.MissingResourceException; -import java.text.*; -import gnu.java.awt.peer.ClasspathFontPeer; +import java.util.ResourceBundle; public class GtkFontPeer extends ClasspathFontPeer { private static ResourceBundle bundle; - + static { try diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java index e1a877eedcb..c0c1437b656 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java @@ -39,6 +39,7 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; import java.awt.Component; +import java.awt.Container; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; @@ -57,51 +58,72 @@ public class GtkFramePeer extends GtkWindowPeer private int menuBarHeight; private MenuBarPeer menuBar; native int getMenuBarHeight (MenuBarPeer bar); - + native void setMenuBarWidth (MenuBarPeer bar, int width); native void setMenuBarPeer (MenuBarPeer bar); native void removeMenuBarPeer (); - native void moveLayout (int offset); - native void gtkLayoutSetVisible (boolean vis); + native void gtkFixedSetVisible (boolean visible); + + int getMenuBarHeight () + { + return menuBar == null ? 0 : getMenuBarHeight (menuBar); + } public void setMenuBar (MenuBar bar) { - if (bar == null) - { - if (menuBar != null) + if (bar == null && menuBar != null) { - gtkLayoutSetVisible(false); - removeMenuBarPeer(); + // We're removing the menubar. + gtkFixedSetVisible (false); menuBar = null; - moveLayout(menuBarHeight); + removeMenuBarPeer (); insets.top -= menuBarHeight; - menuBarHeight = 0; - awtComponent.doLayout(); - gtkLayoutSetVisible(true); + menuBarHeight = 0; + awtComponent.validate (); + gtkFixedSetVisible (true); } - } - else - { - gtkLayoutSetVisible(false); - int oldHeight = 0; - if (menuBar != null) + else if (bar != null && menuBar == null) + { + // We're adding a menubar where there was no menubar before. + gtkFixedSetVisible (false); + menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer(); + setMenuBarPeer (menuBar); + int menuBarWidth = + awtComponent.getWidth () - insets.left - insets.right; + if (menuBarWidth > 0) + setMenuBarWidth (menuBar, menuBarWidth); + menuBarHeight = getMenuBarHeight (); + insets.top += menuBarHeight; + awtComponent.validate (); + gtkFixedSetVisible (true); + } + else if (bar != null && menuBar != null) { + // We're swapping the menubar. + gtkFixedSetVisible (false); removeMenuBarPeer(); - oldHeight = menuBarHeight; - insets.top -= menuBarHeight; + int oldHeight = menuBarHeight; + int menuBarWidth = + awtComponent.getWidth () - insets.left - insets.right; + menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer (); + setMenuBarPeer (menuBar); + if (menuBarWidth > 0) + setMenuBarWidth (menuBar, menuBarWidth); + menuBarHeight = getMenuBarHeight (); + if (oldHeight != menuBarHeight) + { + insets.top += (menuBarHeight - oldHeight); + awtComponent.validate (); + } + gtkFixedSetVisible (true); } - menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer(); - setMenuBarPeer(menuBar); - menuBarHeight = getMenuBarHeight (menuBar); - if (oldHeight != menuBarHeight) - moveLayout(oldHeight - menuBarHeight); - insets.top += menuBarHeight; - awtComponent.doLayout(); - gtkLayoutSetVisible(true); - } } public void setBounds (int x, int y, int width, int height) { + int menuBarWidth = width - insets.left - insets.right; + if (menuBar != null && menuBarWidth > 0) + setMenuBarWidth (menuBar, menuBarWidth); + nativeSetBounds (x, y, width - insets.left - insets.right, height - insets.top - insets.bottom @@ -151,7 +173,7 @@ public class GtkFramePeer extends GtkWindowPeer native void nativeSetIconImageFromData (int[] pixels, int width, int height); public void setIconImage (Image image) { - if (image != null) + if (image != null && image instanceof GtkImage) { GtkImage img = (GtkImage) image; // FIXME: Image should be loaded, but if not, do image loading here. @@ -206,15 +228,20 @@ public class GtkFramePeer extends GtkWindowPeer || frame_width != awtComponent.getWidth() || frame_height != awtComponent.getHeight()) { + if (frame_width != awtComponent.getWidth() && menuBar != null + && width > 0) + setMenuBarWidth (menuBar, width); + setBoundsCallback ((Window) awtComponent, frame_x, frame_y, frame_width, frame_height); } + awtComponent.validate(); } - + protected void postMouseEvent(int id, long when, int mods, int x, int y, int clickCount, boolean popupTrigger) { @@ -225,10 +252,11 @@ public class GtkFramePeer extends GtkWindowPeer protected void postExposeEvent (int x, int y, int width, int height) { - q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, - new Rectangle (x + insets.left, - y + insets.top, - width, height))); + if (!isInRepaint) + q.postEvent (new PaintEvent (awtComponent, PaintEvent.PAINT, + new Rectangle (x + insets.left, + y + insets.top, + width, height))); } public int getState () diff --git a/libjava/gnu/java/awt/peer/gtk/GtkGenericPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkGenericPeer.java index f7a7b2270ac..657e830bf2e 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkGenericPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkGenericPeer.java @@ -82,4 +82,6 @@ public class GtkGenericPeer // Let's assume this will never wrap. return next_native_state++; } + + native void gtkWidgetModifyFont (String name, int style, int size); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImage.java b/libjava/gnu/java/awt/peer/gtk/GtkImage.java index 9234d248aba..510646c5a6a 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImage.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImage.java @@ -230,7 +230,7 @@ public class GtkImage extends Image implements ImageConsumer int offset, int scansize) { setPixels (x, y, width, height, cm, convertPixels (pixels), offset, - scansize); + scansize); if (observer != null) observer.imageUpdate (this, @@ -255,7 +255,8 @@ public class GtkImage extends Image implements ImageConsumer if (scansize == width && height == 1) { - System.arraycopy (pixels, offset, + // Copy contents of pixels array into pixel cache. + System.arraycopy (pixels, offset, pixelCache, y * this.width + x, pixels.length - offset); } @@ -274,7 +275,7 @@ public class GtkImage extends Image implements ImageConsumer if (status == ImageConsumer.STATICIMAGEDONE && isCacheable) isLoaded = true; - if (status == ImageConsumer.SINGLEFRAMEDONE) + if (status == ImageConsumer.SINGLEFRAME) isCacheable = false; if (observer != null) @@ -289,7 +290,7 @@ public class GtkImage extends Image implements ImageConsumer -1, -1, -1, -1); } - if (source != null) + if (source != null && status != ImageConsumer.SINGLEFRAME) source.removeConsumer (this); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java index d15cb4a4acf..1e5eb4f6ab3 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkImagePainter.java @@ -42,6 +42,7 @@ import java.awt.Color; import java.awt.Rectangle; import java.awt.image.ColorModel; import java.awt.image.ImageConsumer; +import java.awt.image.ImageObserver; import java.util.Hashtable; public class GtkImagePainter implements Runnable, ImageConsumer @@ -57,10 +58,11 @@ public class GtkImagePainter implements Runnable, ImageConsumer boolean flipX, flipY; Rectangle clip; int s_width, s_height; + ImageObserver observer; public GtkImagePainter (GtkImage image, GdkGraphics gc, int x, int y, - int width, int height, Color bgcolor) + int width, int height, Color bgcolor, ImageObserver o) { this.image = image; this.gc = (GdkGraphics) gc.create (); @@ -74,15 +76,16 @@ public class GtkImagePainter implements Runnable, ImageConsumer flipX = flipY = false; s_width = s_height = 0; clip = null; + observer = o; - new Thread (this).start (); + run (); } public GtkImagePainter (GtkImage image, GdkGraphics gc, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, - Color bgcolor) + Color bgcolor, ImageObserver o) { this.image = image; this.gc = (GdkGraphics) gc.create (); @@ -91,6 +94,7 @@ public class GtkImagePainter implements Runnable, ImageConsumer redBG = bgcolor.getRed (); greenBG = bgcolor.getGreen (); blueBG = bgcolor.getBlue (); + observer = o; this.width = Math.abs (dx2 - dx1); this.height = Math.abs (dy2 - dy1); @@ -105,7 +109,7 @@ public class GtkImagePainter implements Runnable, ImageConsumer s_height = Math.abs (sy2 - sy1); clip = new Rectangle (sx1, sy1, s_width, s_height); - new Thread (this).start (); + run (); } public void @@ -126,7 +130,7 @@ public class GtkImagePainter implements Runnable, ImageConsumer if (model.equals (ColorModel.getRGBdefault ())) return pixels; - + int ret[] = new int[pixels.length]; for (int i = 0; i < pixels.length; i++) @@ -180,6 +184,11 @@ public class GtkImagePainter implements Runnable, ImageConsumer startX + x, startY + y, width, height, convertPixels (pixels, model), offset, scansize, affine); + + if (observer != null) + observer.imageUpdate (image, + ImageObserver.SOMEBITS, + x, y, width, height); } public void @@ -247,5 +256,17 @@ public class GtkImagePainter implements Runnable, ImageConsumer imageComplete (int status) { image.imageComplete(status); + + if (observer != null) + { + if (status == ImageConsumer.IMAGEERROR) + observer.imageUpdate (null, + ImageObserver.ERROR, + -1, -1, -1, -1); + else + observer.imageUpdate (null, + ImageObserver.ALLBITS, + -1, -1, -1, -1); + } } } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java index c28b7f597cc..25473d78ea2 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkLabelPeer.java @@ -47,10 +47,11 @@ public class GtkLabelPeer extends GtkComponentPeer implements LabelPeer { native void create (String text, float alignment); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); native void nativeSetAlignment (float alignment); native public void setText (String text); + native void setNativeBounds (int x, int y, int width, int height); void create () { diff --git a/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java index a85aba952fd..13055d33c27 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkListPeer.java @@ -41,8 +41,8 @@ package gnu.java.awt.peer.gtk; import java.awt.AWTEvent; import java.awt.Dimension; import java.awt.List; -import java.awt.event.MouseEvent; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.awt.peer.ListPeer; public class GtkListPeer extends GtkComponentPeer @@ -58,9 +58,8 @@ public class GtkListPeer extends GtkComponentPeer } native void create (int rows); - native void connectJObject (); native void connectSignals (); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); native void gtkWidgetRequestFocus (); native void getSize (int rows, int visibleRows, int dims[]); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java index b9cca1a5c38..90ad0c01b59 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java @@ -38,8 +38,10 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.Font; import java.awt.Menu; import java.awt.MenuBar; +import java.awt.MenuComponent; import java.awt.peer.MenuBarPeer; import java.awt.peer.MenuPeer; @@ -53,15 +55,25 @@ public class GtkMenuBarPeer extends GtkMenuComponentPeer public GtkMenuBarPeer (MenuBar target) { super (target); - create (); } - native void nativeSetHelpMenu(MenuPeer menuPeer); + void setFont () + { + MenuComponent mc = (MenuComponent) awtWidget; + Font f = mc.getFont (); + + if (f == null) + mc.setFont (new Font ("Dialog", Font.PLAIN, 12)); + } + // FIXME: remove this method or replace it with one that does + // something useful. /* In Gnome, help menus are no longer right flushed. */ + native void nativeSetHelpMenu(MenuPeer menuPeer); + public void addHelpMenu (Menu menu) { - nativeSetHelpMenu((MenuPeer) menu.getPeer()); + // nativeSetHelpMenu((MenuPeer) menu.getPeer()); } native public void delMenu (int index); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java index 92f02230621..dd061ed37b8 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java @@ -38,15 +38,28 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.Font; +import java.awt.MenuComponent; import java.awt.peer.MenuComponentPeer; public class GtkMenuComponentPeer extends GtkGenericPeer implements MenuComponentPeer { + void create () + { + throw new RuntimeException (); + } + + void setFont () + { + } + public GtkMenuComponentPeer (Object awtWidget) { super (awtWidget); + create (); + setFont (); } - + public native void dispose(); } diff --git a/libjava/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java index c32839ec6ba..81da90df012 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java @@ -38,24 +38,31 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import java.awt.Font; import java.awt.Menu; +import java.awt.MenuComponent; import java.awt.MenuBar; import java.awt.MenuItem; -import java.awt.peer.MenuItemPeer; -import java.awt.peer.MenuComponentPeer; import java.awt.peer.MenuBarPeer; +import java.awt.peer.MenuComponentPeer; +import java.awt.peer.MenuItemPeer; import java.awt.peer.MenuPeer; public class GtkMenuItemPeer extends GtkMenuComponentPeer implements MenuItemPeer { native void create (String label); - public native void connectSignals (); + native void connectSignals (); + native void gtkWidgetModifyFont (String name, int style, int size); + + void create () + { + create (((MenuItem) awtWidget).getLabel()); + } public GtkMenuItemPeer (MenuItem item) { super (item); - create (item.getLabel ()); setEnabled (item.isEnabled ()); setParent (item); @@ -63,6 +70,21 @@ public class GtkMenuItemPeer extends GtkMenuComponentPeer connectSignals(); } + void setFont () + { + MenuComponent mc = ((MenuComponent) awtWidget); + Font f = mc.getFont (); + + if (f == null) + { + MenuComponent parent = (MenuComponent) mc.getParent (); + Font pf = parent.getFont (); + gtkWidgetModifyFont (pf.getName (), pf.getStyle (), pf.getSize ()); + } + else + gtkWidgetModifyFont(f.getName(), f.getStyle(), f.getSize()); + } + void setParent (MenuItem item) { // add ourself differently, based on what type of parent we have diff --git a/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java index 0b5d0af4342..fbdfcf472ca 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkPanelPeer.java @@ -47,7 +47,6 @@ public class GtkPanelPeer extends GtkContainerPeer implements PanelPeer { native void create (); - native void connectJObject (); public GtkPanelPeer (Panel p) { diff --git a/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java index d0cbde034e2..233bed75a9b 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java @@ -54,7 +54,7 @@ public class GtkScrollPanePeer extends GtkContainerPeer create (awtComponent.getWidth (), awtComponent.getHeight ()); } - native void gtkScrolledWindowSetScrollPosition(int x, int y); + // native void gtkScrolledWindowSetScrollPosition(int x, int y); native void gtkScrolledWindowSetHScrollIncrement (int u); native void gtkScrolledWindowSetVScrollIncrement (int u); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java index 0e1b65137d7..ef4289633c4 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java @@ -60,7 +60,6 @@ public class GtkScrollbarPeer extends GtkComponentPeer int min, int max, int stepIncr, int pageIncr, int visibleAmount); - native void connectJObject (); native void connectSignals (); public GtkScrollbarPeer (Scrollbar s) diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java index b08728b2bff..94874deb617 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java @@ -52,7 +52,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer native void create (int width, int height, int scrollbarVisibility); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); native void gtkWidgetRequestFocus (); void create () @@ -68,11 +68,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer awtComponent.setFont (f); } - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); TextArea ta = ((TextArea) awtComponent); int sizeRows = ta.getRows (); @@ -130,11 +126,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer if (f == null) return new Dimension (width, height); - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); int sizeRows = rows == 0 ? DEFAULT_ROWS : rows; int sizeCols = cols == 0 ? DEFAULT_COLS : cols; @@ -163,11 +155,7 @@ public class GtkTextAreaPeer extends GtkTextComponentPeer if (f == null) return new Dimension (width, height); - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); int sizeRows = rows == 0 ? DEFAULT_ROWS : rows; int sizeCols = cols == 0 ? DEFAULT_COLS : cols; diff --git a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java index d4a702deb35..bd1ac812470 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java @@ -66,11 +66,7 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer awtComponent.setFont (f); } - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); TextField tf = ((TextField) awtComponent); int cols = tf.getColumns (); @@ -84,7 +80,7 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer native int gtkEntryGetBorderWidth (); - native void gtkSetFont (String name, int style, int size); + native void gtkWidgetModifyFont (String name, int style, int size); public GtkTextFieldPeer (TextField tf) { @@ -117,11 +113,7 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer if (f == null) return new Dimension (2 * gtkEntryGetBorderWidth (), dim[1]); - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); int text_width = cols * fm.getMaxAdvance (); @@ -140,11 +132,7 @@ public class GtkTextFieldPeer extends GtkTextComponentPeer if (f == null) return new Dimension (2 * gtkEntryGetBorderWidth (), dim[1]); - FontMetrics fm; - if (GtkToolkit.useGraphics2D ()) - fm = new GdkClasspathFontPeerMetrics (f); - else - fm = new GdkFontMetrics (f); + FontMetrics fm = getFontMetrics (f); int text_width = cols * fm.getMaxAdvance (); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java index 3f82159c3ab..def22e9874e 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkToolkit.java @@ -1,5 +1,5 @@ /* GtkToolkit.java -- Implements an AWT Toolkit using GTK for peers - Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,36 +38,40 @@ exception statement from your version. */ package gnu.java.awt.peer.gtk; +import gnu.classpath.Configuration; +import gnu.java.awt.EmbeddedWindow; +import gnu.java.awt.EmbeddedWindowSupport; +import gnu.java.awt.peer.ClasspathFontPeer; +import gnu.java.awt.peer.ClasspathTextLayoutPeer; +import gnu.java.awt.peer.EmbeddedWindowPeer; +import gnu.java.awt.peer.gtk.GdkPixbufDecoder; + import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.peer.DragSourceContextPeer; +import java.awt.font.FontRenderContext; import java.awt.font.TextAttribute; import java.awt.im.InputMethodHighlight; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; -import java.awt.image.ImageObserver; import java.awt.image.ImageConsumer; +import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; -import java.awt.GraphicsEnvironment; import java.awt.peer.*; import java.net.URL; +import java.text.AttributedString; +import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.MissingResourceException; import java.util.Properties; -import gnu.java.awt.EmbeddedWindow; -import gnu.java.awt.EmbeddedWindowSupport; -import gnu.java.awt.peer.EmbeddedWindowPeer; -import gnu.java.awt.peer.ClasspathFontPeer; -import gnu.classpath.Configuration; -import gnu.java.awt.peer.gtk.GdkPixbufDecoder; /* This class uses a deprecated method java.awt.peer.ComponentPeer.getPeer(). This merits comment. We are basically calling Sun's bluff on this one. - We think Sun has deprecated it simply to discourage its use as it is + We think Sun has deprecated it simply to discourage its use as it is bad programming style. However, we need to get at a component's peer in this class. If getPeer() ever goes away, we can implement a hash table that will keep up with every window's peer, but for now this is faster. */ @@ -79,7 +83,6 @@ import gnu.java.awt.peer.gtk.GdkPixbufDecoder; * drawing contexts. Any other value will cause the older GdkGraphics * object to be used. */ - public class GtkToolkit extends gnu.java.awt.ClasspathToolkit implements EmbeddedWindowSupport { @@ -87,7 +90,6 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit Hashtable containers = new Hashtable(); static EventQueue q = new EventQueue(); static Clipboard systemClipboard; - static boolean useGraphics2dSet; static boolean useGraphics2d; @@ -120,14 +122,21 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public int checkImage (Image image, int width, int height, ImageObserver observer) { - int status = ((GtkImage) image).checkImage (); + int status = ImageObserver.ALLBITS + | ImageObserver.WIDTH + | ImageObserver.HEIGHT; + + if (image instanceof GtkImage) + { + status = ((GtkImage) image).checkImage (); + } if (observer != null) observer.imageUpdate (image, status, -1, -1, image.getWidth (observer), image.getHeight (observer)); - + return status; } @@ -304,22 +313,59 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit "SansSerif" }); } + private class LRUCache extends java.util.LinkedHashMap + { + int max_entries; + public LRUCache(int max) + { + super(max, 0.75f, true); + max_entries = max; + } + protected boolean removeEldestEntry(Map.Entry eldest) + { + return size() > max_entries; + } + } + + private LRUCache fontCache = new LRUCache(50); + private LRUCache metricsCache = new LRUCache(50); + private LRUCache imageCache = new LRUCache(50); + public FontMetrics getFontMetrics (Font font) { - if (useGraphics2D()) - return new GdkClasspathFontPeerMetrics (font); + if (metricsCache.containsKey(font)) + return (FontMetrics) metricsCache.get(font); else - return new GdkFontMetrics (font); + { + FontMetrics m; + m = new GdkFontMetrics (font); + metricsCache.put(font, m); + return m; + } } public Image getImage (String filename) { - return createImage (filename); + if (imageCache.containsKey(filename)) + return (Image) imageCache.get(filename); + else + { + Image im = createImage(filename); + imageCache.put(filename, im); + return im; + } } public Image getImage (URL url) { - return createImage (url); + if (imageCache.containsKey(url)) + return (Image) imageCache.get(url); + else + { + Image im = createImage(url); + imageCache.put(url, im); + return im; + } } public PrintJob getPrintJob (Frame frame, String jobtitle, Properties props) @@ -510,8 +556,10 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit */ private FontPeer getFontPeer (String name, int style, int size) { - GtkFontPeer fp = new GtkFontPeer (name, style, size); - return fp; + Map attrs = new HashMap (); + ClasspathFontPeer.copyStyleToAttrs (style, attrs); + ClasspathFontPeer.copySizeToAttrs (size, attrs); + return getClasspathFontPeer (name, attrs); } /** @@ -522,40 +570,28 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit public ClasspathFontPeer getClasspathFontPeer (String name, Map attrs) { - if (useGraphics2D()) - return new GdkClasspathFontPeer (name, attrs); + Map keyMap = new HashMap (attrs); + // We don't know what kind of "name" the user requested (logical, face, + // family), and we don't actually *need* to know here. The worst case + // involves failure to consolidate fonts with the same backend in our + // cache. This is harmless. + keyMap.put ("GtkToolkit.RequestedFontName", name); + if (fontCache.containsKey (keyMap)) + return (ClasspathFontPeer) fontCache.get (keyMap); else { - // Default values - int size = 12; - int style = Font.PLAIN; - if (name == null) - name = "Default"; - - if (attrs.containsKey (TextAttribute.WEIGHT)) - { - Float weight = (Float) attrs.get (TextAttribute.WEIGHT); - if (weight.floatValue () >= TextAttribute.WEIGHT_BOLD.floatValue ()) - style += Font.BOLD; - } - - if (attrs.containsKey (TextAttribute.POSTURE)) - { - Float posture = (Float) attrs.get (TextAttribute.POSTURE); - if (posture.floatValue () >= TextAttribute.POSTURE_OBLIQUE.floatValue ()) - style += Font.ITALIC; - } - - if (attrs.containsKey (TextAttribute.SIZE)) - { - Float fsize = (Float) attrs.get (TextAttribute.SIZE); - size = fsize.intValue(); - } - - return (ClasspathFontPeer) this.getFontPeer (name, style, size); + ClasspathFontPeer newPeer = new GdkFontPeer (name, attrs); + fontCache.put (keyMap, newPeer); + return newPeer; } } + public ClasspathTextLayoutPeer getClasspathTextLayoutPeer (AttributedString str, + FontRenderContext frc) + { + return new GdkTextLayout(str, frc); + } + protected EventQueue getSystemEventQueueImpl() { return q; diff --git a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java index a2357699b3c..c61eecd5aa5 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java @@ -40,8 +40,8 @@ package gnu.java.awt.peer.gtk; import java.awt.Component; import java.awt.Dimension; -import java.awt.Window; import java.awt.Frame; +import java.awt.Window; import java.awt.event.WindowEvent; import java.awt.peer.WindowPeer; @@ -106,7 +106,6 @@ public class GtkWindowPeer extends GtkContainerPeer { } - native void connectJObject (); native void connectSignals (); public GtkWindowPeer (Window window) |

