May 27/2012 - Version 1.14529.31450
===============================================================================================
* Fixed ScaleDimensions, ScaledWidth, and ScaledHeight in the TextSprite class. - SD
* Converted the solution/projects to Visual Studio 2010. This means that to compile Gorgon
and its associated tools, you will need Visual Studio 2010. Gorgon is still using .NET 3.5
however, so VS2008 can still be used for projects. - TW
+ Added new blending mode support for alpha channel blending - SD
+ Added new library - Gorgon Sound. Uses OpenAL to play back ogg and wav files. - SD
* Fixed a bug (or rather, something I forgot to implement) in the Image deserializer code. This
broke the FromStream(string name, Stream stream, int bytes) method, and would have broken
any method that had the size in bytes passed in. - TW
December 9/2010 - Version 1.1.4119.34319
===============================================================================================
* Updated INeedYourInput to use new reading/writing routines for images.
+ Added a WriteRegion function to ImageLockBox that will write to the locked region. This and the
Read method will determine if the entire image has been locked and dump the data in
directly or if there's a smaller region, then it will write only to that region line by
line. This corrects an issue with Write where writing would not respect the region
specified. - TW
+ Added ReadRegion function to the ImageLockBox object to read data within the locked region. - TW
+ Added RegionPitch property to the ImageLockBox. This will return the pitch for the region
instead of the entire image. This is merely for convenience instead of having to calculate
the span of a region when making buffers. - TW
+ Added LockPosition property to ImageLockBox to allow for movement within the lock data stream.
Read/Write methods use this to know where to read and write from within the lock data stream. - TW
- Removed ToArray() function, replaced by Read functions to be consistent with Stream objects. - TW
* Updated issue with ImageLockBox.Write where the Position was not being set in the data stream. - TW
+ Added faster versions of unfilled Circle and Ellipse drawing. Must use same technique for filled. - Paril
* Spelling fixes - Paril
* Fixed up many small standardization problems (publicly visible variables changed into auto-properties in a few
classes; left the structs alone because they caused problems with constructors) - Paril
+ Added some exception handlers for a few classes and methods - Paril
* Changed name of EditorCanDragAttribute constructor argument "dragSprite" to "dragType" to match property - Paril
* Made Matrix constructor less verbose by using params arguments - Paril
* Changed NamedObject's constructor to protected since it is abstract - Paril
* Since VideoMode.GetBpp was only used internally with the "Format" property but was still called by
Bpp property (which called GetBpp with Format), merged the two (non-breaking) - Paril
* Updated issue in INeedYourInput that caused an overflow of the locked image stream - TW
+ Animations now let you specify looping via Animation.Loops. - Paril
* Commented the DeviceNotReset check in LockBox.Lock/Unlock. After some testing on my end and on
Windows XP, it seems to be more or less not required at all, as during DeviceLost, Direct3D
has not actually closed yet, so it should be safe at all times, but there may be some very
special circumstances that this is false (such as trying to use a lockbox before Gorgon.SetMode);
these may require a whole different check (Gorgon.Screen.Initialized?) if one is not already in place. - Paril
+ Added GIF animation code, based on Cycor's code, is now in the Sprite.cs file. It works flawlessly! - Paril
* Updated INeedYourInput to use the new LockBox methods, as well as a fullscreen toggle for testing. - Paril
+ Added two new functions (minus simplicity overloads) to ImageLockBox to allow for
SUPER FAST DATA TRANSITION!!! I found that if you read/write the entire stream, it is incredibly quicker.
(Example omitted for verbosity, see SVN) - Paril
- Removed _clearOnInit being set to true so that the textures do not get automatically cleared
on first initialization (the cause for slowdown for Images/RenderImages). This might be a
breaking change for any project who creates an Image/RenderImage but does not clear it manually,
however since the Gorgon demos push that they should be cleared, I do not think this will
be a problem. - Paril
Notes: Might also remove the actual usage code in Initialize, because I don't
think it would ever get called under normal circumstances. Have to test this!
* Forum member domq found an issue where if the bounding rectangle of the TextSprite is very
small and WordWrap = true then it would go into an infinite loop and crash. This has been
corrected.
December 17/2009 - Version 1.1.3638.20767
===============================================================================================
* Fixed an issue in RenderImage.CopyToImage where the SlimDX Texture.FromStream method would
fail without the stream length in bytes.
* Fixed an issue where sprite animations would fail to load, claiming it was the wrong format.
* Updated an issue in the mouse interface of the Gorgon Raw Input plug-in. The mouse wheel
delta value was not being reset when a Raw Input event was received by the mouse object.
This caused the WheelDelta value to keep its value until the mouse wheel was moved again.
+ Added a new method to the Mouse object: ResetWheelDelta, which will allow users who are
manually polling the mouse to reset the mouse wheel delta value at their discretion.
* Modified the animation type to only accept objects that implement the IAnimated interface.
- Removed the Clone() method on the Animation type, it was never meant to be used by outside
code.
+ Added a new example showing how to build a frame based (flipbook) animation via code.
* Modified the KeyImage constructor to take additional parameters.
+ Added GetImageData() functions to RenderImage objects. This will allow the user lock the
render target directly.
* Modified image object so that we can lock render targets for direct access (sort of).
+ Added polygon sprite object. This will allow the user to draw an arbitrary polygon shape.
May 29/2009 - Version 1.1.3436.39405
===============================================================================================
* STUPID TAPE_WORM!!! Left a wonderful bug in the library regarding Batch sprites. Basically
if you try and use the Batched sprites, it will just fail and claim that there is no
vertex declaration for PositionNormalTextureDiffuse1.
May 24/2009 - Version 1.1.3425.38459
===============================================================================================
* Fixed an empty path bug in the zip file plug-in when zip file contains no directories.
* Updated the help file project to the latest version of Sandcastle Help File Builder (1.8).
- Removed some leftover test functionality.
- Removed the Changelog_v1.0.x.html file, it no longer serves any purpose.
* Fixed an issue where any extra app windows would perform poorly when they received focus.
* Fixed a localization bug in Sprite Editor.
+ Added functionality to shaders to allow the use of "default" variables for Sprites. These
constants, when declared, will automatically be used by the library. To use these constants
you only have to place them in your shader source and name like this:
Texture _spriteImage.
Note that the naming -is- case sensitive and must use the camel casing and "_" as a leading
character.
* Modified GiveMeSomeControl example to remove usage of StaticTextSprite object.
+ Added a Batch object to facilitate quickly blitting sprites to a render target.
+ Added a protected GetVertices() to return the vertices composing a Renderable object.
* Modified several internal rendering functions to take their data from various sources.
* Fixed a BIG bug in TextSprite.Clone where hardly any properties were cloned.
* Found and repaired some potential x64 issues.
- Removed the Mount()/Unmount() functions from the file system. These really served no
purpose to the user. The Mount() function is still in place for plug-in development just in
case.
+ Added a new file system plug-in. This one will read/write .zip files (Winzip) so now the
user can use WinZip or other .zip supported archiver to manipulate file systems.
* Modified alignment issues with TextSprite where the text would become jagged if it was
between a pixels, also fixed an issue where the MeasureText function was not returning the
correct height.
* Modified BumpInTheNight sample. Changed arrow symbols to unicode codes in the source files.
Chalk that up to me not thinking ahead.
+ Added static From* methods to the Font object. Now users can load TTF files directly without
having to set up their own PrivateFontCollections. Fonts can be read from a stream, file,
embedded resource or a Gorgon file system.
+ Added two new methods: SetAdditionalRenderTarget and GetAdditionalRenderTarget. These two
functions are in place to facilitate multiple render targets (MRT) when using shaders which
allows rendering in one pass to multiple destinations.
* Updated to use SlimDX Mar 09 release. And modified changed code accordingly. Worked around
bug in SlimDX Texture.FromStream for Image files.
* Modified example ShadersInSpaaace to actually make the film grain visible.
* Updated bug in FileSystemEditor where saving the entire file system would mess up if the
root node wasn't selected. Fixed bug where exporting individual files would export the
entire file system. Changed export button on toolbar to be more clear about its function.
* Updated normal map for BumpInTheNight sample so that lighting is more accurate. CrazyBump =
teh awesome. Modified shader for the sample to allow for specular maps. Modified
BumpInTheNight sample to use specular mapping.
+ Added specular map for BumpInTheNight sample.
December 16/2008 - Version 1.1.3266.898
===============================================================================================
+ Added background image functionality to the animation editor in the SpriteEditor.
* Fixed a bug in the animation frame editor. If a frame is selected and the Add Key button is
clicked, nothing happens.
* Modified the image frame animation editor to give more screen real-estate. Moved it to the
right hand side as opposed to the bottom.
* Modified floating point rounding accuracy issues when using time based system with frame
based editing.
+ Added a track/key view to help identify which tracks have keys and where those keys are
located. This view can be toggled on and off and the user has the choice of showing all
tracks or just tracks with keys.
* Fixed an issue with the SpriteEditor where if the toolbar in the sprite clipper had keyboard
focus, the app would not exit - To be fair, this is NOT Gorgon's fault, this is a bug in
Microsoft's toolbar strip object and needs to be worked around. This bug only seems to
appear under specific circumstances.
* Updated color track editor in the SpriteEditor animation editor to auto-create a key when a
color was selected by the color selector. An additional button was added to turn off this
key auto-creation if required.
* Worked around a bug with older Intel drivers where the bound vertex buffer is not updated
after the initial changes to the vertex buffer. The workaround requires that SetStreamSource
be called during every frame. This is a minor perfomance hit, but it will only affect Intel
cards.
* Updated a bug in the FileSystemPath object where GetFiles() was getting ALL files in the file
system instead of just the files belonging to the path and its children.
* Updated FileSystemEditor to have the ability to copy files from a virtual file system back
on to the external windows file system (Copy file/path to external folder).
- Removed the default frame #0 that was inserted when an empty track was selected. The system
will now just use whatever default the sprite originally had an leave the track empty. This
was problematic at times, and somewhat confusing. Now if you want to start an animation,
the user will have to set up the initial frame manually (by adding the frame via the add key
button or pressing enter on the dialog boxes or if the property can be dragged like Position
or Axis).
* Modified draggable properties to now show a hand icon to indicate dragging ability when the
mouse is moved over the object to be dragged.
+ Added ability to drag the axis in the animation editor. You can do it in the main sprite
display, why not in the editor too?
* Modified EditorCanDragAttribute to now take/return a DragType as opposed to TRUE or FALSE.
This allows for various types of dragging to be possible.
* Updated an issue with the Sprite Editor where the sprite would appear offscreen when its axis
was set to the right/lower portion of the sprite. While technically correct, this made the
UI a little more difficult to use. The sprite will now appear in the center of the screen
-UNLESS- the position track has keys (and the frame #0 position is not the center of the
screen).
November 20/2008 - Version 1.1.3246.24958
===============================================================================================
* Modified the GorgonInput plug-in. There is platform specific native code that will mess up
on x64 systems. This used to be handled via conditional compilation, but since we now have
a unified project file, we needed another solution.
- Removed the x64 .sln and .csproj files. Since the SlimDX runtime installer will put SlimDX
into the GAC (both x64 and x86), there's no need to have seperate files. The projects are
set to AnyCPU and will produce platform agnostic (MSIL) versions of the binaries. The
.NET runtime is not responsible for determining which platform version of SlimDX to use.
Note: If you require that your application be strictly x64 or x86, all you need to do is
set the platform in the properties of your project to whatever platform you require. Your
binary will force the usage of the proper platform version of SlimDX.
- Removed SlimDX from the Dependencies directory. The installer will now install the SlimDX
runtime and it will install any pre-requisites (except the .NET framework).
* Updated to the November 2008 version of SlimDX and DirectX.
+ Added sample that performs per pixel Dot3 bump mapping - BumpInTheNight.
+ Added a new function to the framework - bool OnValidateDriver(driver). This will allow the
user to accept or reject the current driver based on whatever criteria they choose.
* Fixed an issue with blitting images/renderimages where once the blitted image is stretched, it
stays stretched even when calling Blit(x, y);.
* Fixed an issue where inverse source alpha blending caps were being reported incorrectly.
* Updated other shader parameters to check for NULL values when passing an image to a shader.
* Fixed an issue in the SetValue(Color[]) constant shader parameter. The array was not being
persisted to the shader.
* Fixed a bug in the FX shader parameters where a color value was being passed in directly to
the shader via SetValue(Drawing.Color). This was incorrect, the value should have been a
SlimDX.Color4 value. This had the effect of messing up any color values passed to the
shader. Also fixed the constant shader parameters where color values were not being
translated correctly.
* Modified x64 framework project file. Debug output directory was incorrect.
* Updated a bug in the SpriteMesh object where rotating the mesh caused the mesh to become
skewed. This was because the rotation code tried to rotate on the y axis with an already
transformed x axis. The correct thing to do was to rotate both axes as untransformed.
i.e. I'm dumb.
* Updated issue with Renderable base class where the Axis property was being initialized with
1, 1 instead of 0, 0.
October 29/2008 - Version - <IP_ADDRESS>
===============================================================================================
* Updated FolderFileSystemOfPower example to display the same help text that's in the
bzip filesystem version.
- Removed Delete() and DeletePath() functions from the file system object, they
serve no purpose.
* The file system will store this purge flag per file system. This requires a change
to the file system index file and changes the header value from GORFS1.0 to GORFS1.1.
As a consequence v1.0.x of Gorgon will not be able to read GORFS1.1 filesystems.
However v1.1.x of Gorgon will read GORFS1.0 and GORFS1.1 just fine.
+ Added a Purge button to folder file system windows in the file system editor.
When checked this will tell the file system to purge any deleted files and/or
paths from the actual file system. Otherwise it will be up to the user to clean
up any left over files/paths after delete. This will not appear for packed
filesystems.
+ Added a PurgeDeletedFiles property to the FileSystem object. This allows the
more paranoid user to handle the file system deletes themselves. This only
works on folder file systems. Packed file systems will purge deleted data
regardless of this.
+ Added two new protected functions to the file system object:
OnPathDelete and OnFileDelete.
These functions are called when a file is deleted from the filesystem. These
functions can be overridden by the file system type to perform specific
actions when a file or path is deleted. This will allow folder file systems
to actually update the real file system when an item is deleted.
* Making small optimizations to the rendering code.
* Fixed an issue where having a non-null CurrentShader would cause a null
reference exception when Gorgon.Terminate() is called.
* Fixed a problem when compiling shaders. Shader errors were not being thrown
as exceptions.
* Updated the mouse interface to correct some issues with the mouse cursor
not showing when it had exclusive mode enabled/disabled.
* Updated NoCleverName example. Animations were not playing.
* Modified mouse to reshow the cursor when the mouse object is destroyed.
* Modified input device objects to expose values via properties instead of direct
values.
* Modified GorgonException. There was an issue where the exception wasn't sending
as much information in certain circumstances as it should have. This has been
corrected.
+ Added an example to show off the sprite mesh functionality (freshly ripped off
from HGE).
+ Added an example to show off the minimal GUI functionality.
- Removed the Empty property on the TimingData object, it served no useful
purpose.
* Changed the access modifier on the refresh/reset methods on the TimingData
object to internal, these functions have no real purpose being exposed as public
members.
* Unified all exception objects into a single exception type:
GorgonException. This exception system is modelled after SlimDX's ResultCode
setup. This was done to cut down on the amount of exception object clutter
in the library. GorgonExceptions will now contain packaged error information
value types (GorgonError). This will contain a code and description of the error
and can be used to determine a course of action depending on the code packaged
with the exception. This is a major breaking change.
* Changed the licensing from LGPL to MIT. F**k you Stallman.
+ Added functionality for FX shaders to determine if a projection matrix
value is present and auto-update it accordingly. The shader will look
for a parameter named "_projectionMatrix", and if found, will be
automatically populated with the projection matrix from the current
clipping view port.
* Updated blur effect for framework logo.
* Modified animations to always be enabled on load. This property should
never have been saved. However it is kept in the file format to keep
from breaking it, but has no effect.
- Removed any code referencing W-Buffers. This is from antiquated hardware
and would be unlikely to run on moderen operating systems.
+ Added an example to show to use the depth buffer for depth-sorting sprites.
+ Added the ability to play multiple animations at the same time in the
sprite editor animation editor interface. This will allow the user to
see how combined animations will look when playing together.
+ Added an example to show how to use the particle system.
* Updated SlimDX to the most recent version (Sept/08).
* FINALLY!! I managed to get rid of the ICSharpCode.SharpZipLib.DLL issue!!
The problem was this: When the user loaded the BZip file system plug-in, the
plug-in loader would fail because it was unable to locate the aforementioned
assembly. Even if it was located in the same directory as the DLL.
Previously, the only way to get this working was to put a copy of
ICSharpCode.SharpZipLib.DLL in your application directory. This has now been fixed.
The plug-in can now be loaded without having ICSharpCode.SharpZipLib.DLL in your
app directory. As long as it can be located in the GAC, or the directory where your
plug-in resides, then it should be able to load.  This will allow the user to mask the sprite image against a color
if the default pattern makes it too difficult to see the sprites on the image.
+ Added a zoom window size value to the sprite clipper in the sprite editor. This
will allow the user to adjust the size of the zoomer window (note, this means the
physical size of the zoom window, not the scale, the mouse wheel controls
that).
+ Added a DualShader class to bind a Vertex and Pixel shader to the renderer at the
same time. This is necessary for SM 3 systems where it appears that a vertex shader
is also required. This was not the case for SM 2 where the pixel shader could be
set without requiring a vertex shader. The dual shader will use a default vertex
and pixel shader when it is created (unless pixel/vertex shaders are passed in via
the constructor, or assigned later).
* Fixed some issues with the sprite editor where animations would be corrupted when
image bindings were changed. Also fixed an issue with the Linq queries that
enumerated render targets.
- Removed ImageShaderCache and ImageShaderList as these aren't necessary anymore. The
ImageShaders are now regular shaders and can be found in the ShaderCache.
* Fixed a bug in the shader serializer where it was saving the source as UTF-7.
* Changed ShaderSerializer to FXShaderSerializer and ShaderSerializer now handles
objects derived from BaseShader.
+ Added BaseShader, PixelShader and VertexShader types. These are shaders that don't use
the HLSL effects system (except to compile). BaseShader is the abstract type that
Pixel/Vertex/ImageShader types are derived from.
+ Added ConstantShaderParameter for use by the objects that inherit from BaseShader.
* Changed ShaderParameter to FXShaderParameter.
+ Added IShaderParameter as the defacto interface for shader parameter objects.
* Changed Shader to FXShader to indicate that the shaders are based on the HLSL effects
framework. The Shader type is now a base class from which other shaders are derived.
* Changed the Blur shader in the framework DLL from source code to a binary format.
This was merely for convienence for myself. Everytime I made a change to the resource
file in the framework, the damn thing would try to put the contents of the shader in
<summary> tags, which would generate a bunch of warnings. I have NO idea why
Visual Studio would do this.
* Fixed an issue in the shader FromResource function when trying to load a binary shader.
Shader was being converted to a string regardless of the binary flag.
* Modified all shader From* static methods to take an extra parameter: ShaderCompilerOptions.
This allows the user to control the optimization level and debug info level for a shader.
+ Added a shader function object to be used with the image shaders. These objects can be retrieved
from the Shader object via the GetShaderFunction().
+ Added two new methods to the shader object: CompileShader() and GetShaderFunction(). The
CompileShader() function is used to compile the source code for a shader, while the GetShaderFunction
is used to retrieve a specific function from a shader and returns a ShaderFunction object.
* Modified the shader subsystem extensively. Renderable objects no longer have shaders attached
(i.e. Sprite.Shader no longer exists). This will break code that relied on shaders, but the
old system didn't make any sense, especially when it came to multipass rendering.
Shaders are now set via the main static Gorgon class with the property CurrentShader (e.g.
Gorgon.CurrentShader = MyShader). The user can set this to be equal to the shader (which will
find the first valid technique), or a specific technique (which will render all passes for a
technique) or a specific pass from a technique.
* Added a new example for Visual Basic.NET - "TehShadowGn0s"
+ Added a new property to the renderable objects (sprites, textsprites, etc...) called
ShaderPass. This property will tell the renderer which shader pass to execute when
drawing a sprite with a shader.
+ Adding a limited GUI interface to the framework.
+ Added FamilyName property to Font objects. I can't believe I forgot to add this!
+ Added a particle emitter object to the framework library. This one works like the
HGE particle system (and in fact is directly based on it).
+ Added new simple value type called Range<T>. This is just a value that holds
a start and end value so it can be used to determine a range of values. Use this
instead of creating multiple properties on your object for ranged values.
+ Added a border color option to the sprites. This is used with the Vertical/Horizontal
Wrapping properties are set to Border.
* Modified sprite horizontal/vertical flipping to have better accuracy with flipped
texture coordinates.
+ Added a utility library to the solution for higher level functionality such as sprite
meshes and various other high level functionality in the future.
* Updated sprite editor project saving to now store its child files with relative paths.
Prior to this it would only use a relative path if the sprite/image dependency was
located under the same path as the project file. Now it will attempt to source the
files to a directory relative to the project file.
* Updated the device lost/reset code to no longer rely on exceptions, and instead use the
result codes returned by SlimDX.
* Made some fixes to the vertex/index buffer objects. This was due to some recent changes
in SlimDX which does some validation on data being sent to the buffers. This validation
wasn't present before and thus Gorgon's original vertex/index buffer code got away with
doing its updates incorrectly (i.e. SlimDX is right, Gorgon is wrong in its approach).
* In keeping with the whole .NET 3.5 thing, I've made use of LINQ in the sprite editor.

* Switched Gorgon, the tools and the examples over to .NET 3.5. From this point forward
Gorgon 1.1.x will require .NET 3.5.
* Modified the NoCleverName example to use bounding circles on the asteroids instead of
rectangles.
* Sprite editor will now display the bounding circle in addition to the bounding rectangle
for a sprite.
+ Added BoundingCircle on sprites.
+ Added a new value type: BoundingCircle. This allows us to do collision checks bewteen
a circle primitive and other primitives.
* Completely scrapped and rebuilt the animation editor in the sprite editor system.
The interface was kept pretty much the same, but new things like more tracks and copy,
cut and paste for key frames have been added. The system is now compliant with the
new animation system.
* Made MASSIVE changes to the animation system. Basically this system has pretty
much been rewritten. The only interface that hasn't changed much is the Animation
class. If you've coded stuff using the old animation system your code WILL break
there's no two ways about it. However, your sprites that contain animations will
work and will be updated to use the new system. However, due to the differences in
the way the old and new systems work, the results may not be 100% accurate.
Here's a sub-listing of changes:
* The grouped tracks like TransformTrack, FrameTrack, and ColorTrack are now
thankfully VERY dead and gone. In their place is a more cohesive Tracks collection
that will hold all the tracks for the animation.
* No longer reliant on a group of properties (except for the KeyImage type). We
can now mark specific properties as animated and the system will do its best
to deduce how to handle the types for those marked properties.
* All of these animated properties are now individual tracks - the way it should
have been right from the start.
* Because Gorgon can only know about so many types, there's the option to hook into
the animation events and define your own data type for a track and its keys.
* The user can actually include the animation system in our own custom objects
and animate the properties of custom object types by including the AnimationsList
collection.
In short it'll be a much better and more flexible animation system.
* Modified Opacity property on renderables to use an int instead of a byte. No,
I really don't know what I was thinking.
* Changed ScaledWidth/ScaledHeight so that the user can now set the scaled size of
the renderable object in the context of absolute width and height. Prior to this
the user could only set the scale relatively via the Scale or UniformScale
properties.
* Changed ICommonRenderable to IRenderableStates, since this is what this interface
actually contained.
- Removed IMovable, IAnimatable, IRenderable. These really served no purpose.
- Removed InvertFrameStatsColor from Gorgon. Seemed kind of pointless really.
+ Added a Depth (and PrimitiveDepth to render targets) property to all Sprite types.
This depth function will respect the Z-Buffer if one is set up via SetMode. With this
the user will be able to sort out which sprites get rendered before other sprites by
using the Z-Buffer to test for occlusion regardless of the order of drawing.
+ Added new Depth buffer testing and writing properties to renderable objects. And added
global depth buffer test/writing properties as well.
- Took out a dumb restriction on the sprites that required the shader and/or image that
a sprite was bound with to be loaded BEFORE the sprite is loaded. Now the system will
defer the binding of the image/shader until they're loaded into the Image/ShaderCache
objects.
+ Added a framework DLL to help simplify development of applications in Gorgon. This
framework DLL is what used to be the framework in the Gorgon Library itself. If your
code is broken by the framework code removal from Gorgon, then adding this assembly
to your project should fix it.
+ Added a dialogs helper which is just a small DLL that gives extended dialog boxes
for errors, confirmation and information. This is the same as the dialogs in the
SharpUtilities dependency. However, unlike the SharpUtilities it is NOT required by
Gorgon and as such you are free to not use it if you choose.
- Removing dependency on SharpUtilities. This library has run its course and it's a
pain for distributing projects using it when it's been updated. All Native code and
math functions are to be moved into Gorgon. This will break things if you're using
SharpUtilities.
+ Added new code to the PlugInFactory static object to check for signed assemblies.
Also added code to compare the assembly public key with the users public key so
that the user application can only load plug-ins that are signed by the user.
* Did some code clean up to break some silly habits (like catch { throw; } finally { }).
+ Added Save(stream), AssignRoot(string/Stream) methods and IsRootInStream property to
facilitate loading a file system object from a stream. With this we can put packed
file systems into other packed file systems, or load a file system from a binary
data blob (e.g. imagine loading your file system from a database field). Or even stream
in a file system from a network connection. Also added a FileSystemStreamOffset property
to set or show where the file system is located within a stream. Removed the setter
accessor on the Root property since we can now set it via the AssignRoot function.
* Modified the Blit() methods to take a BlitterSizeMode enumeration instead of a boolean
as the scaling parameter. This was done to be explicit about the case of size
mismatch between the image and the parameters passed in to the blitter. Added Color
parameter to the blitter that will allow us to alter the color of the blitted target
or image.
+ Added an example that will allow us to expose SlimDX's Direct 3D interfaces to
our application via a plug-in. This will allow us to mix in a 3D scene with our
2D stuff.
- Dropped the shared plug-in project from the examples. We no longer require (and
honestly, never did require) a proxy DLL to host our base/abstract plug-in
interface(s). This opens up a great deal of flexibility, the reason for the proxy
DLL in the previous version was due to a circular dependency issue which has since
been resolved. Now the user can add the host assembly (e.g. My2DWorldBuilder.exe)
as a reference and use the interfaces exposed by that. Of course, you can still
use a proxy DLL if you wish.
* Updated the file system editor to handle encrypted files.
+ Added a new encrypted file system plug-in. This is a test plug-in, and should
NOT be used in a production environment. If you wish to use this plug-in, you
can modify the private key in the code and sign the plug-in assembly yourself.


Operating out of a 1950s Starliner Caravan, that was converted over 8 months by the previous owners - Corin and Lisa. Our caravan is an old beauty with new bones, and can get anywhere a car can. We are going to be at events around the Hibiscus Coast and wider Auckland area.


|
|
|
Writing at Work, Inc. has provided training and writing services
to corporations, professional organizations, and government agencies since
1985. We design training to meet specially requested objectives for the individual, company, or industry. Topics cover traditional writing standards to new business requirements that link with other organizational training.
Writing at Work's most requested training programs:
|
Writing Programs |
|
Writing and |
| |
Effective Business Writing |
|
Organizational |
| |
Grammar Review for Business |
|
Development |
| |
Writing for Supervisors & Managers |
|
The Mission is Message |
| |
E-mail at Work |
|
Writing Employee Policies |
| |
Technical Writing |
|
Leadership & Communications |
| |
Specification & Procedure Writing |
|
Personal Development |
| |
Persuasive Writing |
|
Programs |
| |
Proofreading |
|
Literary Classics in the Workplace |
| |
Independent Studies & Coaching |
|
Creativity through Writing |
|


Wikidata Graph Builder
Build graphs using Wikidata Query Service and d3.js.
Example graphs:
- Parent taxons of Blue Whale
- Class tree for human
- Parents of Nikita Mikhalkov
- Children of Agnes of the Palatinate (4 generations)
- Types of numbers
- Subclasses of physicists
- Subclasses and parent classes of period 2 elements
- People, who were filmed with Jim Carrey
- Connectivity of the USA states
- Usage of subclasses of actors


Created by Joe Simoes
Discuss the Technologies GA Utilizes in Deployments and Why They Are Important


DivHacks is Columbia's first and only diversity hackathon with an objective to create an empowering and inspirational space for underrepresented students in entrepreneurship and technology. DivHacks aims to celebrate the contributions made by underrepresented technologists and to introduce a space for disenfranchised communities to create and build technologies that reflect our narratives. We believe that enhancing diversity in entrepreneurship and technology is one of the greatest economic and social uplift opportunities of our lifetime. By addressing the needs of the increasingly diverse global economy, we can build more impactful, inclusive, and meaningful products and technologies.
This year's DivHacks theme is Uplifiting Urban America. Contestants are expected to work in small teams towards building an application that is aimed towards solving issues found across many inner cities.
Maggie Chan Jones is a seasoned C-level executive specializing in marketing, business transformation and technology. I’m also an entrepreneur, and the Founder and CEO of Tenshey, Inc., a startup with a mission to advance gender diversity and leadership development through executive coaching. Prior to becoming an entrepreneur, I was the first woman to be appointed as CMO of SAP, I led global advertising and brand experience initiatives, sponsorships, digital marketing, strategic events, customer audience journey, and field and partner marketing across all markets.
DivHacks is open to students from other schools. Be sure to indicate your school on the registration form.
Not at all! DivHacks welcomes people of all skill levels and that includes those who are interested in learning. Throughout the hackathon, there will be workshops aimed towards beginners in different areas including workshops for those with no prior programming experience at all.
DivHacks will take place in the James Room, which is located at Barnard Hall on the Barnard College campus. Worshops wil take place throughout the day in other rooms outside of the James Room that are in the building.
Be sure to bring an ID, a computer, charger, any other gear you might need, and yourself! Food will be served throughout the day.


tzselect - select a timezone
tzselect [ -c coord ] [
-n limit ] [
--help ] [
--version ]
The tzselect program asks the user for information about the current
location, and outputs the resulting timezone to standard output. The output is
suitable as a value for the TZ environment variable.
All interaction with the user is done via standard input and
standard error.
- -c coord
- Instead of asking for continent and then country and then city, ask for
selection from time zones whose largest cities are closest to the location
with geographical coordinates coord. Use ISO 6709 notation for
coord, that is, a latitude immediately followed by a longitude. The
latitude and longitude should be signed integers followed by an optional
decimal point and fraction: positive numbers represent north and east,
negative south and west. Latitudes with two and longitudes with three
integer digits are treated as degrees; latitudes with four or six and
longitudes with five or seven integer digits are treated as DDMM,
DDDMM, DDMMSS, or DDDMMSS representing DD or DDD
degrees, MM minutes, and zero or SS seconds, with any
trailing fractions represent fractional minutes or (if SS is
present) seconds. The decimal point is that of the current locale. For
example, in the (default) C locale,
-c +40.689-074.045
specifies 40.689°N, 74.045°W,
-c +4041.4-07402.7
specifies 40°41.4′N, 74°2.7′W, and
-c +404121-0740240
specifies 40°41′21″N, 74°2′40″W.
If coord is not one of the documented forms, the resulting behavior
is unspecified.
- -n limit
- When -c is used, display the closest
limit locations (default 10).
- --help
- Output help information and exit.
- --version
- Output version information and exit.
- AWK
- Name of a Posix-compliant awk program (default: awk).
- TZDIR
- Name of the directory containing timezone data files (default:
/usr/share/zoneinfo).
- TZDIR/iso3166.tab
- Table of ISO 3166 2-letter country codes and country names.
- TZDIR/zone1970.tab
- Table of country codes, latitude and longitude, timezones, and descriptive
comments.
- TZDIR/TZ
- Timezone data file for timezone TZ.
The exit status is zero if a timezone was successfully obtained from the user,
nonzero otherwise.
newctime(3), tzfile(5), zdump(8), zic(8)
Applications should not assume that tzselect's output matches the user's
political preferences.


Money game. Should Red redouble? If redoubled, should White take?
pips Red=148 White=135
(CorrectAnswer= 0/0, ErrorScore= 0)
Is the power of the broken prime plus two opponent checkers on the bar sufficient to combat a pure five-point prime?
If gammons didn’t count White could take this redouble but he loses a gammon 25% of the time from here. White needs too many things to go right for him to be able to take this cube. Instead he must take his medicine and pass. Taking is actually a blunder.
If gammons didn’t count White could take this redouble but he loses a gammon 25% of the time from here. White needs too many things to go right for him to be able to take this cube. Instead he must take his medicine and pass. Taking is actually a blunder.
Cube analysis 2-ply cubeless equity +0.594 0.721 0.232 0.014 - 0.279 0.089 0.006 Cubeful equities: 1. Double, take +0.999 2. Double, pass +1.000 (+0.001) 3. No double +0.881 (-0.118) Proper cube action: Redouble, take


|
message$ - A message to display
serious - A true/false flag indicating whether something serious is about to happen |
|
Confirm allows you to check with the user before performing an operation.
Confirm displays a window containing the provided message, along with YES and NO buttons. If the user selects YES, a value of 1 is returned. Otherwise, the returned value is 0. See also: Notify, Proceed. |
|
; Example provided by Mag
result=Confirm("Are you sure",True) If result=1 Then Notify "I know that you're sure, I just asked to annoy you!" Else Notify "You cancelled the process!" EndIf End |


SUBROUTINE DGELSD( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, $ WORK, LWORK, IWORK, INFO ) * * -- LAPACK driver routine (version 3.1) -- * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. * November 2006 * * .. Scalar Arguments .. INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK DOUBLE PRECISION RCOND * .. * .. Array Arguments .. INTEGER IWORK( * ) DOUBLE PRECISION A( LDA, * ), B( LDB, * ), S( * ), WORK( * ) * .. * * Purpose * ======= * * DGELSD computes the minimum-norm solution to a real linear least * squares problem: * minimize 2-norm(| b - A*x |) * using the singular value decomposition (SVD) of A. A is an M-by-N * matrix which may be rank-deficient. * * Several right hand side vectors b and solution vectors x can be * handled in a single call; they are stored as the columns of the * M-by-NRHS right hand side matrix B and the N-by-NRHS solution * matrix X. * * The problem is solved in three steps: * (1) Reduce the coefficient matrix A to bidiagonal form with * Householder transformations, reducing the original problem * into a "bidiagonal least squares problem" (BLS) * (2) Solve the BLS using a divide and conquer approach. * (3) Apply back all the Householder tranformations to solve * the original least squares problem. * * The effective rank of A is determined by treating as zero those * singular values which are less than RCOND times the largest singular * value. * * The divide and conquer algorithm makes very mild assumptions about * floating point arithmetic. It will work on machines with a guard * digit in add/subtract, or on those binary machines without guard * digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or * Cray-2. It could conceivably fail on hexadecimal or decimal machines * without guard digits, but we know of none. * * Arguments * ========= * * M (input) INTEGER * The number of rows of A. M >= 0. * * N (input) INTEGER * The number of columns of A. N >= 0. * * NRHS (input) INTEGER * The number of right hand sides, i.e., the number of columns * of the matrices B and X. NRHS >= 0. * * A (input) DOUBLE PRECISION array, dimension (LDA,N) * On entry, the M-by-N matrix A. * On exit, A has been destroyed. * * LDA (input) INTEGER * The leading dimension of the array A. LDA >= max(1,M). * * B (input/output) DOUBLE PRECISION array, dimension (LDB,NRHS) * On entry, the M-by-NRHS right hand side matrix B. * On exit, B is overwritten by the N-by-NRHS solution * matrix X. If m >= n and RANK = n, the residual * sum-of-squares for the solution in the i-th column is given * by the sum of squares of elements n+1:m in that column. * * LDB (input) INTEGER * The leading dimension of the array B. LDB >= max(1,max(M,N)). * * S (output) DOUBLE PRECISION array, dimension (min(M,N)) * The singular values of A in decreasing order. * The condition number of A in the 2-norm = S(1)/S(min(m,n)). * * RCOND (input) DOUBLE PRECISION * RCOND is used to determine the effective rank of A. * Singular values S(i) <= RCOND*S(1) are treated as zero. * If RCOND < 0, machine precision is used instead. * * RANK (output) INTEGER * The effective rank of A, i.e., the number of singular values * which are greater than RCOND*S(1). * * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. * * LWORK (input) INTEGER * The dimension of the array WORK. LWORK must be at least 1. * The exact minimum amount of workspace needed depends on M, * N and NRHS. As long as LWORK is at least * 12*N + 2*N*SMLSIZ + 8*N*NLVL + N*NRHS + (SMLSIZ+1)**2, * if M is greater than or equal to N or * 12*M + 2*M*SMLSIZ + 8*M*NLVL + M*NRHS + (SMLSIZ+1)**2, * if M is less than N, the code will execute correctly. * SMLSIZ is returned by ILAENV and is equal to the maximum * size of the subproblems at the bottom of the computation * tree (usually about 25), and * NLVL = MAX( 0, INT( LOG_2( MIN( M,N )/(SMLSIZ+1) ) ) + 1 ) * For good performance, LWORK should generally be larger. * * If LWORK = -1, then a workspace query is assumed; the routine * only calculates the optimal size of the WORK array, returns * this value as the first entry of the WORK array, and no error * message related to LWORK is issued by XERBLA. * * IWORK (workspace) INTEGER array, dimension (MAX(1,LIWORK)) * LIWORK >= 3 * MINMN * NLVL + 11 * MINMN, * where MINMN = MIN( M,N ). * * INFO (output) INTEGER * = 0: successful exit * < 0: if INFO = -i, the i-th argument had an illegal value. * > 0: the algorithm for computing the SVD failed to converge; * if INFO = i, i off-diagonal elements of an intermediate * bidiagonal form did not converge to zero. * * Further Details * =============== * * Based on contributions by * Ming Gu and Ren-Cang Li, Computer Science Division, University of * California at Berkeley, USA * Osni Marques, LBNL/NERSC, USA * * ===================================================================== * * .. Parameters .. DOUBLE PRECISION ZERO, ONE, TWO PARAMETER ( ZERO = 0.0D0, ONE = 1.0D0, TWO = 2.0D0 ) * .. * .. Local Scalars .. LOGICAL LQUERY INTEGER IASCL, IBSCL, IE, IL, ITAU, ITAUP, ITAUQ, $ LDWORK, MAXMN, MAXWRK, MINMN, MINWRK, MM, $ MNTHR, NLVL, NWORK, SMLSIZ, WLALSD DOUBLE PRECISION ANRM, BIGNUM, BNRM, EPS, SFMIN, SMLNUM * .. * .. External Subroutines .. EXTERNAL DGEBRD, DGELQF, DGEQRF, DLABAD, DLACPY, DLALSD, $ DLASCL, DLASET, DORMBR, DORMLQ, DORMQR, XERBLA * .. * .. External Functions .. INTEGER ILAENV DOUBLE PRECISION DLAMCH, DLANGE EXTERNAL ILAENV, DLAMCH, DLANGE * .. * .. Intrinsic Functions .. INTRINSIC DBLE, INT, LOG, MAX, MIN * .. * .. Executable Statements .. * * Test the input arguments. * INFO = 0 MINMN = MIN( M, N ) MAXMN = MAX( M, N ) MNTHR = ILAENV( 6, 'DGELSD', ' ', M, N, NRHS, -1 ) LQUERY = ( LWORK.EQ.-1 ) IF( M.LT.0 ) THEN INFO = -1 ELSE IF( N.LT.0 ) THEN INFO = -2 ELSE IF( NRHS.LT.0 ) THEN INFO = -3 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN INFO = -5 ELSE IF( LDB.LT.MAX( 1, MAXMN ) ) THEN INFO = -7 END IF * SMLSIZ = ILAENV( 9, 'DGELSD', ' ', 0, 0, 0, 0 ) * * Compute workspace. * (Note: Comments in the code beginning "Workspace:" describe the * minimal amount of workspace needed at that point in the code, * as well as the preferred amount for good performance. * NB refers to the optimal block size for the immediately * following subroutine, as returned by ILAENV.) * MINWRK = 1 MINMN = MAX( 1, MINMN ) NLVL = MAX( INT( LOG( DBLE( MINMN ) / DBLE( SMLSIZ+1 ) ) / $ LOG( TWO ) ) + 1, 0 ) * IF( INFO.EQ.0 ) THEN MAXWRK = 0 MM = M IF( M.GE.N .AND. M.GE.MNTHR ) THEN * * Path 1a - overdetermined, with many more rows than columns. * MM = N MAXWRK = MAX( MAXWRK, N+N*ILAENV( 1, 'DGEQRF', ' ', M, N, $ -1, -1 ) ) MAXWRK = MAX( MAXWRK, N+NRHS* $ ILAENV( 1, 'DORMQR', 'LT', M, NRHS, N, -1 ) ) END IF IF( M.GE.N ) THEN * * Path 1 - overdetermined or exactly determined. * MAXWRK = MAX( MAXWRK, 3*N+( MM+N )* $ ILAENV( 1, 'DGEBRD', ' ', MM, N, -1, -1 ) ) MAXWRK = MAX( MAXWRK, 3*N+NRHS* $ ILAENV( 1, 'DORMBR', 'QLT', MM, NRHS, N, -1 ) ) MAXWRK = MAX( MAXWRK, 3*N+( N-1 )* $ ILAENV( 1, 'DORMBR', 'PLN', N, NRHS, N, -1 ) ) WLALSD = 9*N+2*N*SMLSIZ+8*N*NLVL+N*NRHS+(SMLSIZ+1)**2 MAXWRK = MAX( MAXWRK, 3*N+WLALSD ) MINWRK = MAX( 3*N+MM, 3*N+NRHS, 3*N+WLALSD ) END IF IF( N.GT.M ) THEN WLALSD = 9*M+2*M*SMLSIZ+8*M*NLVL+M*NRHS+(SMLSIZ+1)**2 IF( N.GE.MNTHR ) THEN * * Path 2a - underdetermined, with many more columns * than rows. * MAXWRK = M + M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 ) MAXWRK = MAX( MAXWRK, M*M+4*M+2*M* $ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) ) MAXWRK = MAX( MAXWRK, M*M+4*M+NRHS* $ ILAENV( 1, 'DORMBR', 'QLT', M, NRHS, M, -1 ) ) MAXWRK = MAX( MAXWRK, M*M+4*M+( M-1 )* $ ILAENV( 1, 'DORMBR', 'PLN', M, NRHS, M, -1 ) ) IF( NRHS.GT.1 ) THEN MAXWRK = MAX( MAXWRK, M*M+M+M*NRHS ) ELSE MAXWRK = MAX( MAXWRK, M*M+2*M ) END IF MAXWRK = MAX( MAXWRK, M+NRHS* $ ILAENV( 1, 'DORMLQ', 'LT', N, NRHS, M, -1 ) ) MAXWRK = MAX( MAXWRK, M*M+4*M+WLALSD ) ELSE * * Path 2 - remaining underdetermined cases. * MAXWRK = 3*M + ( N+M )*ILAENV( 1, 'DGEBRD', ' ', M, N, $ -1, -1 ) MAXWRK = MAX( MAXWRK, 3*M+NRHS* $ ILAENV( 1, 'DORMBR', 'QLT', M, NRHS, N, -1 ) ) MAXWRK = MAX( MAXWRK, 3*M+M* $ ILAENV( 1, 'DORMBR', 'PLN', N, NRHS, M, -1 ) ) MAXWRK = MAX( MAXWRK, 3*M+WLALSD ) END IF MINWRK = MAX( 3*M+NRHS, 3*M+M, 3*M+WLALSD ) END IF MINWRK = MIN( MINWRK, MAXWRK ) WORK( 1 ) = MAXWRK IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN INFO = -12 END IF END IF * IF( INFO.NE.0 ) THEN CALL XERBLA( 'DGELSD', -INFO ) RETURN ELSE IF( LQUERY ) THEN GO TO 10 END IF * * Quick return if possible. * IF( M.EQ.0 .OR. N.EQ.0 ) THEN RANK = 0 RETURN END IF * * Get machine parameters. * EPS = DLAMCH( 'P' ) SFMIN = DLAMCH( 'S' ) SMLNUM = SFMIN / EPS BIGNUM = ONE / SMLNUM CALL DLABAD( SMLNUM, BIGNUM ) * * Scale A if max entry outside range [SMLNUM,BIGNUM]. * ANRM = DLANGE( 'M', M, N, A, LDA, WORK ) IASCL = 0 IF( ANRM.GT.ZERO .AND. ANRM.LT.SMLNUM ) THEN * * Scale matrix norm up to SMLNUM. * CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, M, N, A, LDA, INFO ) IASCL = 1 ELSE IF( ANRM.GT.BIGNUM ) THEN * * Scale matrix norm down to BIGNUM. * CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, M, N, A, LDA, INFO ) IASCL = 2 ELSE IF( ANRM.EQ.ZERO ) THEN * * Matrix all zero. Return zero solution. * CALL DLASET( 'F', MAX( M, N ), NRHS, ZERO, ZERO, B, LDB ) CALL DLASET( 'F', MINMN, 1, ZERO, ZERO, S, 1 ) RANK = 0 GO TO 10 END IF * * Scale B if max entry outside range [SMLNUM,BIGNUM]. * BNRM = DLANGE( 'M', M, NRHS, B, LDB, WORK ) IBSCL = 0 IF( BNRM.GT.ZERO .AND. BNRM.LT.SMLNUM ) THEN * * Scale matrix norm up to SMLNUM. * CALL DLASCL( 'G', 0, 0, BNRM, SMLNUM, M, NRHS, B, LDB, INFO ) IBSCL = 1 ELSE IF( BNRM.GT.BIGNUM ) THEN * * Scale matrix norm down to BIGNUM. * CALL DLASCL( 'G', 0, 0, BNRM, BIGNUM, M, NRHS, B, LDB, INFO ) IBSCL = 2 END IF * * If M < N make sure certain entries of B are zero. * IF( M.LT.N ) $ CALL DLASET( 'F', N-M, NRHS, ZERO, ZERO, B( M+1, 1 ), LDB ) * * Overdetermined case. * IF( M.GE.N ) THEN * * Path 1 - overdetermined or exactly determined. * MM = M IF( M.GE.MNTHR ) THEN * * Path 1a - overdetermined, with many more rows than columns. * MM = N ITAU = 1 NWORK = ITAU + N * * Compute A=Q*R. * (Workspace: need 2*N, prefer N+N*NB) * CALL DGEQRF( M, N, A, LDA, WORK( ITAU ), WORK( NWORK ), $ LWORK-NWORK+1, INFO ) * * Multiply B by transpose(Q). * (Workspace: need N+NRHS, prefer N+NRHS*NB) * CALL DORMQR( 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAU ), B, $ LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * * Zero out below R. * IF( N.GT.1 ) THEN CALL DLASET( 'L', N-1, N-1, ZERO, ZERO, A( 2, 1 ), LDA ) END IF END IF * IE = 1 ITAUQ = IE + N ITAUP = ITAUQ + N NWORK = ITAUP + N * * Bidiagonalize R in A. * (Workspace: need 3*N+MM, prefer 3*N+(MM+N)*NB) * CALL DGEBRD( MM, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ), $ WORK( ITAUP ), WORK( NWORK ), LWORK-NWORK+1, $ INFO ) * * Multiply B by transpose of left bidiagonalizing vectors of R. * (Workspace: need 3*N+NRHS, prefer 3*N+NRHS*NB) * CALL DORMBR( 'Q', 'L', 'T', MM, NRHS, N, A, LDA, WORK( ITAUQ ), $ B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * * Solve the bidiagonal least squares problem. * CALL DLALSD( 'U', SMLSIZ, N, NRHS, S, WORK( IE ), B, LDB, $ RCOND, RANK, WORK( NWORK ), IWORK, INFO ) IF( INFO.NE.0 ) THEN GO TO 10 END IF * * Multiply B by right bidiagonalizing vectors of R. * CALL DORMBR( 'P', 'L', 'N', N, NRHS, N, A, LDA, WORK( ITAUP ), $ B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * ELSE IF( N.GE.MNTHR .AND. LWORK.GE.4*M+M*M+ $ MAX( M, 2*M-4, NRHS, N-3*M, WLALSD ) ) THEN * * Path 2a - underdetermined, with many more columns than rows * and sufficient workspace for an efficient algorithm. * LDWORK = M IF( LWORK.GE.MAX( 4*M+M*LDA+MAX( M, 2*M-4, NRHS, N-3*M ), $ M*LDA+M+M*NRHS, 4*M+M*LDA+WLALSD ) )LDWORK = LDA ITAU = 1 NWORK = M + 1 * * Compute A=L*Q. * (Workspace: need 2*M, prefer M+M*NB) * CALL DGELQF( M, N, A, LDA, WORK( ITAU ), WORK( NWORK ), $ LWORK-NWORK+1, INFO ) IL = NWORK * * Copy L to WORK(IL), zeroing out above its diagonal. * CALL DLACPY( 'L', M, M, A, LDA, WORK( IL ), LDWORK ) CALL DLASET( 'U', M-1, M-1, ZERO, ZERO, WORK( IL+LDWORK ), $ LDWORK ) IE = IL + LDWORK*M ITAUQ = IE + M ITAUP = ITAUQ + M NWORK = ITAUP + M * * Bidiagonalize L in WORK(IL). * (Workspace: need M*M+5*M, prefer M*M+4*M+2*M*NB) * CALL DGEBRD( M, M, WORK( IL ), LDWORK, S, WORK( IE ), $ WORK( ITAUQ ), WORK( ITAUP ), WORK( NWORK ), $ LWORK-NWORK+1, INFO ) * * Multiply B by transpose of left bidiagonalizing vectors of L. * (Workspace: need M*M+4*M+NRHS, prefer M*M+4*M+NRHS*NB) * CALL DORMBR( 'Q', 'L', 'T', M, NRHS, M, WORK( IL ), LDWORK, $ WORK( ITAUQ ), B, LDB, WORK( NWORK ), $ LWORK-NWORK+1, INFO ) * * Solve the bidiagonal least squares problem. * CALL DLALSD( 'U', SMLSIZ, M, NRHS, S, WORK( IE ), B, LDB, $ RCOND, RANK, WORK( NWORK ), IWORK, INFO ) IF( INFO.NE.0 ) THEN GO TO 10 END IF * * Multiply B by right bidiagonalizing vectors of L. * CALL DORMBR( 'P', 'L', 'N', M, NRHS, M, WORK( IL ), LDWORK, $ WORK( ITAUP ), B, LDB, WORK( NWORK ), $ LWORK-NWORK+1, INFO ) * * Zero out below first M rows of B. * CALL DLASET( 'F', N-M, NRHS, ZERO, ZERO, B( M+1, 1 ), LDB ) NWORK = ITAU + M * * Multiply transpose(Q) by B. * (Workspace: need M+NRHS, prefer M+NRHS*NB) * CALL DORMLQ( 'L', 'T', N, NRHS, M, A, LDA, WORK( ITAU ), B, $ LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * ELSE * * Path 2 - remaining underdetermined cases. * IE = 1 ITAUQ = IE + M ITAUP = ITAUQ + M NWORK = ITAUP + M * * Bidiagonalize A. * (Workspace: need 3*M+N, prefer 3*M+(M+N)*NB) * CALL DGEBRD( M, N, A, LDA, S, WORK( IE ), WORK( ITAUQ ), $ WORK( ITAUP ), WORK( NWORK ), LWORK-NWORK+1, $ INFO ) * * Multiply B by transpose of left bidiagonalizing vectors. * (Workspace: need 3*M+NRHS, prefer 3*M+NRHS*NB) * CALL DORMBR( 'Q', 'L', 'T', M, NRHS, N, A, LDA, WORK( ITAUQ ), $ B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * * Solve the bidiagonal least squares problem. * CALL DLALSD( 'L', SMLSIZ, M, NRHS, S, WORK( IE ), B, LDB, $ RCOND, RANK, WORK( NWORK ), IWORK, INFO ) IF( INFO.NE.0 ) THEN GO TO 10 END IF * * Multiply B by right bidiagonalizing vectors of A. * CALL DORMBR( 'P', 'L', 'N', N, NRHS, M, A, LDA, WORK( ITAUP ), $ B, LDB, WORK( NWORK ), LWORK-NWORK+1, INFO ) * END IF * * Undo scaling. * IF( IASCL.EQ.1 ) THEN CALL DLASCL( 'G', 0, 0, ANRM, SMLNUM, N, NRHS, B, LDB, INFO ) CALL DLASCL( 'G', 0, 0, SMLNUM, ANRM, MINMN, 1, S, MINMN, $ INFO ) ELSE IF( IASCL.EQ.2 ) THEN CALL DLASCL( 'G', 0, 0, ANRM, BIGNUM, N, NRHS, B, LDB, INFO ) CALL DLASCL( 'G', 0, 0, BIGNUM, ANRM, MINMN, 1, S, MINMN, $ INFO ) END IF IF( IBSCL.EQ.1 ) THEN CALL DLASCL( 'G', 0, 0, SMLNUM, BNRM, N, NRHS, B, LDB, INFO ) ELSE IF( IBSCL.EQ.2 ) THEN CALL DLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO ) END IF * 10 CONTINUE WORK( 1 ) = MAXWRK RETURN * * End of DGELSD * END


cf.Field.weights¶
-
Field.
weights
(weights=True, scale=None, measure=False, components=False, methods=False, radius='earth', data=False, great_circle=False, axes=None, **kwargs)[source]¶ Return weights for the data array values.
The weights are those used during a statistical collapse of the data. For example when computing a area weight average.
Weights for any combination of axes may be returned.
Weights are either derived from the field construct’s metadata (such as coordinate cell sizes) or provided explicitly in the form of other
Field
constructs. In any case, the outer product of these weights components is returned in a field which is broadcastable to the original field (see the components parameter for returning the components individually).By default null, equal weights are returned.
New in version 1.0.
See also
- Parameters
- weights: optional
Specify the weights to be created. There are three distinct methods:
Type 1 will create weights for all axes of size greater than 1, raising an exception if this is not possible (this is the default).;
Type 2 will always succeed in creating weights for all axes of the field, even if some of those weights are null.
Type 3 allows particular types of weights to be defined for particular axes, and an exception will be raised if it is not possible to the create weights.
Type 1 and Type 2 come at the expense of not always being able to control exactly how the weights are created (although which methods were used can be inspected with use of the methods parameter).
Type 1: weights may be:
weights
Description
This is the default. Weights are created for all axes (or a subset of them, see the axes parameter). Set the methods parameter to find out how the weights were actually created.
The weights components are created for axes of the field by one or more of the following methods, in order of preference,
Volume cell measures
Area cell measures
Area calculated from (grid) latitude and (grid) longitude dimension coordinate constructs with bounds
Cell sizes of dimension coordinate constructs with bounds
Equal weights
and the outer product of these weights components is returned in a field constructs which is broadcastable to the original field construct (see the components parameter).
Type 2: weights may be one of:
weights
Description
Equal weights for all axes.
Equal weights for all axes.
Explicit weights in a
Data
object that must be broadcastable to the field construct’s data, unless the axes parameter is also set.Explicit weights in a dictionary of the form that is returned from a call to the
weights
method withcomponent=True
Type 3: weights may be one, or a sequence, of:
weights
Description
'area'
Cell area weights from the field construct’s area cell measure construct or, if one doesn’t exist, from (grid) latitude and (grid) longitude dimension coordinate constructs. Set the methods parameter to find out how the weights were actually created.
'volume'
Cell volume weights from the field construct’s volume cell measure construct.
Weights from the cell sizes of the dimension coordinate construct with this identity.
Explicit weights from the data of another field construct, which must be broadcastable to this field construct.
If weights is a sequence of any combination of the above then the returned field contains the outer product of the weights defined by each element of the sequence. The ordering of the sequence is irrelevant.
- Parameter example:
To create to 2-dimensional weights based on cell areas:
f.weights('area')
. To create to 3-dimensional weights based on cell areas and linear height:f.weights(['area', 'Z'])
.
- scale: number, optional
If set to a positive number then scale the weights so that they are less than or equal to that number. If weights components have been requested (see the components parameter) then each component is scaled independently of the others.
- Parameter example:
To scale all weights so that they lie between 0 and 1:
scale=1
.
- measure:
bool
, optional Create weights that are cell measures, i.e. which describe actual cell sizes (e.g. cell areas) with appropriate units (e.g. metres squared).
Cell measures can be created for any combination of axes. For example, cell measures for a time axis are the time span for each cell with canonical units of seconds; cell measures for the combination of four axes representing time and three dimensional space could have canonical units of metres cubed seconds.
Note
Specifying cell volume weights via
weights=['X', 'Y', 'Z']
orweights=['area', 'Z']
(or other equivalents) will produce an incorrect result if the vertical dimension coordinates do not define the actual height or depth thickness of every cell in the domain. In this case,weights='volume'
should be used instead, which requires the field construct to have a “volume” cell measure construct.If
weights=True
then care also needs to be taken, as a “volume” cell measure construct will be used if present, otherwise the cell volumes will be calculated using the size of the vertical coordinate cells.- radius: optional
Specify the radius used for calculating the areas of cells defined in spherical polar coordinates. The radius is that which would be returned by this call of the field construct’s
radius
method:f.radius(radius)
. See thecf.Field.radius
for details.By default radius is
'earth'
which means that if and only if the radius can not found from the datums of any coordinate reference constructs, then the default radius taken as 6371229 metres.- components:
bool
, optional If True then a dictionary of orthogonal weights components is returned instead of a field. Each key is a tuple of integers representing axis positions in the field construct’s data, with corresponding values of weights in
Data
objects. The axes of weights match the axes of the field construct’s data array in the order given by their dictionary keys.- methods:
bool
, optional If True, then return a dictionary describing methods used to create the weights.
- data:
bool
, optional If True then return the weights in a
Data
instance that is broadcastable to the original data.New in version 3.1.0.
- great_circle:
bool
, optional If True then allow, if required, the derivation of i) area weights from polygon geometry cells by assuming that each cell part is a spherical polygon composed of great circle segments; and ii) and the derivation of line-length weights from line geometry cells by assuming that each line part is composed of great circle segments.
New in version 3.2.0.
- axes: (sequence of)
int
orstr
, optional Modify the behaviour when weights is
True
or aData
instance. Ignored for any other value the weights parameter.If weights is
True
then weights are created only for the specified axes (as opposed to all axes). I.e.weight=True, axes=axes
is identical toweights=axes
.If weights is a
Data
instance then the specified axes identify each dimension of the given weights. If the weights do not broadcast to the field construct’s data then setting the axes parameter is required so that the broadcasting can be inferred, otherwise setting the axes is not required.- Parameter example:
axes='T'
- Parameter example:
axes=['longitude']
- Parameter example:
axes=[3, 1]
New in version 3.3.0.
kwargs: deprecated at version 3.0.0.


You've just created a simple Play application providing a usable Play Autosource for ReactiveMongo.
With it, you can bootstrap in a few lines an automatic CRUD asynchronous datasource with REST endpoints back'ed on ReactiveMongo. It's quite useful to :
The concept is explained more precisely in these articles:
Read these articles and look at code in app/Application.scala
and conf/routes
, it's quite explicit and provides everything to start.
To test it:
sbt
Play-Autosource concept has been implemented for :


The Green Mile * * * (out of * * * * )
Directed by Frank Darabont. Cast: Tom Hanks, Michael Clarke Duncan, Doug Hutchison, David Morse, Michael Jeter, Bonnie Hunt, James Cromwell, Sam Rockwell, Barry Pepper, Dabbs Greer, Eve Brent, Graham Greene, Harry Dean Stanton, Patricia Clarkson, Jeffrey DeMunn. 1999 - 182 minutes Rated R (for profanity, violence, and graphic depictions of electrocutions). Reviewed by Dustin Putman, December 11, 1999.
Expectations have been running so high for Frank Darabont's adaptation of the Stephen King serial novel, "The Green Mile," that many film industrialites prematurely labeled it "The Best Film of 1999," even before it was finished filming. 'Premature' is the correct adjective because, while "The Green Mile" is a very fine, intimately made drama on its own, it does not come close to standing up to its lofty presumptions. This is not a criticism of the film itself, but simply a negative observation about how hype is more often than not highly unnecessary, and ends up doing more damage than good.
Aside from the 3-hour-plus running time, "The Green Mile" occasionally bears a slight resemblance to 1997's "Titanic," particularly in the wraparound story in which we meet a very old man named Paul Edgecomb (Dabbs Greer), who lives at a nursing home and breaks down crying one afternoon when he happens to see Fred Astaire singing "Cheek to Cheek" in an old movie. When confidante Elaine (a fabulous Eve Brent) shows her concern and goes to see what is the matter, Paul decides to tell her a story that took place sixty years before, and that he has never discussed until now.
Switch back to the year of 1935 in Louisiana, a much-younger Paul (Tom Hanks) works as a prison guard at the Cold Mountain Penitentiary, where the convicted criminals on death row are sent. Currently suffering a painful bladder infection, but with a lovely, supportive wife (Bonnie Hunt), Paul's whole perspective on life gradually changes with the appearance of John Coffey (Michael Clarke Duncan), a 7-foot-tall, 350-LB. black man who has been convicted of raping and murdering two young girls. Like a giant kid himself, John instantly does not seem like the type who would hurt a fly, as he even requests that the lights stay on at night, "'cuz I'm scared of the dark."
Other inmates are met and also focused on, including Arlen Bitterbuck (Graham Greene), a highly spiritual Native American; William "Wild Bill" Wharton (Sam Rockwell), a psychopath as crazy as a crap-house rat; and Eduard "Del" Delacroix (Michael Jeter), a kindhearted man who befriends Mr. Jingles, a mouse that roams The Green Mile, called that because the floors are painted green as they lead the inmates to their executions. Complicating matters is the arrival of a new, young prison guard hotshot named Percy (Doug Hutchison), a truly despicable human being who gets his kicks out of humiliating and deliberately hurting others. As time passes, we watch as some of the inmates are taken to their deaths, people that we have grown to care about, and all the while Paul grows a close friendship with John Coffey, who, through supernatural plot developments that will not be divulged here, he becomes convinced is innocent of the crimes which will inevitably send him to his wrongful execution.
Frank Darabont, whose previous film was the similar Stephen King-adapted "The Shawshank Redemption," has returned back to the setting of a prison for the second time in a row, and it cannot be denied that he has a definite flare for this sort of storyline. While "The Shawshank Redemption" was that rare case in which it bombed in movie theaters, but gained an overwhelmingly positive following on video, I was not one of its strongest supporters. At close to 2 1/2 hours, the picture was an effective, but severely flawed drama that had (to me) several long, dry stretches in the middle that could have easily been cut out. In comparison, "The Green Mile" is over 3 hours in length, but never once overstays its welcome, nor does it even feel like a movie of such great length. This is because, while deliberately paced, it also has been tightly edited by Richard Francis-Bruce, with not one scene that should have been thrown on the cutting room floor; every second of screen time has a clear purpose, even when the developments themselves begin to grow strained by the finale.
One of the most powerful attributes of the film is its depiction of time passing within the penitentiary, as certain intimately drawn characters come and go through death row, just to end up as nothing more than memories within the walls of the building. This subject matter is superbly handled under the helming of writer-director Darabont, as are the occasional sequences of execution by electric chair. Credit must go to Darabont again for not turning his back on these harsh moments, as he graphically depicts the death scenes, which are tough to take not only for what they shows, but also because the victims are people we have grown to like and respect, whether they are guilty or not of their convicted crimes. One particular execution sequence is just about as stirring and devastatingly inhumane as anything I have ever seen on film before.
The ensemble cast of "The Green Mile" is first-rate across the board, headlined by star Tom Hanks, whose exact, naturalistic turn as Paul Edgecomb could very well be his most impressive since 1993's "Philadelphia" or 1994's "Forrest Gump." A perfect balance of personalities and casting, newcomer Michael Clarke Duncan is genuinely effective as the magical, honest John Coffey, all the more striking because it is his feature film debut.
Supporting players all make an impression, no one more so than Michael Jeter, who is outstanding as inmate Del, a terminally lonely but giving person who finds joy in his life through the sort of loyal partnership he forms with Mr. Jingles. Heartbreaking and not easy to forget, Jeter gives one of the strongest supporting performances of the year. As cruel and heartless as a movie character can be without heading in cartoonish territory is Doug Hutchison, as Percy, a man without one redeeming quality who strives on the pain he causes others. While never rising above two dimensions, Hutchison still makes quite an impact. Sam Rockwell, a chameleon who has proven in recent years to be able to play a wide spectrum of characters (1997's "Box of Moonlight," 1998's "Lawn Dogs"), is downright creepy as William Wharton, a maniac that John Coffey senses is downright evil. The underrated Bonnie Hunt also turns in fine work as Paul's wife, despite not having much to do.
While thoroughly effective and well-made, one major misstep the film takes is in its final fifteen minutes which, at first, abruptly switches gears into more mainstream territory, complete with a climactic scene that feels overly calculated and tough to swallow. This moment is so disappointing because it is purposefully treated to be a scene that gets audiences to cry, rather than one that is more truthful to the situation. Accordingly, when the wraparound story comes back into play in the end, the film takes another turn for the worst. Instead of being merely downbeat, the conclusion is inappropriately depressing and uncalled-for, and left me feeling more revolted than emotionally satisfied. [Side note: Riding home with my brother afterwards, we got into a brief argument spurred from me making a sarcastic comment at him, because the movie had put me in a very bad mood].
The ending may have come as a major letdown, but that, ultimately, cannot take away from the first 165 minutes of "The Green Mile," which are consistently engrossing and perceptive. Darabont is a master of writing and populating his films with memorable, solid supporting characters, and he has struck gold with his cast this time around. It's just too bad, then, that the finale could not have been stronger. It downgrades a potentially great film to being, at most, a very good one.
- Copyright 1999 by Dustin Putman Http://www.atnzone.com Http://www.young-hollywood.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Replace tabs and spaces with a single space str must be a variable and not an explicit 'string'. Otherwise adjustl will fail.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*) | :: | this |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module.


Logout
Manufacturer
Or enter the name of another manufacturer
Error message
Manufacturer Name
Restaurantx
BACK
NEXT