рдирдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдирд╛ рдХреЛрдб рдкреИрдирд╛ рдХрд░реЗрдВ

рддреЗрдЬ рд▓рд┐рдлрд╛рдлрд╛ рдЪрд╛рдХреВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЙрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдЬреЛ C # C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ C # рдореЗрдВ рд▓рд┐рдЦреЗ рдХреЛрдб рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдкреНрд░рдпрд╛рд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЕрдиреНрдп рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ рдЬреЛ рдЬреАрдпреВрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред



рдРрд╕рд╛ рдХреНрдпреЛрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕рд┐рджреНрдз рдЧреНрд░рд╛рдлрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА LibTiff (рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ LibJpeg) рдХреЛ C # рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЙрди рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ LibTiff рдмрдирд╛рдпрд╛ рдерд╛ред рд▓реЗрдЦ рдореЗрдВ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдореБрдЦреНрдп рд░реВрдк рд╕реЗ LibTiff рдФрд░ LibJpeg рд╕реЗ рд╣реЛрдВрдЧреЗред







1. рдЕрд╡рд╕рдВрд░рдЪрдирд╛



рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:



"рдПрдХ рдХреНрд▓рд┐рдХ" рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ "рдПрдХ рдХреНрд▓рд┐рдХ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ "рдкрд░рд┐рд╡рд░реНрддрди-рд╕рдВрдХрд▓рди-рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ" рдЪрдХреНрд░ рдХреА рдЧрддрд┐ рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрдХреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрдо рдЕрдХреНрд╕рд░ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд╕реЗ рд╡рд┐рдлрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЬрдЯрд┐рд▓ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реЛрд▓рдмреИрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд░реЗрдЧрд╛ред рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ - рдЖрдк, рдмрджрд▓реЗ рдореЗрдВ, рдЖрдкрдХреЗ рд▓рд┐рдП рдЬреЛ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



рдХрд┐рд╕реА рднреА рдХреНрд╖рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреЛрдб рдЕрднреА рднреА рд╡рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реАред рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдФрд░ рд╡рд┐рдзрд┐ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╣реИ "рд╣рдо рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдореЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦреЗрдВрдЧреЗ"ред рдЯреЗрд╕реНрдЯ рдХреЛ 100% рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдпрд╣ рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдг рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд░рдВрддрд░ рдкреБрдирд░реНрд▓реЗрдЦрди рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ред



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LibTiff рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП





Refactoring рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдмрд╕ рдПрдХ рдХрд┐рддрд╛рдм рдкрдврд╝реЗрдВред рдпрд╣ рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░ рдХреА рдкреБрд╕реНрддрдХ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рд╣реИред рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ред " рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЕрд╡рд╢реНрдп рдкрдврд╝реЗрдВ - рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП, рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЬреНрдЮрд╛рди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧреА рд╣реИред рдкреВрд░реА рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢реБрд░реБрдЖрдд рд╕реЗ рд▓рдЧрднрдЧ 130 рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЦрдВрдб "рдПрдВрдмреЗрдбрд┐рдВрдЧ рдП рдореЗрдердб" рд╕реЗ рдкрд╣рд▓реЗ рдпреЗ рдкрд╣рд▓реЗ рдкрд╛рдВрдЪ рднрд╛рдЧ рдФрд░ рдЫрдареЗ рднрд╛рдЧ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИрдВред



рдмреЗрд╢рдХ, рдЬрд┐рддрдиреА рдмреЗрд╣рддрд░ рдЖрдк рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмреАрдЪ рдХреЛрдб рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореВрд▓ рдХреЛрдб рдХреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЬреНрдЮрд╛рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред



2. рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛



рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рдХреЛрдб рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП, рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХреЗ рдПрдХ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЗрд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рддрддреНрдХрд╛рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЫреЛрдЯреЗ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рдмрд╛рдж рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдлрд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ - рдЬрд╛рдБрдЪ рдХреАред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреАрди рдмрдбрд╝реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдореВрд▓ рдХреЛрдб рдореЗрдВ, рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдм рдХреБрдЫ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕рдордХрдХреНрд╖ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдХреНрд╕рд░ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрддрдирд╛ рд╕реБрдВрджрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред
  2. рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреЛрдб рдХреЛ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдпрд╛ рд╕рдВрдХрд▓рдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
  3. рдЯреЗрд╕реНрдЯ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдирдИ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рдХреЛ рдореВрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕рдВрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЗрди рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХреЛрдб рдХреА рдЧрддрд┐ рдФрд░ рд╕реБрдВрджрд░рддрд╛ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рд▓рд╛рдпрдХ рд╣реИред



рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдкрд╣рд▓реА рдЕрд╡рд╕реНрдерд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЖрдкрдХреЛ C / C ++ рдХреЛрдб рдХреЛ "рд╢реБрджреНрдз C ++" рдореЗрдВ рдХреЛрдб рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ C # рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЬрд┐рддрдирд╛ рдХрд░реАрдм рд╣реЛ рд╕рдХреЗред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред



2.1 рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рд╣рдЯрд╛рдПрдВ


рдкрд╣рд▓рд╛ рдХрджрдо рдХреЛрдб рдХреЗ рдЕрдкреНрд░рдпреБрдХреНрдд рднрд╛рдЧреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LibTiff рд╕реЗ, рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрди рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рдереАрдВред рддрдм рдореБрдЭреЗ рд╢реЗрд╖ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдСрдкрд░реЗрдЯрд░ рдорд┐рд▓реЗ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдП рдЧрдП рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдереЗ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рднреА рджрд┐рдпрд╛ред рдРрд╕реЗ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг:



#if defined(__BORLANDC__) || defined(__MINGW32__) <br/>

# define XMD_H 1 <br/>

#endif</code> <br/>

<br/>

< code > #if 0 <br/>

extern const int jpeg_zigzag_order [ ] ; <br/>

#endif





#if defined(__BORLANDC__) || defined(__MINGW32__) <br/>

# define XMD_H 1 <br/>

#endif</code> <br/>

<br/>

< code > #if 0 <br/>

extern const int jpeg_zigzag_order [ ] ; <br/>

#endif







рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдкреНрд░рдпреБрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рднреА рд╢рд╛рд╢реНрд╡рдд рд╡рд┐рд╢реНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



реи.реи рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдФрд░ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди


рдЕрдХреНрд╕рд░ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм #define рдХреА рдорджрдж рд╕реЗ рдПрдХ рдпрд╛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреЛрдб # ifdef / # рдПрдВрдбрд┐рдл рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:



/*jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ <br/>

.....<br/>

#define BMP_SUPPORTED <br/>

#define GIF_SUPPORTED <br/>

.....<br/>

<br/>

/* wrbmp.c */ <br/>

....<br/>

#ifdef BMP_SUPPORTED <br/>

...<br/>

#endif /* BMP_SUPPORTED */





/*jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ <br/>

.....<br/>

#define BMP_SUPPORTED <br/>

#define GIF_SUPPORTED <br/>

.....<br/>

<br/>

/* wrbmp.c */ <br/>

....<br/>

#ifdef BMP_SUPPORTED <br/>

...<br/>

#endif /* BMP_SUPPORTED */









рдореИрдВ рддреБрд░рдВрдд рдЪреБрдирдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ BMP рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреВрд░реЗ рдХреЛрдб рд╕реЗ #ifdef BMP_SUPPORTED рдХрдорд╛рдВрдб рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред



рдпрджрд┐ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкреВрд░реНрдг рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрдорд╛рдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред



рдпрд╣ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЙрди рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред



#define CACHE_STATE(tif, sp) do { \ <br/>

BitAcc = sp -> data ; \<br/>

BitsAvail = sp -> bit ; \<br/>

EOLcnt = sp -> EOLcnt ; \<br/>

cp = ( unsigned char * ) tif -> tif_rawcp ; \<br/>

ep = cp + tif -> tif_rawcc ; \<br/>

} while ( 0 )





#define CACHE_STATE(tif, sp) do { \ <br/>

BitAcc = sp -> data ; \<br/>

BitsAvail = sp -> bit ; \<br/>

EOLcnt = sp -> EOLcnt ; \<br/>

cp = ( unsigned char * ) tif -> tif_rawcp ; \<br/>

ep = cp + tif -> tif_rawcc ; \<br/>

} while ( 0 )









рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рднреА рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪрд░ BitAcc, BitsAvail, EOLcnt, cp, рдФрд░ ep рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╣реИрдВред рдпреЗ рдЪрд░ рдирдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдмрди рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдЯрдХреЙрдЗрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ uint32 рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдХрднреА-рдХрднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:



#define HUFF_DECODE(result,state,htbl,failaction,slowlabel) \ <br/>

{ register int nb, look ; \<br/>

if ( bits_left < HUFF_LOOKAHEAD ) { \<br/>

if ( ! jpeg_fill_bit_buffer ( & state,get_buffer,bits_left, 0 ) ) { failaction ; } \<br/>

get_buffer = state. get_buffer ; bits_left = state. bits_left ; \<br/>

if ( bits_left < HUFF_LOOKAHEAD ) { \<br/>

nb = 1 ; goto slowlabel ; \<br/>

} \<br/>

} \<br/>

look = PEEK_BITS ( HUFF_LOOKAHEAD ) ; \<br/>

if ( ( nb = htbl -> look_nbits [ look ] ) != 0 ) { \<br/>

DROP_BITS ( nb ) ; \<br/>

result = htbl -> look_sym [ look ] ; \<br/>

} else { \<br/>

nb = HUFF_LOOKAHEAD + 1 ; \<br/>

slowlabel : \<br/>

if ( ( result = jpeg_huff_decode ( & state,get_buffer,bits_left,htbl,nb ) ) < 0 ) \<br/>

{ failaction ; } \<br/>

get_buffer = state. get_buffer ; bits_left = state. bits_left ; \<br/>

} \<br/>

}





#define HUFF_DECODE(result,state,htbl,failaction,slowlabel) \ <br/>

{ register int nb, look ; \<br/>

if ( bits_left < HUFF_LOOKAHEAD ) { \<br/>

if ( ! jpeg_fill_bit_buffer ( & state,get_buffer,bits_left, 0 ) ) { failaction ; } \<br/>

get_buffer = state. get_buffer ; bits_left = state. bits_left ; \<br/>

if ( bits_left < HUFF_LOOKAHEAD ) { \<br/>

nb = 1 ; goto slowlabel ; \<br/>

} \<br/>

} \<br/>

look = PEEK_BITS ( HUFF_LOOKAHEAD ) ; \<br/>

if ( ( nb = htbl -> look_nbits [ look ] ) != 0 ) { \<br/>

DROP_BITS ( nb ) ; \<br/>

result = htbl -> look_sym [ look ] ; \<br/>

} else { \<br/>

nb = HUFF_LOOKAHEAD + 1 ; \<br/>

slowlabel : \<br/>

if ( ( result = jpeg_huff_decode ( & state,get_buffer,bits_left,htbl,nb ) ) < 0 ) \<br/>

{ failaction ; } \<br/>

get_buffer = state. get_buffer ; bits_left = state. bits_left ; \<br/>

} \<br/>

}









рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, PEEK_BITS рдФрд░ DROP_BITS рднреА "рдлрд╝рдВрдХреНрд╢рди" рд╣реИрдВ рдЬреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ HUFF_DECITEред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП HUFF_DECODE рдореЗрдВ "рдлрд╝рдВрдХреНрд╢рди" рдХреЛрдб PEEK_BITS рдФрд░ DROP_BITS рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ред



рдХреЗрд╡рд▓ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдкреВрд░реНрд╡рдкреНрд░рдХреНрд░рдордХ рдХрдорд╛рдВрдб рдХреЗ рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдХреЛрдб рд╢реЛрдзрди рдХреЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:



#define DATATYPE_VOID 0







2.3 рд╕реНрд╡рд┐рдЪ рдФрд░ рдЧреЛрдЯреЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ


рдмреВрд▓рд┐рдпрди рдЪрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ / рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░ рдЧреЛрдЯреЛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд▓реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реВрдк рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдмреВрд▓рд┐рдпрди рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ, рдмреНрд░реЗрдХ рдХрд░рдиреЗ рдФрд░ рд▓реВрдк рдХреЗ рдмрд╛рдж рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ, рдореИрдВ рд▓рд╛рдкрддрд╛ рдмреНрд░реЗрдХ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрд╡рд┐рдЪ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВред



switch ( test1 ( buf ) ) <br/>

{ <br/>

case - 1 : <br/>

if ( line != buf + ( bufsize - 1 ) ) <br/>

continue ; <br/>

/* falls through */ <br/>

default : <br/>

fputs ( buf, out ) ; <br/>

break ; <br/>

}





switch ( test1 ( buf ) ) <br/>

{ <br/>

case - 1 : <br/>

if ( line != buf + ( bufsize - 1 ) ) <br/>

continue ; <br/>

/* falls through */ <br/>

default : <br/>

fputs ( buf, out ) ; <br/>

break ; <br/>

}







рдпрд╣ C / C ++ рдореЗрдВ рдЕрдиреБрдордд рд╣реИ, рд▓реЗрдХрд┐рди C # рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдпрд╛ рддреЛ рдХрдИ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдмреНрд▓реЙрдХ, рдпрд╛, рдЕрдЧрд░ рдлрд╛рд▓реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдХреЙрдорди рдХреЛрдб рдХреА рдирдХрд▓ рдХрд░реЗрдВред



реи.рек рд╣рдо рдкрддреНрдерд░ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ


рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдЧреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкрд╣рд▓рд╛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдХрд╛рдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИред рд▓рдХреНрд╖реНрдп рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред



рдпрджрд┐ рдХреЛрдб рдореВрд▓ рд░реВрдк рд╕реЗ C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдзрд┐рдпрд╛рдВ рдирд╣реАрдВ) рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ "рдореБрдХреНрдд" рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕ рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдирдИ рдХрдХреНрд╖рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирдП рдмрдирд╛рдП рдЧрдП рд╡рд░реНрдЧ рдореЗрдВ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдпрджрд┐ рдХреЛрдб рдореВрд▓ рд░реВрдк рд╕реЗ C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддреА рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рдЦрд░реЛрдВрдЪ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЗрдХрд╛рдИ рд╣реИред рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдХреЛрдб рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╣реИред



рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:



struct tiff<br/>

{ <br/>

char * tif_name ; <br/>

int tif_fd ; <br/>

int tif_mode ; <br/>

uint32 tif_flags ; <br/>

......<br/>

} ; <br/>

......<br/>

extern int TIFFDefaultDirectory ( tiff * ) ; <br/>

extern void _TIFFSetDefaultCompressionState ( tiff * ) ; <br/>

extern int TIFFSetCompressionScheme ( tiff * , int ) ; <br/>

......





struct tiff<br/>

{ <br/>

char * tif_name ; <br/>

int tif_fd ; <br/>

int tif_mode ; <br/>

uint32 tif_flags ; <br/>

......<br/>

} ; <br/>

......<br/>

extern int TIFFDefaultDirectory ( tiff * ) ; <br/>

extern void _TIFFSetDefaultCompressionState ( tiff * ) ; <br/>

extern int TIFFSetCompressionScheme ( tiff * , int ) ; <br/>

......







рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЯрд┐рдлрд╝ рд╕рдВрд░рдЪрдирд╛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рднреАрдЦ рдорд╛рдБрдЧрддреА рд╣реИ, рдФрд░ рдиреАрдЪреЗ рдШреЛрд╖рд┐рдд рддреАрди рдХрд╛рд░реНрдп рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕реНрдерд┐рд░ рддрд░реАрдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред



рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдп рдХрдХреНрд╖рд╛ рдХреЗ рддрд░реАрдХреЗ рдмрдирддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╢реЗрд╖ "рдореБрдХреНрдд" рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рд╕рднреА рдХрд╛рд░реНрдп рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ рдирд╣реАрдВ рдмрдиреЗрдВрдЧреЗред рдЖрдорддреМрд░ рдкрд░ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕реЗ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдирд┐рдЬреА рддрд░реАрдХреЗ рдмрди рдЬрд╛рдПрдВрдЧреЗред



рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕реНрдЯреИрдЯрд┐рдХ рдХреНрд▓рд╛рд╕ рдореЗрдердб рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдореЙрд▓реЙрдХ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдмрджрд▓реЗрдВ / рдирдП рдХреЛ рд╣рдЯрд╛рдПрдВ рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░ рд╣рдо рд╕реНрдереИрддрд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдкреВрд░реНрдг-рд╢реНрд░реЗрдгреА рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕реНрдерд┐рд░ рд╣реЛрдВрдЧреА, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрддрд┐рд░реЗрдХрдкреВрд░реНрдг рд╣реИред рдпрд╣ рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ рдЬреЛ рд╡рд░реНрдЧ рдмрди рдЧрдпрд╛ред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрддрд┐рд░реЗрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рднреА рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдЬреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕рджрд╕реНрдп рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред



2.5 рдлрд┐рд░ рд╕реЗ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдорд▓реНрдЯреАрдкрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕


рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ (рдЖрдкрдХреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП):



#define STRIP_SIZE_DEFAULT 8192







рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЙрдирдХрд╛ рдорд╛рд▓рд┐рдХ рдмрди рдЬрд╛рдПрдЧрд╛ред рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде, рдирд╡ рдирд┐рд░реНрдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рд░рд╛рдВрдХ)ред рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣, рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдпрд╛ рдирд┐рдЬреА рдмрди рд╕рдХрддреЗ рд╣реИрдВред



рдпрджрд┐ рдореВрд▓ рдХреЛрдб C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдХрдИ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ C # рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рддрд░реАрдХрд╛: рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдмрджрд▓рдирд╛ рддрд╛рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПред рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рднреА рд╡рд░реНрдЧ рдЬреЛ рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЪрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:



class A<br/>

{ <br/>

public : <br/>

virtual bool DoSomething ( ) = 0 ; <br/>

} ; <br/>

class B<br/>

{ <br/>

public : <br/>

virtual bool DoAnother ( ) = 0 ; <br/>

} ; <br/>

class C : public A, B<br/>

{ ...... } ;





class A<br/>

{ <br/>

public : <br/>

virtual bool DoSomething ( ) = 0 ; <br/>

} ; <br/>

class B<br/>

{ <br/>

public : <br/>

virtual bool DoAnother ( ) = 0 ; <br/>

} ; <br/>

class C : public A, B<br/>

{ ...... } ;









рдРрд╕реЗ рдП рдФрд░ рдмреА рдХреЛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдРрд╕реЗ рдХрдИ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдЖрд╕рд╛рдиреА рд╕реЗ C # рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред



2.6 рдЯрдВрдХрдг рдХрдерди


рдкреЙрдЗрдВрдЯрд░ рдЕрдВрдХрдЧрдгрд┐рдд рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд╛рд░реНрдп рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рд╕рдорд╛рдирд╛рд░реНрдереА (рдЯрд╛рдЗрдкрдбреЗрдлрд╝ рдСрдкрд░реЗрдЯрд░) рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрднреА-рдХрднреА рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



typedef vector<Command*> Commands;







рдореИрдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рдд, рдХрдорд╛рдВрдб рдХреЛрдб рдХреЛ рд╡реЗрдХреНрдЯрд░ <рдХрдорд╛рдВрдб *> рдореЗрдВ рдмрджрд▓ рджреЗрдВ, рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВред



рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ:



typedef signed char int8 ; <br/>

typedef unsigned char uint8 ; <br/>

typedef short int16 ; <br/>

typedef unsigned short uint16 ; <br/>

typedef int int32 ; <br/>

typedef unsigned int uint32 ;





typedef signed char int8 ; <br/>

typedef unsigned char uint8 ; <br/>

typedef short int16 ; <br/>

typedef unsigned short uint16 ; <br/>

typedef int int32 ; <br/>

typedef unsigned int uint32 ;









рдпрд╣рд╛рдВ рдпрд╣ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдореЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, typedef рдХрдо int16 рд╣реИ; рдФрд░ typedef int int32; рдмрд▓реНрдХрд┐ рдПрдХ рдмрд╛рдзрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ int16 рдХреЛ рдХреЛрдб рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореЗрдВ рдмрджрд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ int32 рдХреЛ int рдореЗрдВред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдЯрд╛рдЗрдкрдлрд╛рдЗрдл рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╕реА # рдореЗрдВ рдЯрд╛рдЗрдк рдирд╛рдореЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдВред рдпрд╣реА рд╣реИ, рдпрд╣ рдХрд░реЗрдВ:



typedef signed char sbyte ; <br/>

typedef unsigned char byte ; <br/>

typedef unsigned short ushort <br/>

typedef unsigned int uint ;





typedef signed char sbyte ; <br/>

typedef unsigned char byte ; <br/>

typedef unsigned short ushort <br/>

typedef unsigned int uint ;









рдРрд╕реЗ рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:



typedef unsigned char JBLOCK[64]; /* one block of coefficients */







рдпрд╣ рдирд┐рд░реНрдорд╛рдг 64 рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд╛рд░ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП JBLOCK рдирд╛рдо рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИред рдореИрдВ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЕрд░реНрдерд╛рддреН, JBLOCK рдХреЛ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдордЭ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдмреАрдПрд▓рдИрд╕реА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 2-рдЖрдпрд╛рдореА рдФрд░ 3-рдЖрдпрд╛рдореА), рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди рдХреИрд╕реЗ рдмрджрд▓рддреЗ рд╣реИрдВред



2.7 рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рдд


рдПрдХ рдФрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХрд╛рд░реНрдп рд╕реВрдЪрдХ рдЕрдВрдХрдЧрдгрд┐рдд (рдкреЙрдЗрдВрдЯрд░-рдЕрдВрдХрдЧрдгрд┐рдд) рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдХрдИ C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рднрд╛рд╖рд╛ рдХреА рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



void horAcc32 ( int stride, uint * wp, int wc ) <br/>

{ <br/>

if ( wc > stride ) { <br/>

wc -= stride ; <br/>

do { <br/>

wp [ stride ] += wp [ 0 ] ; <br/>

wp ++; <br/>

wc -= stride ; <br/>

} while ( ( int ) wc > 0 ) ; <br/>

} <br/>

}





void horAcc32 ( int stride, uint * wp, int wc ) <br/>

{ <br/>

if ( wc > stride ) { <br/>

wc -= stride ; <br/>

do { <br/>

wp [ stride ] += wp [ 0 ] ; <br/>

wp ++; <br/>

wc -= stride ; <br/>

} while ( ( int ) wc > 0 ) ; <br/>

} <br/>

}









рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ C # рдкреЙрдЗрдВрдЯрд░ рдЕрдВрдХрдЧрдгрд┐рдд рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ "рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдВрдХрдЧрдгрд┐рдд" рдХреЛ рд╢реБрд░реВ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣реА рд╣реИ, рдореИрдВ рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрджрд▓рддрд╛ рд╣реВрдВ:



void horAcc32 ( int stride, uint * wp, int wc ) <br/>

{ <br/>

int wpPos = 0 ; <br/>

if ( wc > stride ) { <br/>

wc -= stride ; <br/>

do { <br/>

wp [ wpPos + stride ] += wp [ wpPos ] ; <br/>

wpPos ++; <br/>

wc -= stride ; <br/>

} while ( ( int ) wc > 0 ) ; <br/>

} <br/>

}





void horAcc32 ( int stride, uint * wp, int wc ) <br/>

{ <br/>

int wpPos = 0 ; <br/>

if ( wc > stride ) { <br/>

wc -= stride ; <br/>

do { <br/>

wp [ wpPos + stride ] += wp [ wpPos ] ; <br/>

wpPos ++; <br/>

wc -= stride ; <br/>

} while ( ( int ) wc > 0 ) ; <br/>

} <br/>

}









рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЪрдХ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ C # рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕рдВрд╢реЛрдзрд┐рдд рдХреЛрдб рдореВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред



рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд╛рд░рд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдореВрд▓ рдХрд╛рд░реНрдп рдХреЗ рднрд┐рдиреНрди:



void horAcc32(int stride, uint* & wp, int wc)







рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм wAcc32 рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ wp рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реВрдЪрдХ рднреА рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ horAcc32 рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред



void horAcc32(int stride, uint* wp, int& wpPos, int wc)







рдЕрдХреНрд╕рд░ рдЗрдВрдЯ wpPos рдХреЛ рдПрдХ рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдб (рд╕рджрд╕реНрдп рдЪрд░) рдмрдирд╛рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред



2.8 рд╕рдорд╛рд░реЛрд╣ рд╕рдВрдХреЗрдд


рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ (рдпрджрд┐ рд╡реЗ рдХреЛрдб рдореЗрдВ рд╣реИрдВ)ред рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдк-рдкреНрд░рдЬрд╛рддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдПрдХ рд╣реА рд╡рд░реНрдЧ / рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░ рдмрдирд╛рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
  2. рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
  3. рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рд╕реНрдерд┐рд░ рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ)


рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг:



typedef int ( * func ) ( int x, int y ) ; <br/>

<br/>

class Calculator<br/>

{ <br/>

Calculator ( ) ; <br/>

int ( * func ) ( int x, int y ) ; <br/>

<br/>

static int sum ( int x, int y ) { return x + y ; } <br/>

static int mul ( int x, int y ) { return x * y ; } <br/>

public : <br/>

static Calculator * CreateSummator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> func = sum ; <br/>

return c ; <br/>

} <br/>

static Calculator * CreateMultiplicator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> func = mul ; <br/>

return c ; <br/>

} <br/>

int Calc ( int x, int y ) { return ( * func ) ( x,y ) ; } <br/>

} ;





typedef int ( * func ) ( int x, int y ) ; <br/>

<br/>

class Calculator<br/>

{ <br/>

Calculator ( ) ; <br/>

int ( * func ) ( int x, int y ) ; <br/>

<br/>

static int sum ( int x, int y ) { return x + y ; } <br/>

static int mul ( int x, int y ) { return x * y ; } <br/>

public : <br/>

static Calculator * CreateSummator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> func = sum ; <br/>

return c ; <br/>

} <br/>

static Calculator * CreateMultiplicator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> func = mul ; <br/>

return c ; <br/>

} <br/>

int Calc ( int x, int y ) { return ( * func ) ( x,y ) ; } <br/>

} ;









рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдЧ рдореЗрдВ Calc рдкрджреНрдзрддрд┐ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ CreateSummator рдпрд╛ CreateMultiplicator рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдореИрдВ рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдПрдирдо рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдлрдВрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рдЬреЛ рдПрдирдо рд╕реЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рдпрд╛ рдХрдИ рдЗрдлрд╝реНрд╕) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддреА рд╣реИред рд╕рдВрд╢реЛрдзрд┐рдд рд╡рд┐рдХрд▓реНрдк:



class Calculator<br/>

{ <br/>

enum FuncType<br/>

{ ftSum, ftMul } ; <br/>

FuncType type ; <br/>

<br/>

Calculator ( ) ; <br/>

<br/>

int func ( int x, int y ) <br/>

{ <br/>

if ( type == ftSum ) <br/>

return sum ( x,y ) ; <br/>

return mul ( x,y ) ; <br/>

} <br/>

<br/>

static int sum ( int x, int y ) { return x + y ; } <br/>

static int mul ( int x, int y ) { return x * y ; } <br/>

public : <br/>

static Calculator * createSummator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> type = ftSum ; <br/>

return c ; <br/>

} <br/>

static Calculator * createMultiplicator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> type = ftMul ; <br/>

return c ; <br/>

} <br/>

int Calc ( int x, int y ) { return func ( x,y ) ; } <br/>

} ;





class Calculator<br/>

{ <br/>

enum FuncType<br/>

{ ftSum, ftMul } ; <br/>

FuncType type ; <br/>

<br/>

Calculator ( ) ; <br/>

<br/>

int func ( int x, int y ) <br/>

{ <br/>

if ( type == ftSum ) <br/>

return sum ( x,y ) ; <br/>

return mul ( x,y ) ; <br/>

} <br/>

<br/>

static int sum ( int x, int y ) { return x + y ; } <br/>

static int mul ( int x, int y ) { return x * y ; } <br/>

public : <br/>

static Calculator * createSummator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> type = ftSum ; <br/>

return c ; <br/>

} <br/>

static Calculator * createMultiplicator ( ) <br/>

{ <br/>

Calculator * c = new Calculator ( ) ; <br/>

c -> type = ftMul ; <br/>

return c ; <br/>

} <br/>

int Calc ( int x, int y ) { return func ( x,y ) ; } <br/>

} ;









рдЖрдк рдЕрдиреНрдпрдерд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрднреА рддрдХ рдХреБрдЫ рднреА рди рдмрджрд▓реЗрдВ, рд▓реЗрдХрд┐рди рд╕реА # рдХреЗ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рдордп рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ):



typedef int ( * TIFFVSetMethod ) ( TIFF * , ttag_t, va_list ) ; <br/>

typedef int ( * TIFFVGetMethod ) ( TIFF * , ttag_t, va_list ) ; <br/>

typedef void ( * TIFFPrintMethod ) ( TIFF * , FILE * , long ) ; <br/>

<br/>

class TIFFTagMethods<br/>

{ <br/>

public : <br/>

TIFFVSetMethod vsetfield ; <br/>

TIFFVGetMethod vgetfield ; <br/>

TIFFPrintMethod printdir ; <br/>

} ;





typedef int ( * TIFFVSetMethod ) ( TIFF * , ttag_t, va_list ) ; <br/>

typedef int ( * TIFFVGetMethod ) ( TIFF * , ttag_t, va_list ) ; <br/>

typedef void ( * TIFFPrintMethod ) ( TIFF * , FILE * , long ) ; <br/>

<br/>

class TIFFTagMethods<br/>

{ <br/>

public : <br/>

TIFFVSetMethod vsetfield ; <br/>

TIFFVGetMethod vgetfield ; <br/>

TIFFPrintMethod printdir ; <br/>

} ;









рдореИрдВ vsetfield / vgetfield / printdir рдХреЛ рдЖрднрд╛рд╕реА рддрд░реАрдХреЛрдВ рдореЗрдВ рдмрджрд▓рдХрд░ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред Vsetfield / vgetfield / printdir рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб TIFFTagMethods рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╡рдВрд╢рдЬ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдЧрд╛ред



рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ):



typedef int (*PROC)(int, int);

int DoUsingMyProc (int, int, PROC lpMyProc, тАж);








рдпрд╣рд╛рдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЬрдмрдХрд┐ рдореВрд▓ рдХреЛрдб рдЕрднреА рднреА рдкреЙрд▓рд┐рд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрдм рд╕реА # рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ PROC рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ DoUsingMyProc рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред



2.9 "рд╕рдорд╕реНрдпрд╛" рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛


рдореВрд▓ рдХреЛрдб рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрди рд╕рдм рдХреБрдЫ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рдХ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдЬреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдорд╛рдирдХ C / C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (fprintf, get, atof, рдЖрджрд┐ рдЬреИрд╕реЗ рдХрд╛рд░реНрдп) рдпрд╛ WinAPIред C # рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкреА / рдЗрдирд╡реЛрдХред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ http://www.pinvoke.net рдкрд░ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред



"рд╕рдорд╕реНрдпрд╛ рдХреЛрдб" рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдорд╛рдирдХ C / C ++ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ WinAPI рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдЖрд╡рд░рдг рд╣реЛрдЧрд╛ред рдлрд┐рд░, рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди, рдХреЗрд╡рд▓ рдЗрд╕ рдЖрд╡рд░рдг рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред



2.10 рд╕рдВрдХрд▓рдХ рдХреЛ рдмрджрд▓рдирд╛


"рд╕рддреНрдп рдХрд╛ рдХреНрд╖рдг" рдЖ рдЧрдпрд╛ рд╣реИ - рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреЛрдб рдХреЛ C # рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдпрджреНрдпрдкрд┐ рд╢реНрд░рдорд╕рд╛рдзреНрдпред рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдлрд┐рд░ рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ, рд╕рдорд╛рди рдореВрд▓ рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдХреЛрдб рдХреЛ рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВред



рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ (рд╡рд┐рднрд┐рдиреНрди #include, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред "рдорд╛рдирдХ" рдкрд░рд┐рд╡рд░реНрддрди:





рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рд╣реЛрдЧреАред рдореВрд▓ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреА рд╣реЛрдЧреА, рдЬрд┐рд╕ рдкрд░ рдЦрдВрдб 2.9 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп C # рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдХрд╛ рдЕрдкрдирд╛ рд╕рдордп рд╣реИред



2.11 рдлрд╝рд╛рдЗрд▓


рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореВрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рджреВрд╕рд░рд╛ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдкреВрд░реНрд╡ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдФрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЪрд░рдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред



рдмрд╛рдЗрдЯ рд╕рд░рдгреА (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдкрдХреЛ Encoding.ASCII рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 7-рдмрд┐рдЯ рд╣реИ рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП 127 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ? '' рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдпред рд╡рд░реНрддрдорд╛рди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдбреАрдлреЙрд▓реНрдЯ рдпрд╛ рдПрдирдХреЛрдбрд┐рдВрдЧред рдЧреЗрдЯрдПрдиреНрдХреЛрдбрд┐рдВрдЧ ("рд▓реИрдЯрд┐рди 1")ред рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╛рда рдпрд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдкрд╛рда рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ.рдлреЙрд▓реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдпрджрд┐ рдмрд╛рдЗрдЯ рдХреЛ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рда рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред GetEncoding ("Latin1)"ред



рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (C / C ++ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдкрд░рд┐рд╡рд╛рд░) рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЧрдарди рдХрд░ рд╕рдХрддреА рд╣реИрдВред .NET рдореЗрдВ String.Format рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реИ (рдпрд╣ рдЦрд░рд╛рдм рд╣реИ) рдФрд░ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ "рд╕реА # рдореЗрдВ рдПрдХ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди" рдХреЗ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред



рдореИрдВ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ "c # рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ" (рдмрд┐рдирд╛ рдЙрджреНрдзрд░рдг рдХреЗ) рдФрд░ "рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ C # рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ " рдкрд░ Google рдорджрдж рдХрд░реЗрдЧрд╛ред



рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд╣рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдХрд┐ рдкреЛрд░реНрдЯ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдм рд╣рдо рдпрд╣ рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдЕрднреА рддрдХ "C # рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ" рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреБрдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп get- / set- рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЛрдб рдХрд╛ рдкреБрдирдГрд╕рдВрдХреНрд░рдордг рдХрд░реЗрдВред рдЖрдк рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред



рдЖрдкрдХреЗ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!



PS рдпрд╣ рд▓реЗрдЦ рдореЗрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╕рд░реНрдЬрд┐рдпрд╕ рдмреЛрдмреНрд░реЛрд╡рд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рд╣реИрдмрд░ рдХреЗ рд▓рд┐рдП рдирд┐рдордВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдореБрдлреНрдд рд╣реИ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЗрдВ рд▓рд┐рдЦреЗрдВред



All Articles