Results 1 to 10 of 34

Thread: BeRoPNG - A very tiny but complete PNG loader

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Quote Originally Posted by deathshadow View Post
    word and $FFFF0000 === 0 -- ALWAYS
    word shl 16 === 0 -- ALWAYS.
    Sorry, you're wrong. See my code again:

    Code:
    function Swap32(x:word):word;
    begin
     result:=(Swap16(x and $ffff) shl 16) or Swap16((x and $ffff0000) shr 16);
    end;
    The first swap16 call gets "x and $ffff", and the result of it will shifted 16 bits to left, which's correct.
    The second swap16 call gets "(x and $ffff0000) shr 16" or short "x shr 16", and the result of it will not shifted because it was already shifted 16 bits to right, which's also correct.

    I guess, you had simply overlook the correct nested levels of the (...) blocks in my code.
    Last edited by BeRo; 31-08-2011 at 09:46 AM.

  2. #2
    Forgot about this thread... but:

    function Swap32(x:word):word;

    word is 16 bit unsigned... can only contain 0..$FFFF -- therein:

    x and $ffff returns X

    x and $ffff0000 returns 0, always...

    since $FFFF is the highest number WORD can contain, $0000FFFF and $FFFF0000 == 0, ALWAYS. X in your function CANNOT hold a value that would return anything but zero on that second AND.... EVER.

    See what I'm saying? for that function to work X would have to be DWORD and/or Longint... 32 bit... not 16 bit which is what WORD is.
    Last edited by deathshadow; 25-09-2011 at 12:05 PM.
    The accessibility of a website from time to time must be refreshed with the blood of designers and owners. It is its natural manure

  3. #3
    Quote Originally Posted by deathshadow View Post
    See what I'm saying? for that function to work X would have to be DWORD and/or Longint... 32 bit... not 16 bit which is what WORD is.
    Yeah, I know (see the rest of the code), but this is unimportant, since this is 1. just a typo error in the typedef in the functiondef paramdef header (which's quick fixable) and 2. unused on little-endian systems

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •