mohdumar
محفلین
ہم آپ کے کوڈ کا سرسری جائزہ لے رہے تھے تو محسوس کیا کہ اس میں آپٹیمائزیشن کی کافی گنجائش موجود ہے۔ چونکہ ہم ڈاٹ نیٹ فیملی کی پروگرامنگ زبانوں میں کوئی تجربہ نہیں رکھتے اس لیے براہ راست کوڈ میں تبدیلی نہیں کر رہے، البتہ جہاں تک ہم کوڈ کو سمجھ سکے ہیں اس کی بنیاد پر کچھ تجاویز دیتے ہیں۔
ہم مثال کے طور پر آپ کے درج ذیل فنکشن کا جائزہ لیتے ہیں:
PHP:Private Function MaxLeftAtY(ByRef jc As Color(,), ByVal y As Integer, ByRef objBitmap As Bitmap) As Integer Dim x As Integer = 0 Dim maxx As Integer = 0 Dim notext As Boolean = 1 Dim retval As Integer = -1 For x = 0 To objBitmap.Width - 1 Step 1 If jc(x, y).A = 255 And jc(x, y).G >= 0 Then notext = False If x > maxx Then maxx = x End If Else End If Next If notext = True Then Else retval = maxx End If Return retval End Function
ہمارا خیال ہے کہ آپ اس فنکشن میں کسی مخصوص اونچائی y پر موجود تمام پکسلز کی قطار میں سے سب سے بائیں جانب موجود سیاہ پکسل کو اخذ کرنا چاہتے ہیں۔ اور یہ فنکش غالباً دائیں جانب موجود ترسیمے کے لیے ہر ممکنہ y اونچائی کے لیے علیحدہ علیحدہ کال کیا جاتا ہوگا۔ اور اگر ہم درست سمجھے ہیں تو آپ اس مخصوص اونچائی y پر موجود تمام پکسلز کا یکے بعد دیگرے جائزہ لیتے ہیں۔ اگر ایسا ہے تو اس میں بہتری کی گنجائش موجود ہے، مثلاً کسی افقی قطار کو بائیں سے دائیں جانب اسکین کیا جائے تو جو پہلا سیاہ پکسل انکاؤنٹر ہو وہیں لوپ بریک کر کے اس قدر کو لوٹایا جا سکتا ہے، کیونکہ اس پکسل کے دائیں طرف جانے پر کوئی بہتر قدر سامنے نہیں آئے گی خواہ ماندہ پکسلز سیاہ ہوں خواہ سفید۔ بعینہ MinRightAtY کے لیے ہر افقی قطار کو دائیں سے بائیں جانب اسکین کیا جانا چاہیے تاکہ اولین سیاہ پکسل پر لوپ کو بریک کیا جا سکے۔
ویسے x اور maxx کے موازنے کو دیکھ کر ہم نے محسوس کیا ہے کہ آپ کوڈ میں x کی قدر بڑھاتے ہوئے غالباً دائیں سے بائیں رخ پر جا رہے ہوتے ہیں، جبکہ عام مشاہدہ یہ ہے کہ کمپیوٹر گرافکس میں x کوآرڈینیٹ بائیں سے دائیں اور y کوآرڈینیٹ اوپر سے نیچے بڑھتے ہیں۔ کیا ایسی تبدیلی آپ نے کی ہے، یا پھر وی بی کی بٹ میپ لائبریری کا ایسا طریقہ کار ہے، یا پھر آر ٹی ایل موڈ سیٹ کرنے کا کوئی طریقہ کار موجود ہے، یا پھر ہم سے سمجھنے میں ہی کوئی نقص سرزد ہوا ہے؟
سب سے پہلی بات یہ کہ ہم نے فنکشن کے نام نادستگی میں الٹ ہی رکھ ڈالے۔ مطلب maxleftatY کا جو فنکشن ہے وہ دراصل گرافکل طور پر left word یعنی اردو کے حساب سے بعد میں آنے لفظ، اس کا سب سے دائیں 'سبز' پکسل نکالتا ہے۔
ہم نے کوڈ لکھنے کے پہلے دن ہی اتنے الٹے نام رکھ دیے تھے، بعد میں تبدیل کرنا گوارا نہ کیا کیونکہ اس سے ہمارے ذہن میں بنا فنکشنز کا نقش تبدیل کرنا پڑتا۔
تاہم اپلوڈ کرتے ہوئے کوڈ میں کچھ نہ کچھ کمنٹ کرنا چاہئے تھا۔ بلاضرورت کنفیوژن کے لئے معذرت
دوسرا جو آپ نے لوپ بریک کرنے کی تجویز کی ہے، گمان ہوتا ہے کہ کافی دن قبل ایسی کچھ تبدیلی کی گئی تھی لیکن یاد نہیں کس وجہ سے تبدیلی کو واپس کر دیا تھا۔ ابھی پھر کر کے دیکھتا ہوں۔