exportElementID( image, bookmark );
exportElementID( image, bookmark, "EXTENDED");
	public void startImage( IImageContent image )	{		assert image != null;		IStyle mergedStyle = image.getStyle( );		if ( peek( mergedStyle ) )		{			return;		}		logger.log( Level.FINE, "[HTMLImageEmitter] Start image" ); //$NON-NLS-1$ 		StringBuffer styleBuffer = new StringBuffer( );		int display = checkElementType( image.getX( ), image.getY( ),				mergedStyle, styleBuffer );		String tag = openTagByType( display, DISPLAY_BLOCK );		// action		boolean hasAction = handleAction( image.getHyperlinkAction( ) );		String imgUri = getImageURI( image );		boolean useSVG = ( image.getMIMEType( ) != null )				&& image.getMIMEType( ).equalsIgnoreCase( "image/svg+xml" ); //$NON-NLS-1$		if ( useSVG )		{ // use svg			writer.openTag( HTMLTags.TAG_EMBED );			writer.attribute( HTMLTags.ATTR_TYPE, "image/svg+xml" ); //$NON-NLS-1$			writer.attribute( HTMLTags.ATTR_SRC, imgUri );			StringBuffer buffer = new StringBuffer( );			buffer.append( AttributeBuilder.buildPos( image.getX( ), image					.getY( ), image.getWidth( ), image.getHeight( ) ) );			writer.attribute( HTMLTags.ATTR_STYLE, buffer );			writer.closeNoEndTag( );		}		else		{ // use img			// write image map if necessary			Object imageMapObject = image.getImageMap( );			// use imgUri as the image ID. As we know only the CHART can have			// image maps and each chart			// will have differnt URI, so it is safe for CHART. (If the named			// image also support image			// map, then we must use another way to get the image ID.			String imageMapId = imgUri;			boolean hasImageMap = ( imageMapObject != null )					&& ( imageMapObject instanceof String )					&& ( ( (String) imageMapObject ).length( ) > 0 );			if ( hasImageMap )			{				writer.openTag( HTMLTags.TAG_MAP );				writer.attribute( HTMLTags.ATTR_NAME, imageMapId );				writer.text( (String) imageMapObject, true, false );				writer.closeTag( HTMLTags.TAG_MAP );			}			writer.openTag( HTMLTags.TAG_IMAGE ); //$NON-NLS-1$			setStyleName( image.getStyleClass( ) );			setDisplayProperty( display, 0, styleBuffer );						// bookmark			String bookmark = image.getBookmark( );			if(bookmark == null)			{				bookmark = generateUniqueID( );			}			setBookmark( HTMLTags.ATTR_IMAGE, bookmark ); //$NON-NLS-1$			exportElementID( image, bookmark );			String ext = image.getExtension( );			// FIXME special process, such as encoding etc			writer.attribute( HTMLTags.ATTR_SRC, imgUri );			if ( hasImageMap )				writer.attribute( HTMLTags.ATTR_USEMAP, "#" + imageMapId ); //$NON-NLS-1$ //$NON-NLS-2$			// alternative text			writer.attribute( HTMLTags.ATTR_ALT, image.getAltText( ) );			// help text			writer.attribute( HTMLTags.ATTR_TITLE, image.getHelpText( ) );			// image size			AttributeBuilder.buildSize( styleBuffer, HTMLTags.ATTR_WIDTH, image					.getWidth( ) ); //$NON-NLS-1$			AttributeBuilder.buildSize( styleBuffer, HTMLTags.ATTR_HEIGHT,					image.getHeight( ) ); //$NON-NLS-1$			// handle style			handleStyle( image, styleBuffer );			if ( ".PNG".equalsIgnoreCase( ext ) && imageHandler != null ) //$NON-NLS-1$			{				writer.attribute( HTMLTags.ATTR_ONLOAD, "fixPNG(this)" ); //$NON-NLS-1$			}			writer.closeNoEndTag( );		}		if ( hasAction )		{			writer.closeTag( HTMLTags.TAG_A );		}		writer.closeTag( tag );	}