BTW...sorry i am not threading this properly as I download my email on my
personal computer, and read ti there normally, but this is being sent via a
web interface from work..
Where I am at: I have it so that the banner is getting the proper
width...now to figure out the vertical centering issue...
<cfcomponent
output="false"
hint="Image utility functions that abstract out complex ColdFusion image
manipulation processes.">
<cffunction name="img_create_banner" access="public" output="true"
returntype="Any"
hint="Creates banner grapic with custom text">
<cfargument name = "text" type = "string" required="true">
<cfargument name = "fontname" type = "string" required="true">
<cfargument name = "style" type = "string" required="true"
hint="Must be Plain, Bold, Italics, or Bolditalics">
<cfargument name = "size" type = "string" required="true">
<cfargument name = "color" type = "string" required="true"
hint="hex value with put pound sign">
<cfargument name = "bgcolor" type = "string" required="true"
hint="hex value with put pound sign">
<cfargument name = "path" type = "string" required="true">
<cfargument name = "name" type = "string" required="true">
<cfargument name = "xOffsetVal" type = "any" required="true">
<cfargument name = "yOffsetVal" type = "any" required="true">
<cfscript>
Font = CreateObject("java", "java.awt.Font");
variables.color="##"&arguments.color;
variables.bgcolor="##"&arguments.bgcolor;
variables.style=arguments.style;
variables.fontname="#trim(arguments.fontname)#";
variables.text={x=10, y=30, string=arguments.text};
variables.text.prop={font = variables.fontname,
Size=arguments.size, style=variables.style, javaStyle= BitOr(Font.BOLD,
Font.ITALIC), txtColor=variables.color, bgColor=variables.bgcolor};
//variables.text = { x = 10, y = 30, string = arguments.text
};
// variables.text.prop = { font_name="LunaITC TT",
style=arguments.style, javaStyle= BitOr(Font.BOLD, Font.ITALIC),
size=arguments.size, txtColor=variables.color,
bgcolor=variables.bgColor};
//writedump(variables.text.prop);
param name="arguments.xOffsetVal" default=0;
param name="arguments.yOffsetVal" default=0;
variables.offsetVal={x=arguments.xOffsetVal,
y=arguments.yOffsetVal};
variables.imageOffset={x=20, y=10};
//strObject=createObject("java","java.lang.String");
//strTemp="#UCase(arguments.text)#";
//isAllCaps=compare(strTemp,arguments.text);
// initialize the text properties
// create a new image and draw the text
img = ImageNew("", 10, 30, "rgb", arguments.bgcolor );
// get the underlying graphic of the image
graphics = ImageGetBufferedImage( img ).getGraphics();
</cfscript>
<!--- <br><cfdump var="#variables.text#"><br> --->
<!--- Check for a defined style. --->
<cfswitch expression="#variables.text.prop.style#">
<cfcase value="Bold">
<cfset variables.text.prop.javastyle = Font.BOLD>
</cfcase>
<cfcase value="Italic">
<cfset variables.text.prop.javastyle = Font.ITALIC>
</cfcase>
<cfcase value="BoldItalic">
<cfset variables.text.prop.javastyle =
BitOR(Font.BOLD,Font.ITALIC)>
</cfcase>
<!--- Otherwise, just use the default PLAIN style --->
<cfdefaultcase>
<cfset variables.text.prop.javastyle = Font.PLAIN>
</cfdefaultcase>
</cfswitch>
<cfscript>
// recreate the font used to draw the text
CurrentFont = Font.init( javacast("string",
variables.text.prop.font),
javacast("int", variables.text.prop.javaStyle),
javacast("int", variables.text.prop.size) );
// get text measurements using font metrics
fontMetrics = graphics.getFontMetrics( CurrentFont );
fontBounds = fontMetrics.getStringBounds( javacast("string",
variables.text.string), graphics );
img = ImageNew("", fontBounds.getWidth()+20,
fontBounds.getHeight()+10, "rgb", variables.text.prop.bgcolor);
graphics = ImageGetBufferedImage( img ).getGraphics();
//graphics.setColor(variables.text.prop.bgcolor);
ImageSetDrawingColor( img, variables.text.prop.txtColor );
variables.OffsetVal.y= javacast("int", variables.text.y)/2 +
javacast("int",(fontBounds.getHeight())/2)+variables.OffsetVal.y ;
variables.offsetVal.x=variables.text.x+variables.OffsetVal.x;
ImageDrawText( img,
variables.text.string,variables.OffsetVal.x,variables.OffsetVal.y ,
variables.text.prop );
// draw a rectangle indicatating the font bounds
//graphics.setColor(variables.text.prop.bgcolor);
//ImageSetDrawingColor( img, variables.text.prop.bgColor );
//graphics.drawRect(
// javacast("int", variables.text.x)-5,
// javacast("int", variables.text.y) -
fontMetrics.getAscent()-5,
// fontBounds.getWidth()+10,
// fontBounds.getHeight()+10 );
// get the dimensions
dimensions.xoffset=variables.OffsetVal.x;
dimensions.yoffset=variables.OffsetVal.y;
dimensions.type = "FontMetrics";
dimensions.width = fontBounds.getWidth();
dimensions.height = fontBounds.getHeight();
dimensions.height_int = javacast("int",fontBounds.getHeight());
dimensions.leading = fontMetrics.getLeading();
dimensions.ascent = fontMetrics.getAscent();
dimensions.descent = fontMetrics.getDescent();
graphics.dispose();
</cfscript>
<!--- <cfdump var="#dimensions#"> --->
<!--- <cfimage action="writeToBrowser" source="#img#"> --->
<cfimage action="write" source="#img#" destination="#path#/#name#"
overwrite="true">
</cffunction>
</cfcomponent>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology-Michael-Dinowitz/dp/1430272155/?tag=houseoffusion
Archive:
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:337072
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm