Agreed

On 21 Nov 2005, at 19:50, Richard Gaskin wrote:
The license is the best place to start. The MC IDE license spells out its own terms, and points to the Rev license which governs the engine.

As an example:

Some recent code I have been working on trying to formalise the exact issues going on with the various wonderful "formatted" sizes you can get Rev to return (see below):

License
This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike 2.5 License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Comment
This means that you can use it without asking for non-commercial reasons - education or for your own use for example. It also means that you may freely distribute to others, but should you charge or sell the product commercially then you need to get back to me and negotiate. Lastly if you modify it and redistribute, then you under the license you are required to notify me of the content of your modifications so that I can benefit.

Now of course for a small piece of code like this - well may as well be given away public domain (which is dubious legally in many countries). But this is an example.

The problem with much of the freely available code, content, icons, whatever in this community is that pooled they make a fabulous resource - but not a legal one. That is you really have to go to each and every contributor and clear the license for every submission (if you can get hold of them and if you can't you are stuck).

Without doing this, we all loose as we cannot scale the community contributions. A well thought out open source strategy would open some of the RunRev content - say the documentation, and create a policy (say on this list or at another location) which defaults to all submissions of code and creative content posted to use a given license.

--> Groups and formatted sizes
-
function rect_GetVisibleRect groupRect, someGroup
    put the margins of someGroup into someMargin
margin_Normalise someMargin, left_Margin, top_Margin, right_Margin, bottom_Margin
    if the showBorder of someGroup is true then
        put the borderWidth of someGroup into someBorder
        if the showName of someGroup is true then
put the effective textHeight of someGroup - someBorder - 1 into someBit
            add someBit to item 2 of someMargin
        end if
        put subtractMargin(someBorder, groupRect) into groupRect
    end if
    put subtractMargin(someMargin, groupRect) into myInner_Rect
    return myInner_Rect
end rect_GetVisibleRect

on rect_SetVisibleRect myGroupRect, showInvisible
    put the long id of me into containerGroup

    -- object dependent

put rect_GetVisibleRect(myGroupRect, containerGroup) into myInner_Rect
    -- testRect myInner_Rect, "Inner Rect"

    put the toplevel_GroupIDs of containerGroup into topGroupIDs
    put myInner_Rect into innerGroup_Rect
    repeat for each line someID in topGroupIDs
        if the visible of control id someID is false then
            if showInvisible is true then
                set the visible of control id someID to true
            else
                next repeat
            end if
        end if

        put the height of control id someID into groupHeight
        put item 2 of innerGroup_Rect + groupHeight into group_Bottom
        put group_Bottom into item 4 of innerGroup_Rect

        set the group_Rect of control id someID to innerGroup_Rect
        put group_Bottom into item 2 of innerGroup_Rect
    end repeat
end rect_SetVisibleRect

function group_InnerRect someGroupObject, groupMargins
  put the rect of someGroupObject into groupRect
if myMargins is empty then put the margins of someGroupObject into groupMargins
  put subtractMargin(groupMargins, groupRect) into myRect
  return myRect
end group_InnerRect

function width_MaxIndexGroupContainerWidth containingGroup
    put empty into widthList
    put the number of groups of containingGroup into maxNum
    repeat with groupNum = 1 to maxNum
        -- maybe can use formatted width of group?
put the long id of group groupNum of containingGroup into indexGroup
        put the long id of fld 1 of indexGroup into someField
        put width_RealFormatted(someField) & "," after widthList
    end repeat
    return max(widthList)
end width_MaxIndexGroupContainerWidth

function formattedWidth_GetField someText, someField, someTextStyle
    lock screen
    put the htmlText of someField into oHtmlText
    set the text of someField to someText
    if someTextStyle is not empty then
        set the textStyle of char 1 to -1 of someField to someTextStyle
    end if
    put the formattedWidth of someField into someWidth
    set the htmlText of someField to oHtmlText
    unlock screen
    return someWidth
end formattedWidth_GetField

function width_RealFormatted someObject
    put the formattedWidth of someObject into someWidth
    if the showBorder of someObject is true then
        add (2 * the borderWidth of someObject) to someWidth
    end if
    return someWidth
end width_RealFormatted

function height_RealFormatted someObject
    put the formattedHeight of someObject into someHeight
    if the showBorder of someObject is true then
        add (2 * the borderHeight of someObject) to someHeight
    end if
    return someHeight
end height_RealFormatted


--> Margins
-
function addMargin someMargins, someRect
margin_Normalise someMargin, left_Margin, top_Margin, right_Margin, bottom_Margin
    subtract left_Margin from item 1 of someRect
    subtract top_Margin from item 2 of someRect
    add right_Margin to item 3 of someRect
    add bottom_Margin to item 4 of someRect
    return someRect
end addMargin

function subtractMargin someMargin, someRect
margin_Normalise someMargin, left_Margin, top_Margin, right_Margin, bottom_Margin
    add left_Margin to item 1 of someRect
    add top_Margin to item 2 of someRect
    subtract right_Margin from item 3 of someRect
    subtract bottom_Margin from item 4 of someRect
    return someRect
end subtractMargin

on margin_Normalise @someMargin, @left_Margin, @top_Margin, @right_Margin, @bottom_Margin
    if the number of items of someMargin = 1 then
        put someMargin into left_Margin
        put someMargin into top_Margin
        put someMargin into right_Margin
        put someMargin into bottom_Margin
    else
        put item 1 of someMargin into left_Margin
        put item 2 of someMargin into top_Margin
        put item 3 of someMargin into right_Margin
        put item 4 of someMargin into bottom_Margin
    end if
put left_Margin,top_Margin,right_Margin,bottom_Margin into someMargin
end margin_Normalise
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to